使用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 numpy实现二维数组和一维数组拼接的方法
Jun 05 Python
Python实现查找最小的k个数示例【两种解法】
Jan 08 Python
python在回调函数中获取返回值的方法
Feb 22 Python
Python3.6中Twisted模块安装的问题与解决
Apr 15 Python
Python 中包/模块的 `import` 操作代码
Apr 22 Python
python中pip的使用和修改下载源的方法
Jul 08 Python
python实现抠图给证件照换背景源码
Aug 20 Python
Python数学形态学实例分析
Sep 06 Python
Python进程池Pool应用实例分析
Nov 27 Python
Pytorch Tensor 输出为txt和mat格式方式
Jan 03 Python
python 解决flask 图片在线浏览或者直接下载的问题
Jan 09 Python
python集合的新增元素方法整理
Dec 07 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执行速度全攻略(下)
2006/10/09 PHP
php面向对象全攻略 (四)构造方法与析构方法
2009/09/30 PHP
PHP安全技术之 实现php基本安全
2010/09/04 PHP
php中过滤非法字符的具体实现
2013/10/29 PHP
php教程之phpize使用方法
2014/02/12 PHP
php 实现Hash表功能实例详解
2016/11/29 PHP
Jquery 绑定时间实现代码
2011/05/03 Javascript
游览器中javascript的执行过程(图文)
2012/05/20 Javascript
Javascript字符串浏览器兼容问题分析
2014/12/01 Javascript
JS实现网页顶部向下滑出的全国城市切换导航效果
2015/08/22 Javascript
JQuery和HTML5 Canvas实现弹幕效果
2017/01/04 Javascript
详解vue 图片上传功能
2019/04/30 Javascript
JS简单数组排序操作示例【sort方法】
2019/05/17 Javascript
JavaScript实现简单动态表格
2020/12/02 Javascript
[01:14]2019完美世界城市挑战赛(秋季赛)全国总决赛精彩花絮
2020/01/08 DOTA
Python实现Tab自动补全和历史命令管理的方法
2015/03/12 Python
如何利用python查找电脑文件
2018/04/27 Python
使用11行Python代码盗取了室友的U盘内容
2018/10/23 Python
python网络应用开发知识点浅析
2019/05/28 Python
Python3 io文本及原始流I/O工具用法详解
2020/03/23 Python
python如何调用百度识图api
2020/09/29 Python
浅析border-radius如何兼容IE
2016/04/19 HTML / CSS
英国复古和经典球衣网站:Vintage Football Shirts
2018/10/05 全球购物
英国邮购活的植物主要供应商:Gardening Direct
2019/01/28 全球购物
应届护士推荐信
2013/11/16 职场文书
学生自我鉴定
2013/12/18 职场文书
爽歪歪广告词
2014/03/20 职场文书
春节晚会主持词
2014/03/24 职场文书
优秀学生评语大全
2014/04/25 职场文书
国际商务英语专业求职信
2014/07/08 职场文书
走进毛泽东观后感
2015/06/04 职场文书
金榜题名主持词
2015/07/02 职场文书
2015年物流客服工作总结
2015/07/27 职场文书
文明医院的标语集锦!
2019/07/24 职场文书
500字作文之难忘的同学
2019/12/20 职场文书
Python如何识别银行卡卡号?
2021/06/10 Python