最近国家出了一个互联网规定, 为了规范互联网用户文明上网, 现在的各大互联网产品(微博、抖音、小红等等…)都会显示用户的IP归属地, 这无疑给很多靠信息差用户牟利的用户带来了巨大的打击, 最明显的就是抖音一众“身在海外”的“大V”、网红纷纷现出原形,暴露了自己的国内IP属地。
一时间网络上众多人都在群嘲网红翻车现场,也有人在担心自己的隐私是否因此泄露,也有一些人,在悄悄地修改自己的IP属地。比如下面这里抖音博主;

IP是如何修改的?
注意:
- 第一种方式仅限于自己骗自己的方式, 真正修改IP还得通过购买VPS服务的方式去修改IP, 且IP是你自己一个人专用的没有任何风险;


目前在众多社交平台上,有不少网友询问如何修改自己的IP地址。而在一些电商平台上,IP代理修改服务已悄然上线。下面就主要为用户介绍下如何修改自己的IP, 让IP归属地显示自己想显示的区域;
Windows系统 IP修改方方法
1. 在你的电脑做左下角“开始”菜单中单击“控制面板” , 打开控制面板;

2. 在再控制面板中双击”网络连接”;

3. 击本地连接,打开的菜单选择“属性”命令。

4. 打开“本地连接属性”对话框,在“常规”选项卡的此连接使用下列项目列表框中双击“Internet 协议(TCP/IP)”项目。

5. 打开“Internet 协议(TCP/IP)属性”对话框,在这里就可以设置、修改IP地址和DNS服务器。

注意:
- 这种方式只能修改你的局域网IP并不能真正修改你的对外显示IP, 所以下面我会推荐你使用VPS动态代理IP的方式, 一旦购买VPS成功后, 你的IP就属于你自己独享, 不会存在三方IP修改服务商的IP大量使用等风险, 对于抖音等一些用户这个是最为保险的方式;
通过VPS动态 IP修改教程
前提工具准备
动态VPS: 我用的是Hostwinds的动态VPS,1G内存,30G硬盘SSD,不限流量,$4.99/月, 支付支付宝支付,动态VPS主要是运行代理服务,比较耗宽带,通过拨号来更换IP,实现动态代理的效果, 从而修改应用中你的IP归属地;
XShell, redis-Linux
推荐云服务厂商:
注意: 购买服务器时, 选择你要显示IP地区对应的服务器或者VPS即可, 记得选装的系统必须是Liunx才行;
阿里云: https://www.aliyun.com/
华为云: https://activity.huaweicloud.com/
Hostwinds: https://www.hostwinds.com/
首先第一步: TinyProxy代理搭建
##在Linux中运行以下命令会自动安装TinyProxy程序
yum install -y epel-release
yum update -y ##升级yum,可能会等很长一段时间
yum install -y tinyproxy
#安装好TinyProxy程序后需要运行以下命令进行配置
vi /etc/tinyproxy/tinyproxy.conf ##修改两处配置:端口号和允许连接该代理的IP白名单

注意: 我们这里默认使用的事8888端口, 当然你也可以选择你喜欢的端口, 切记对应的防火墙, 服务器安全规则记得打开否则可能访问不通;

注意: 服务会默认为只有本机可以使用该代理,把这行注释掉可以使所有IP都可以使用该代理;
#配置完后,重启TinyProxy
systemctl enable tinyproxy.service
systemctl restart tinyproxy.service
#防火墙开放你的配置的代理端口:
iptables -I INPUT -p tcp --dport 8888 -j ACCEPT
#验证TinyProxy
在另一台主机上(可以是你自己的电脑)运行以下命令检查是否用了代理:
curl -x 代理服务器IP地址:代理端口

