使用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使用random和tertools模块解一些经典概率问题
Jan 28 Python
git使用.gitignore设置不生效或不起作用问题的解决方法
Jun 01 Python
Python爬虫动态ip代理防止被封的方法
Jul 07 Python
Django框架HttpResponse对象用法实例分析
Nov 01 Python
python matplotlib如何给图中的点加标签
Nov 14 Python
Django 自定义分页器的实现代码
Nov 24 Python
django框架中ajax的使用及避开CSRF 验证的方式详解
Dec 11 Python
python Tensor和Array对比分析
Jan 08 Python
python matplotlib画盒图、子图解决坐标轴标签重叠的问题
Jan 19 Python
Python计算IV值的示例讲解
Feb 28 Python
Python json格式化打印实现过程解析
Jul 21 Python
基于Python的图像阈值化分割(迭代法)
Nov 20 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利用单例模式实现日志处理类库
2014/02/10 PHP
PHPCMS忘记后台密码的解决办法
2016/10/30 PHP
PHP 进度条函数的简单实例
2017/09/19 PHP
使用laravel的migrate创建数据表的方法
2019/09/30 PHP
javascript记录文本框内文字个数检测文字个数变化
2014/10/14 Javascript
jQuery中:checkbox选择器用法实例
2015/01/03 Javascript
详解jquery事件delegate()的使用方法
2016/01/25 Javascript
javascript实现的猜数小游戏完整实例代码
2016/05/10 Javascript
JavaScript易错知识点整理
2016/12/05 Javascript
Angular ui.bootstrap.pagination分页
2017/01/20 Javascript
Angularjs中ng-repeat的简单实例
2017/08/25 Javascript
JS原型继承四步曲及原型继承图一览
2017/11/28 Javascript
js构建二叉树进行数值数组的去重与优化详解
2018/03/26 Javascript
在vue使用clipboard.js进行一键复制文本的实现示例
2019/01/15 Javascript
NodeJS实现同步的方法
2019/03/02 NodeJs
[52:31]VP vs Serenity 2018国际邀请赛小组赛BO2 第二场 8.16
2018/08/17 DOTA
[43:43]完美世界DOTA2联赛PWL S2 LBZS vs Forest 第三场 11.29
2020/12/02 DOTA
深入浅析python with语句简介
2018/04/11 Python
Python列表解析配合if else的方法
2018/06/23 Python
浅谈python编译pyc工程--导包问题解决
2019/03/20 Python
Python利用pandas处理Excel数据的应用详解
2019/06/18 Python
详解python中GPU版本的opencv常用方法介绍
2020/07/24 Python
canvas绘制树形结构可视图形的实现
2020/04/03 HTML / CSS
学期自我鉴定范文
2013/10/01 职场文书
大学四年规划书范文
2013/12/27 职场文书
人力资源主管岗位职责
2014/01/29 职场文书
学校大课间活动方案
2014/01/30 职场文书
事务机电主管工作职责
2014/02/25 职场文书
詹天佑教学反思
2014/04/30 职场文书
学生会竞选演讲稿怎么写
2014/08/26 职场文书
支部书记四风对照材料
2014/08/28 职场文书
留学推荐信(中英文版)
2015/03/26 职场文书
2015年度护士个人工作总结
2015/04/09 职场文书
火烧圆明园观后感
2015/06/03 职场文书
优质护理服务心得体会
2016/01/22 职场文书
Python函数对象与闭包函数
2022/04/13 Python