使用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利用datetime模块计算时间差
Aug 04 Python
python 3.3 下载固定链接文件并保存的方法
Dec 18 Python
python实现手机销售管理系统
Mar 19 Python
详解用python实现基本的学生管理系统(文件存储版)(python3)
Apr 25 Python
PyTorch中常用的激活函数的方法示例
Aug 20 Python
python防止随意修改类属性的实现方法
Aug 21 Python
详解Python3 pandas.merge用法
Sep 05 Python
Python中私有属性的定义方式
Mar 05 Python
Python爬取阿拉丁统计信息过程图解
May 12 Python
python用opencv完成图像分割并进行目标物的提取
May 25 Python
一文搞懂如何实现Go 超时控制
Mar 30 Python
Django中的JWT身份验证的实现
May 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读取ACCESS数据到MYSQL的代码
2011/05/11 PHP
PHP swfupload图片上传的实例代码
2013/09/30 PHP
PHP中把stdClass Object转array的几个方法
2014/05/08 PHP
php实现基于PDO的预处理示例
2017/03/28 PHP
PHP过滤器 filter_has_var() 函数用法实例分析
2020/04/23 PHP
php自动加载代码实例详解
2021/02/26 PHP
幻宇的层模拟窗口效果-提供演示和下载
2007/01/20 Javascript
通过伪协议解决父页面与iframe页面通信的问题
2015/04/05 Javascript
easyui下拉框动态级联加载的示例代码
2017/11/29 Javascript
在vue项目中使用sass的配置方法
2018/03/20 Javascript
Vue官方推荐AJAX组件axios.js使用方法详解与API
2018/10/09 Javascript
图文详解vue框架安装步骤
2019/02/12 Javascript
解决vue 单文件组件中样式加载问题
2019/04/24 Javascript
javascript系统时间设置操作示例
2019/06/17 Javascript
JS代码优化的8点建议
2020/02/04 Javascript
详解datagrid使用方法(重要)
2020/11/06 Javascript
200 行python 代码实现 2048 游戏
2018/01/12 Python
详解Numpy中的数组拼接、合并操作(concatenate, append, stack, hstack, vstack, r_, c_等)
2019/05/27 Python
python文件转为exe文件的方法及用法详解
2019/07/08 Python
python判断链表是否有环的实例代码
2020/01/31 Python
python实现udp聊天窗口
2020/03/31 Python
详解python内置模块urllib
2020/09/09 Python
python Yaml、Json、Dict之间的转化
2020/10/19 Python
阿迪达斯德国官方网站:adidas德国
2017/07/12 全球购物
First Aid Beauty官网:FAB急救面霜
2018/05/24 全球购物
人力资源部培训专员岗位职责
2014/01/02 职场文书
优秀求职信范文分享
2014/01/26 职场文书
大学生会计职业生涯规划范文
2014/02/28 职场文书
学生会竞聘书范文
2014/03/31 职场文书
治超工作实施方案
2014/05/04 职场文书
导游词范文
2015/02/13 职场文书
2015年酒店服务员工作总结
2015/05/18 职场文书
刑事法律意见书
2015/06/04 职场文书
2016年元旦致辞
2015/08/01 职场文书
使用Selenium实现微博爬虫(预登录、展开全文、翻页)
2021/04/13 Python
Python Flask请求扩展与中间件相关知识总结
2021/06/11 Python