我们可以看到访问成功! 上图中访问httpbin.org/get得到本地IP为119.23.xx.x,通过代理端口访问该地址,得到的IP地址为114.104.xx.x,这说明我们代理搭建成功了。
然后第二步: 安装python及编写脚本
#安装python, 下面是我的安装脚本,我每次都是直接用这个脚本来自动安装。
#!/usr/bin/env bash
yum -y install wget zlib zlib-devel openssl-devel gcc make
wget -P /usr/local/src/ https://www.python.org/ftp/python/3.6.5/Python-3.6.5.tgz
tar -xzvf /usr/local/src/Python-3.6.5.tgz
cd Python-3.6.5
./configure --prefix=/usr/local --with-ssl
make
make altinstall
make clean
cd ../
rm -rf Python-3.6.5*
ln -s /usr/local/bin/python3.6 /usr/bin/python3
ln -s /usr/local/bin/pip3.6 /usr/bin/pip3
pip3 install --upgrade pip
python3 -V && pip3 -V
#先编写更新代理的脚本
#由于ADSL拨号服务器拨号后,IP已经变化为新的IP,这时候要通知其他使用IP者新的IP地址是什么,这就需要有一个接口或者缓存供其调用、存储变化后的IP。我这里采用redis来缓存。
import re, time, requests
from requests.exceptions import ConnectionError, ReadTimeout
# coding=utf-8
# 拨号间隔
ADSL_CYCLE = 60*60*2
# 拨号出错重试间隔
ADSL_ERROR_CYCLE = 5
# ADSL命令
ADSL_BASH = '/sbin/ifdown ppp0;/sbin/ifup ppp0'
# 代理运行端口
PROXY_PORT = 8888
# 拨号网卡
ADSL_IFNAME = 'ppp0'
# 代理池键名
PROXY_KEY = 'adsl'
# 测试URL
TEST_URL = 'http://www.baidu.com'
# 测试超时时间
TEST_TIMEOUT = 20
# API端口
API_PORT = 8000
# coding=utf-8
import re
import time
import requests
from requests.exceptions import ConnectionError, ReadTimeout
from redis import StrictRedis
import platform
if platform.python_version().startswith('2.'):
import commands as subprocess
elif platform.python_version().startswith('3.'):
import subprocess
else:
raise ValueError('python version must be 2 or 3')
class Sender():
def get_ip(self, ifname=ADSL_IFNAME):
"""
#获取本机IP
:param ifname: #网卡名称
:return:
"""
(status, output) = subprocess.getstatusoutput('ifconfig')
if status == 0:
pattern = re.compile(ifname + '.*?inet.*?(\d+\.\d+\.\d+\.\d+).*?netmask', re.S)
result = re.search(pattern, output)
if result:
ip = result.group(1)
return ip
def test_proxy(self, proxy):
"""
#测试代理
:param proxy: 代理
:return: 测试结果
"""
try:
response = requests.get(TEST_URL, proxies={
'http': 'http://' + proxy,
'https': 'https://' + proxy
}, timeout=TEST_TIMEOUT)
if response.status_code == 200:
return True
except (ConnectionError, ReadTimeout):
return False
def remove_proxy(self):
"""
#移除代理
:return: None
"""
redis = StrictRedis(host='xxx.xx.xx.x', port=26379, password='xxxxxx', db=0)
redis.hdel('proxy', PROXY_KEY)
print('Successfully Removed Proxy')
def set_proxy(self, proxy):
"""
#设置代理
:param proxy: #代理
:return: None
"""
rediscli = StrictRedis(host='xxx.xx.xx.x', port=26379, password='xxxxxx', db=0)
if rediscli.hset('proxy', PROXY_KEY, proxy):
print('Successfully Set Proxy', proxy)
def adsl(self):
"""
#拨号主进程
:return: None
"""
while True:
print('ADSL Start, Remove Proxy, Please wait')
try:
self.remove_proxy()
except:
pass
(status, output) = subprocess.getstatusoutput(ADSL_BASH)
if status == 0:
print('ADSL Successfully')
ip = self.get_ip()
if ip:
print('Now IP', ip)
print('Testing Proxy, Please Wait')
proxy = '{ip}:{port}'.format(ip=ip, port=PROXY_PORT)
if self.test_proxy(proxy):
print('Valid Proxy')
self.set_proxy(proxy)
print('Sleeping')
time.sleep(ADSL_CYCLE)
else:
print('Invalid Proxy')
else:
print('Get IP Failed, Re Dialing')
time.sleep(ADSL_ERROR_CYCLE)
else:
print('ADSL Failed, Please Check')
time.sleep(ADSL_ERROR_CYCLE)
if __name__ == '__main__':
sender = Sender()
sender.adsl()
最后: 代理池中的代理检查

打开redis连接工具, 我们就可以看到对应的db中已经有相应的代理到这里我们就操作成功了;