使用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 正则表达式操作指南
May 04 Python
初学python数组的处理代码
Jan 04 Python
python发送邮件的实例代码(支持html、图片、附件)
Mar 04 Python
使用Django的模版来配合字符串翻译工作
Jul 27 Python
Python使用PIL库实现验证码图片的方法
Mar 11 Python
Tensorflow之构建自己的图片数据集TFrecords的方法
Feb 07 Python
python实现百度语音识别api
Apr 10 Python
Linux 修改Python命令的方法示例
Dec 03 Python
使用python serial 获取所有的串口名称的实例
Jul 02 Python
TensorFlow实现自定义Op方式
Feb 04 Python
详解用Python调用百度地图正/逆地理编码API
Jul 02 Python
python爬虫beautifulsoup库使用操作教程全解(python爬虫基础入门)
Feb 19 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
phpmyadmin中配置文件现在需要绝密的短语密码的解决方法
2007/02/11 PHP
快速开发一个PHP扩展图文教程
2008/12/12 PHP
php实现的九九乘法口诀表简洁版
2014/07/28 PHP
PHP下 Mongodb 连接远程数据库的实例代码
2017/08/30 PHP
多广告投放代码 推荐
2006/11/13 Javascript
formValidator3.3的ajaxValidator一些异常分析
2011/07/12 Javascript
EditPlus注册码生成器(js代码实现)
2013/03/25 Javascript
如何实现textarea里的不同文本显示不同颜色
2014/01/20 Javascript
浅析Node在构建超媒体API中的作用
2014/07/30 Javascript
Vuejs第七篇之Vuejs过渡动画案例全面解析
2016/09/05 Javascript
AngularJS全局scope与Isolate scope通信用法示例
2016/11/22 Javascript
JS异步文件分片断点上传的实现思路
2016/12/25 Javascript
javascript判断元素存在和判断元素存在于实时的dom中的方法
2017/01/17 Javascript
JS实现图片放大缩小的方法
2017/02/15 Javascript
微信小程序 PHP生成带参数二维码
2017/02/21 Javascript
JS实现仿饿了么在浏览器标签页失去焦点时网页Title改变
2017/06/01 Javascript
vue.js中created方法作用
2018/03/30 Javascript
JS 封装父页面子页面交互接口的实例代码
2019/06/25 Javascript
使用layui监听器监听select下拉框,事件绑定不成功的解决方法
2019/09/28 Javascript
vue 判断元素内容是否超过宽度的方式
2020/07/29 Javascript
利用TensorFlow训练简单的二分类神经网络模型的方法
2018/03/05 Python
python 获取url中的参数列表实例
2018/12/18 Python
Flask框架踩坑之ajax跨域请求实现
2019/02/22 Python
python实现单链表的方法示例
2019/09/03 Python
Pandas操作CSV文件的读写实现方法
2019/11/13 Python
HTML5录音实践总结(Preact)
2020/05/07 HTML / CSS
6号汽车旅馆预订:Motel 6
2018/02/11 全球购物
应届毕业生就业自荐信
2013/10/26 职场文书
新浪微博实习心得体会
2014/01/27 职场文书
副科级后备干部考察材料
2014/05/15 职场文书
小学教师自我剖析材料
2014/09/29 职场文书
四风个人对照检查材料思想汇报(办公室通用版)
2014/10/07 职场文书
出差报告怎么写
2014/11/06 职场文书
2015年教师学期工作总结
2015/04/30 职场文书
董存瑞观后感
2015/06/11 职场文书
2015年环卫处个人工作总结
2015/07/27 职场文书