使用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使用multiprocessing模块实现带回调函数的异步调用方法
Apr 18 Python
Python最基本的输入输出详解
Apr 25 Python
Python检测一个对象是否为字符串类的方法
May 21 Python
python实现批量下载新浪博客的方法
Jun 15 Python
Python的Tornado框架实现异步非阻塞访问数据库的示例
Jun 30 Python
Python3生成手写体数字方法
Jan 30 Python
python变量的存储原理详解
Jul 10 Python
python tkinter组件摆放方式详解
Sep 16 Python
tensorflow 实现数据类型转换
Feb 17 Python
python爬虫开发之urllib模块详细使用方法与实例全解
Mar 09 Python
详解pyinstaller生成exe的闪退问题解决方案
Jun 19 Python
Python 中random 库的详细使用
Jun 03 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 5.2.14+fpm+memcached(具体操作详解)
2013/06/18 PHP
PHP实现多文件上传的方法
2015/07/08 PHP
tp5.1 框架路由操作-URL生成实例分析
2020/05/26 PHP
Aster vs Newbee BO5 第二场2.19
2021/03/10 DOTA
List Information About the Binary Files Used by an Application
2007/06/18 Javascript
jquery ui dialog里调用datepicker的问题
2009/08/06 Javascript
JQuery1.4+ Ajax IE8 内存泄漏问题
2010/10/15 Javascript
jquery submit ie6下失效的原因分析及解决方法
2013/11/15 Javascript
node.js中的url.resolve方法使用说明
2014/12/10 Javascript
javascript对象的相关操作小结
2016/05/16 Javascript
JQuery中attr属性和jQuery.data()学习笔记【必看】
2016/05/18 Javascript
Ionic如何实现下拉刷新与上拉加载功能
2016/06/03 Javascript
JS中的作用域链
2017/03/01 Javascript
大白话讲解JavaScript的Promise
2017/04/06 Javascript
vue 实现锚点功能操作
2020/08/10 Javascript
[01:58]最残酷竞争 2016国际邀请赛中国区预选赛积分循环赛回顾
2016/06/28 DOTA
python解析文件示例
2014/01/23 Python
python实现可以断点续传和并发的ftp程序
2016/09/13 Python
Python中装饰器高级用法详解
2017/12/25 Python
Python tkinter事件高级用法实例
2018/01/31 Python
Python sklearn KFold 生成交叉验证数据集的方法
2018/12/11 Python
python set内置函数的具体使用
2019/07/02 Python
python3获取url文件大小示例代码
2019/09/18 Python
Python turtle库的画笔控制说明
2020/06/28 Python
使用pygame实现垃圾分类小游戏功能(已获校级二等奖)
2020/07/23 Python
Python定时任务框架APScheduler原理及常用代码
2020/10/05 Python
TripAdvisor日本:全球领先的旅游网站
2019/02/14 全球购物
自我评价的正确写法
2013/09/19 职场文书
一夜的工作教学反思
2014/02/08 职场文书
餐饮业员工工作决心书
2014/03/11 职场文书
葛优非诚勿扰搞笑征婚台词
2014/03/17 职场文书
抗震救灾标语
2014/06/26 职场文书
司法局群众路线教育实践活动整改措施
2014/09/17 职场文书
2015年清明节扫墓演讲稿
2015/03/18 职场文书
PostGIS的安装与入门使用指南
2022/01/18 PostgreSQL
MySql按时,天,周,月进行数据统计
2022/08/14 MySQL