Python自动拨号更换宽带IP实现反爬策略

周末不加班
周末不加班
发布时间:2026-10-13| 2人浏览过
原创

本文介绍利用Python脚本自动操作家庭宽带路由器,通过断开并重新连接WAN口来动态获取新公网IP的方法。该方案适用于数据抓取中IP被限制的场景,无需搭建代理池。文章提供了针对TP-Link路由器的完整Python代码示例,包含获取当前IP、检测状态及执行断线重拨的逻辑,经测试可正常运行,帮助开发者实现自动化的IP轮换机制。

在进行网络数据抓取任务时,经常遭遇目标网站对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 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。