使用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计算书页码的统计数字问题实例
Sep 26 Python
Python中的进程分支fork和exec详解
Apr 11 Python
python 内置函数filter
Jun 01 Python
详解python while 函数及while和for的区别
Sep 07 Python
浅谈Python在pycharm中的调试(debug)
Nov 29 Python
利用python计算windows全盘文件md5值的脚本
Jul 27 Python
python 接口实现 供第三方调用的例子
Aug 13 Python
python3实现高效的端口扫描
Aug 31 Python
python cv2截取不规则区域图片实例
Dec 21 Python
Python包和模块的分发详细介绍
Jun 19 Python
python实现最短路径的实例方法
Jul 19 Python
发工资啦!教你用Python实现邮箱自动群发工资条
May 10 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
javascript 小型动画组件与实现代码
2010/06/02 PHP
PHP中3种生成XML文件方法的速度效率比较
2012/10/06 PHP
解析mysql 表中的碎片产生原因以及清理
2013/06/22 PHP
PHP学习笔记(二):变量详解
2015/04/17 PHP
IE DOM实现存在的部分问题及解决方法
2009/07/25 Javascript
innerhtml用法 innertext用法 以及innerHTML与innertext的区别
2009/10/26 Javascript
用javascript为页面添加天气显示实现思路及代码
2013/12/02 Javascript
Array栈方法和队列方法的特点说明
2014/01/24 Javascript
js 针对html DOM元素操作等经验累积
2014/03/11 Javascript
node.js中的buffer.Buffer.byteLength方法使用说明
2014/12/10 Javascript
使用Chrome浏览器调试AngularJS应用的方法
2015/06/18 Javascript
直接拿来用的页面跳转进度条JS实现
2016/01/06 Javascript
vue+swiper实现组件化开发的实例代码
2017/10/26 Javascript
AngularJS实现的自定义过滤器简单示例
2019/02/02 Javascript
jQuery/JS监听input输入框值变化实例
2019/10/17 jQuery
微信小程序 scroll-view 实现锚点跳转功能
2019/12/12 Javascript
基于ts的动态接口数据配置的详解
2019/12/18 Javascript
在Python中使用成员运算符的示例
2015/05/13 Python
python解析xml文件实例分析
2015/05/27 Python
浅谈Python处理PDF的方法
2017/11/10 Python
Python编程实现使用线性回归预测数据
2017/12/07 Python
Java及python正则表达式详解
2017/12/27 Python
python使用多进程的实例详解
2018/09/19 Python
python 处理数字,把大于上限的数字置零实现方法
2019/01/28 Python
详解python中的生成器、迭代器、闭包、装饰器
2019/08/22 Python
安装python依赖包psycopg2来调用postgresql的操作
2021/01/01 Python
css3与html5实现响应式导航菜单(导航栏)效果分享
2014/02/12 HTML / CSS
伦敦高级内衣品牌:Agent Provocateur(大内密探)
2016/08/23 全球购物
购买200个世界上最好的内衣品牌:Bare Necessities
2017/02/11 全球购物
英国领先的酒类网上商城:TheDrinkShop
2017/03/16 全球购物
新西兰珠宝品牌:Michael Hill
2017/09/16 全球购物
Holiday Inn中国官网:IHG旗下假日酒店预订
2018/04/08 全球购物
质检部岗位职责
2013/11/11 职场文书
社团活动总结
2014/04/28 职场文书
大学拉赞助协议书范文
2014/09/26 职场文书
2015年保险业务员工作总结
2015/05/27 职场文书