使用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 selenium抓取微博内容的示例代码
May 17 Python
替换python字典中的key值方法
Jul 06 Python
python连接mongodb密码认证实例
Oct 16 Python
Python图像的增强处理操作示例【基于ImageEnhance类】
Jan 03 Python
详解Python 函数如何重载?
Apr 23 Python
python对象销毁实例(垃圾回收)
Jan 16 Python
Python处理PDF与CDF实例
Feb 26 Python
Python 面向对象静态方法、类方法、属性方法知识点小结
Mar 09 Python
python多线程实现同时执行两个while循环的操作
May 02 Python
Win10下用Anaconda安装TensorFlow(图文教程)
Jun 18 Python
Python 利用Entrez库筛选下载PubMed文献摘要的示例
Nov 24 Python
windows下python 3.9 Numpy scipy和matlabplot的安装教程详解
Nov 28 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
WIN98下Apache1.3.14+PHP4.0.4的安装
2006/10/09 PHP
一贴学会PHP 新手入门教程
2009/08/03 PHP
使用PHP实现下载CSS文件中的图片
2015/12/06 PHP
PHP登录验证功能示例【用户名、密码、验证码、数据库、已登陆验证、自动登录和注销登录等】
2019/02/25 PHP
php实现session共享的实例方法
2019/09/19 PHP
js利用与或运算符优先级实现if else条件判断表达式
2010/04/15 Javascript
jQuery '行 4954 错误: 不支持该属性或方法' 的问题解决方法
2011/01/19 Javascript
Java 正则表达式学习总结和一些小例子
2012/09/13 Javascript
jQuery插件jQuery-JSONP开发ajax调用使用注意事项
2013/11/22 Javascript
JS 实现列表与多选框选择附预览动画
2014/10/29 Javascript
js QQ客服悬浮效果实现代码
2014/12/12 Javascript
jQuery插件Tooltipster实现漂亮的工具提示
2015/04/12 Javascript
JS数组排序方法实例分析
2016/12/16 Javascript
js实现自动轮换选项卡
2017/01/13 Javascript
使用vue中的v-for遍历二维数组的方法
2018/03/07 Javascript
vue input输入框模糊查询的示例代码
2018/05/22 Javascript
使用Karma做vue组件单元测试的实现
2020/01/16 Javascript
原生js实现html手机端城市列表索引选择城市
2020/06/24 Javascript
vue created钩子函数与mounted钩子函数的用法区别
2020/11/05 Javascript
windows 下python+numpy安装实用教程
2017/12/23 Python
Python实现读取及写入csv文件的方法示例
2018/01/12 Python
Python使用matplotlib简单绘图示例
2018/02/01 Python
Python基于最小二乘法实现曲线拟合示例
2018/06/14 Python
详解pandas使用drop_duplicates去除DataFrame重复项参数
2019/08/01 Python
利用rest framework搭建Django API过程解析
2019/08/31 Python
Django中使用haystack+whoosh实现搜索功能
2019/10/08 Python
python打印异常信息的两种实现方式
2019/12/24 Python
用python获取txt文件中关键字的数量
2020/12/24 Python
编码实现字符串转整型的函数
2012/06/02 面试题
服装设计行业个人的自我评价
2013/12/20 职场文书
企业理念标语
2014/06/09 职场文书
戒毒悔改检讨书
2014/09/21 职场文书
公务员年度考核个人总结
2015/02/12 职场文书
2015年维修电工工作总结
2015/04/25 职场文书
新手初学Java List 接口
2021/07/07 Java/Android
yolov5返回坐标的方法实例
2022/03/17 Python