使用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中Flask框架简单入门实例
Mar 21 Python
使用Python压缩和解压缩zip文件的教程
May 06 Python
Python检测生僻字的实现方法
Oct 23 Python
Python3实现的回文数判断及罗马数字转整数算法示例
Mar 27 Python
python SQLAlchemy 中的Engine详解
Jul 04 Python
有关Tensorflow梯度下降常用的优化方法分享
Feb 04 Python
如何解决tensorflow恢复模型的特定值时出错
Feb 06 Python
python爬虫库scrapy简单使用实例详解
Feb 10 Python
Python如何实现的二分查找算法
May 27 Python
Python3爬虫中关于Ajax分析方法的总结
Jul 10 Python
如何在Python3中使用telnetlib模块连接网络设备
Sep 21 Python
python装饰器代码解析
Mar 23 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
Yii中CGridView关联表搜索排序方法实例详解
2014/12/03 PHP
php取得字符串首字母的方法
2015/03/25 PHP
一段实用的php验证码函数
2016/05/19 PHP
Yii使用smsto短信接口的函数demo示例
2016/07/13 PHP
PHP不使用递归的无限级分类简单实例
2016/11/05 PHP
ThinkPHP3.2框架自定义配置和加载用法示例
2018/06/14 PHP
php实现每日签到功能
2018/11/29 PHP
PHP验证类的封装与使用方法详解
2019/01/10 PHP
PHP内置函数生成随机数实例
2019/01/18 PHP
教你如何使用node.js制作代理服务器
2014/11/26 Javascript
jquery事件preventDefault()方法用法实例
2015/01/16 Javascript
jquery密码强度校验
2015/12/02 Javascript
对象转换为原始值的实现方法
2016/06/06 Javascript
js拖拽功能实现代码解析
2016/11/28 Javascript
详解如何解决Vue和vue-template-compiler版本之间的问题
2018/09/17 Javascript
Vue条件循环判断+计算属性+绑定样式v-bind的实例
2018/09/18 Javascript
用Python写的图片蜘蛛人代码
2012/08/27 Python
分享几道你可能遇到的python面试题
2017/07/24 Python
Python 比较两个数组的元素的异同方法
2017/08/17 Python
python获取外网IP并发邮件的实现方法
2017/10/01 Python
Python应用领域和就业形势分析总结
2019/05/14 Python
使用 Python ssh 远程登陆服务器的最佳方案
2020/03/06 Python
解决python中显示图片的plt.imshow plt.show()内存泄漏问题
2020/04/24 Python
python实现学生信息管理系统(精简版)
2020/11/27 Python
python 解决函数返回return的问题
2020/12/05 Python
美国受信赖的教育产品供应商:Nest Learning
2018/06/14 全球购物
在Ajax应用中信息是如何在浏览器和服务器之间传递的
2016/05/31 面试题
服装厂厂长职责
2013/12/16 职场文书
4s店总经理岗位职责
2013/12/31 职场文书
会计学生自我鉴定
2014/02/06 职场文书
高中历史教学反思
2014/02/08 职场文书
《我为你骄傲》教学反思
2014/02/20 职场文书
标准大学生职业生涯规划书写作指南
2014/09/18 职场文书
运动会400米加油稿(8篇)
2014/09/22 职场文书
2015领导干部廉洁自律工作总结
2015/07/23 职场文书
win10怎么设置右下角图标不折叠?Win10设置右下角图标不折叠的方法
2022/07/15 数码科技