使用Python更换外网IP的方法


Posted in Python onJuly 09, 2018

在进行数据抓取时,经常会遇到IP被限制的情况,常见的解决方案是搭建代理IP池,或购买IP代理的服务。除此之外,还有一个另外的方法就是使用家里的宽带网络进行抓取。由于家里的宽带每次断开重新连接时都会分配一个新的IP,所以在我们抓取数据的时候,判断当IP被禁掉时,立即在路由器中进行断开重新连接操作。考虑到人工操作比较繁琐,另外也不可能一直盯着执行的程序,就考虑使用Python自动多路由器进行设置。

以下代码为针对家里的TP-Link进行的设置,其他路由器的设置原理也应该一样。

import base64, requests, time, re
 
base_url = 'http://192.168.1.1'
user = 'admin'
pwd = 'password'
 
headers = {
  'Accept': '*/*',
  'User-Agent': 'Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; WOW64; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; .NET4.0C; .NET4.0E)',
  'Referer': base_url + '/userRpm/StatusRpm.htm',
  'Cookie': 'Authorization=Basic ' + base64.b64encode((user + ':' + pwd).encode(encoding='utf-8')).decode(
    encoding='utf-8')
}
 
 
def get_ip():
  url = "http://2018.ip138.com/ic.asp"
  r = requests.get(url)
  txt = r.text
  ip = txt[txt.find("[") + 1: txt.find("]")]
  return ip
 
 
def get_ip_status():
  url = base_url + "/userRpm/StatusRpm.htm"
  r = requests.get(url=url, headers=headers)
  pattern = re.compile('(\d+\.\d+\.\d+\.\d+)')
  ip = re.findall(pattern,r.text)
  return ip[3]
 
 
def change_ip():
  url = base_url + '/userRpm/StatusRpm.htm?Disconnect=%B6%CF%20%CF%DF&wan=1'
  requests.get(url=url, headers=headers)
  while True:
    time.sleep(5)
    new_ip = get_ip_status()
    if new_ip != '0.0.0.0':
      break
 
if __name__ == "__main__":
  change_ip()

以上代码已经经过测试,能够正常使用。希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python装饰器使用示例及实际应用例子
Mar 06 Python
Python去除字符串两端空格的方法
May 21 Python
python实现将html表格转换成CSV文件的方法
Jun 28 Python
用python3教你任意Html主内容提取功能
Nov 05 Python
OpenCV图像颜色反转算法详解
May 13 Python
使用python分析统计自己微信朋友的信息
Jul 19 Python
基于python全局设置id 自动化测试元素定位过程解析
Sep 04 Python
django rest framework使用django-filter用法
Jul 15 Python
Python如何获取文件路径/目录
Sep 22 Python
Python使用struct处理二进制(pack和unpack用法)
Nov 12 Python
python中requests库+xpath+lxml简单使用
Apr 29 Python
MATLAB 全景图切割及盒图显示的实现步骤
May 14 Python
使用Python AIML搭建聊天机器人的方法示例
Jul 09 #Python
Python迭代器与生成器用法实例分析
Jul 09 #Python
numpy的文件存储.npy .npz 文件详解
Jul 09 #Python
Python实现聊天机器人的示例代码
Jul 09 #Python
Atom的python插件和常用插件说明
Jul 08 #Python
Python中pip更新和三方插件安装说明
Jul 08 #Python
python中sys.argv函数精简概括
Jul 08 #Python
You might like
php+html5使用FormData对象提交表单及上传图片的方法
2015/02/11 PHP
PHP数据库操作Helper类完整实例
2016/05/11 PHP
php微信公众号开发之音乐信息
2018/10/20 PHP
PHP将英文数字转换为阿拉伯数字实例讲解
2019/01/28 PHP
PHP基于ip2long实现IP转换整形
2020/12/11 PHP
showModalDialog 和 showModelessDialog
2007/01/22 Javascript
动态为事件添加js代码示例
2009/02/15 Javascript
jQuery学习笔记之总体架构
2014/06/03 Javascript
javascript实现图片跟随鼠标移动效果的方法
2015/05/13 Javascript
javascript判断并获取注册表中可信任站点的方法
2015/06/01 Javascript
简单讲解AngularJS的Routing路由的定义与使用
2016/03/05 Javascript
JS验证逗号隔开可以是中文字母数字
2016/04/22 Javascript
基于jQuery实现动态搜索显示功能
2016/05/05 Javascript
JavaScript数组方法大全(推荐)
2016/07/05 Javascript
request请求获取参数的实现方法(post和get两种方式)
2016/09/27 Javascript
微信小程序page的生命周期和音频播放及监听实例详解
2017/04/07 Javascript
vue实现商城购物车功能
2017/11/27 Javascript
mpvue构建小程序的方法(步骤+地址)
2018/05/22 Javascript
AngularJS实现与后台服务器进行交互的示例讲解
2018/08/13 Javascript
微信小程序点餐系统开发常见问题汇总
2019/08/06 Javascript
Python编码爬坑指南(必看)
2016/06/10 Python
python中的逆序遍历实例
2019/12/25 Python
Python的对象传递与Copy函数使用详解
2019/12/26 Python
Keras模型转成tensorflow的.pb操作
2020/07/06 Python
Python 打印自己设计的字体的实例讲解
2021/01/04 Python
Manuka Doctor美国官网:麦卢卡蜂蜜和蜂毒护肤
2016/12/25 全球购物
个人职业生涯规划书1500字
2013/12/31 职场文书
公司成立感言
2014/01/11 职场文书
英语感恩演讲稿
2014/01/14 职场文书
2014年小学元旦活动方案
2014/02/12 职场文书
善意的谎言事例
2014/02/15 职场文书
旅行社各个岗位职责
2014/03/15 职场文书
员工安全责任书范本
2014/07/24 职场文书
颐和园导游词
2015/01/30 职场文书
2015年民主评议党员工作总结
2015/05/19 职场文书
nginx配置之并发频次限制
2022/04/18 Servers