使用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之dict()的操作方法
Sep 24 Python
Python实现读取目录所有文件的文件名并保存到txt文件代码
Nov 22 Python
Python实现图像几何变换
Jul 06 Python
Django自定义认证方式用法示例
Jun 23 Python
python中WSGI是什么,Python应用WSGI详解
Nov 24 Python
Python Tkinter实现简易计算器功能
Jan 30 Python
Request的中断和ErrorHandler实例解析
Feb 12 Python
Python对List中的元素排序的方法
Apr 01 Python
python实现dijkstra最短路由算法
Jan 17 Python
简单了解python filter、map、reduce的区别
Jan 14 Python
Python实现疫情通定时自动填写功能(附代码)
May 27 Python
python字典的值可以修改吗
Jun 29 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和Mysqlweb应用开发核心技术 第1部分 Php基础-1 开始了解php
2011/07/03 PHP
CodeIgniter框架中_remap()使用方法2例
2014/03/10 PHP
验证token、回复图文\文本、推送消息的实用微信类php代码
2016/06/28 PHP
不错的一个日期输入 动态
2006/11/06 Javascript
JavaScript null和undefined区别分析
2009/10/14 Javascript
jQuery实现回车键(Enter)切换文本框焦点的代码实例
2014/05/05 Javascript
详解javascript的变量与标识符
2016/01/04 Javascript
jQuery基本选择器(实例及表单域value的获取方法)
2016/05/20 Javascript
JavaScript中用let语句声明作用域的用法讲解
2016/05/20 Javascript
简单理解js的prototype属性及使用
2016/12/07 Javascript
React中ES5与ES6写法的区别总结
2017/04/21 Javascript
js获取css的各种样式并且设置他们的方法
2017/08/22 Javascript
angular写一个列表的选择全选交互组件的示例
2018/01/22 Javascript
JavaScript事件发布/订阅模式原理与用法分析
2018/08/21 Javascript
微信小程序实现签到功能
2018/10/31 Javascript
VUE+elementui面包屑实现动态路由详解
2019/11/04 Javascript
微信小程序webSocket的使用方法
2020/02/20 Javascript
Element InfiniteScroll无限滚动的具体使用方法
2020/07/27 Javascript
[03:55]显微镜下的DOTA2特别篇——430灰烬之灵神级操作
2014/06/24 DOTA
PYTHON压平嵌套列表的简单实现
2016/06/08 Python
浅谈python中的getattr函数 hasattr函数
2016/06/14 Python
python自动查询12306余票并发送邮箱提醒脚本
2018/05/21 Python
python实现月食效果实例代码
2019/06/18 Python
pytorch 更改预训练模型网络结构的方法
2019/08/19 Python
Python 获取命令行参数内容及参数个数的实例
2019/12/20 Python
python pptx复制指定页的ppt教程
2020/02/14 Python
python时间time模块处理大全
2020/10/25 Python
html5新增的属性和废除的属性简要概述
2013/02/20 HTML / CSS
详解如何在登录过期后跳出Ifram框架
2020/09/10 HTML / CSS
美国Lolё官网:购买大胆而美丽的女性运动服装
2017/05/22 全球购物
卫生安全检查制度
2014/02/04 职场文书
2014教师个人自我评价范文
2014/09/13 职场文书
英语教师求职信范文
2015/03/20 职场文书
培训通知
2015/04/17 职场文书
「玫瑰之王的葬礼」舞台剧主视觉图公开
2022/03/21 日漫
如何让你的Nginx支持分布式追踪详解
2022/07/07 Servers