使用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 元类使用说明
Dec 18 Python
paramiko模块安装和使用(远程登录服务器)
Jan 27 Python
浅析Python中的for 循环
Jun 09 Python
Python 对象中的数据类型
May 13 Python
Python中工作日类库Busines Holiday的介绍与使用
Jul 06 Python
tensorflow 输出权重到csv或txt的实例
Jun 14 Python
python实现屏保计时器的示例代码
Aug 08 Python
屏蔽Django admin界面添加按钮的操作
Mar 11 Python
python字符串判断密码强弱
Mar 18 Python
实现ECharts双Y轴左右刻度线一致的例子
May 16 Python
pycharm开发一个简单界面和通用mvc模板(操作方法图解)
May 27 Python
python实现简单贪吃蛇游戏
Sep 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 面向对象实现代码
2009/11/11 PHP
thinkphp 多表 事务详解
2013/06/17 PHP
PHP获取php,mysql,apche的版本信息示例代码
2014/01/16 PHP
PHP使用feof()函数读文件的方法
2014/11/07 PHP
php5.3不能连接mssql数据库的解决方法
2014/12/27 PHP
php中switch语句用法详解
2015/08/17 PHP
(仅IE下有效)关于checkbox 三态
2007/05/12 Javascript
PHP 与 js的通信(via ajax,json)
2010/11/16 Javascript
jquery特效 幻灯片效果示例代码
2013/07/16 Javascript
jQuery 中国省市两级联动选择附图
2014/05/14 Javascript
jquery任意位置浮动固定层插件用法实例
2015/05/29 Javascript
JavaScript实现的微信二维码图片生成器的示例
2016/10/26 Javascript
鼠标点击input,显示瞬间的边框颜色,对之修改与隐藏实例
2016/12/26 Javascript
node.js实现复制文本到剪切板的功能
2017/01/23 Javascript
Vue.js数据绑定之data属性
2017/07/07 Javascript
React中使用collections时key的重要性详解
2017/08/07 Javascript
JS中关于正则的巧妙操作
2017/08/31 Javascript
jQuery EasyUI结合zTree树形结构制作web页面
2017/09/01 jQuery
使用express获取微信小程序二维码小记
2019/05/21 Javascript
layui 表单标签的校验方法
2019/09/04 Javascript
element form 校验数组每一项实例代码
2019/10/10 Javascript
[01:59]深扒TI7聊天轮盘语音出处 1
2017/05/11 DOTA
Python 如何访问外围作用域中的变量
2016/09/11 Python
Tornado Web Server框架编写简易Python服务器
2018/07/28 Python
对python中的argv和argc使用详解
2018/12/15 Python
在win64上使用bypy进行百度网盘文件上传功能
2020/01/02 Python
scrapy爬虫:scrapy.FormRequest中formdata参数详解
2020/04/30 Python
python 爬取腾讯视频评论的实现步骤
2021/02/18 Python
ALLSAINTS英国官网:伦敦新锐潮流品牌
2016/09/19 全球购物
迪卡侬荷兰官网:Decathlon荷兰
2017/10/29 全球购物
大学自我鉴定范文
2013/12/26 职场文书
单位实习证明怎么写
2014/01/17 职场文书
水果超市创业计划书
2014/01/27 职场文书
小学体育教学反思
2014/01/31 职场文书
python批量创建变量并赋值操作
2021/06/03 Python
JPA如何使用entityManager执行SQL并指定返回类型
2021/06/15 Java/Android