使用Python更换外网IP的方法
Python  /  管理员 发布于 7年前   184
在进行数据抓取时,经常会遇到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()
以上代码已经经过测试,能够正常使用。希望对大家的学习有所帮助,也希望大家多多支持。
122 在
学历:一种延缓就业设计,生活需求下的权衡之选中评论 工作几年后,报名考研了,到现在还没认真学习备考,迷茫中。作为一名北漂互联网打工人..123 在
Clash for Windows作者删库跑路了,github已404中评论 按理说只要你在国内,所有的流量进出都在监控范围内,不管你怎么隐藏也没用,想搞你分..原梓番博客 在
在Laravel框架中使用模型Model分表最简单的方法中评论 好久好久都没看友情链接申请了,今天刚看,已经添加。..博主 在
佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 @1111老铁这个不行了,可以看看近期评论的其他文章..1111 在
佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 网站不能打开,博主百忙中能否发个APP下载链接,佛跳墙或极光..
Copyright·© 2019 侯体宗版权所有·
粤ICP备20027696号