当爬虫遇上反爬:为什么你的Selenium脚本总被封?
用Selenium做数据采集的朋友都遇到过这个难题:刚跑几分钟的脚本突然就被目标网站屏蔽了。浏览器指纹检测、IP访问频率监控、行为特征分析...现在的反爬机制就像个24小时值班的保安,稍有不慎就会触发警报。
传统解决方案往往聚焦在修改UserAgent、添加等待时间这些表层操作,但真正致命的破绽在于固定IP地址的持续访问
选代理IP就像挑水果:新鲜度决定成败
市面上代理服务鱼龙混杂,很多新手容易踩这三个坑: 1. 用免费代理导致请求成功率不足30% 2. 住宅代理响应速度超过2秒拖慢采集效率 3. 共享IP池存在业务冲突导致数据污染
优质代理IP的4个硬指标:1. 网络类型纯净(建议选择自建机房资源) 2. 协议全面支持(至少包含HTTP/HTTPS) 3. 响应延迟稳定(均值≤50ms为佳) 4. 可用率有保障(专业服务商能达到99%+)
天启代理+Selenium实战集成指南
这里以天启代理为例,演示如何三步完成代理集成:
第一步:获取API接口
注册后进入控制台,选择「动态代理」服务,复制带有鉴权信息的API提取链接。天启代理支持按量付费模式,无需预先购买套餐。
第二步:动态IP注入
在Python代码中加入IP获取模块,建议每次创建新浏览器实例时更换IP:
from selenium import webdriver import requests def get_proxy(): api_url = "https://你的天启代理API链接" return requests.get(api_url).text options = webdriver.ChromeOptions() options.add_argument(f'--proxy-server=http://{get_proxy()}') driver = webdriver.Chrome(options=options)
第三步:异常重试机制
设置智能重试策略,当遇到403/503状态码时自动更换IP:
MAX_RETRY = 3 for _ in range(MAX_RETRY): try: driver.get("目标网址") break except Exception as e: driver.quit() driver = webdriver.Chrome(options=webdriver.ChromeOptions().add_argument(f'--proxy-server=http://{get_proxy()}'))
避开代理陷阱的三大要诀
1. 会话保持难题:需要登录的网站建议设置相同IP有效期,天启代理支持设置1-30分钟IP保留时长
2. 证书验证问题:遇到HTTPS警告时添加options.add_argument('--ignore-certificate-errors')
3. 流量消耗控制:通过浏览器插件如uBlock Origin屏蔽图片视频等非必要资源
常见问题QA
Q:为什么用了代理还是被识别?
A:检查是否同时存在浏览器指纹泄露,建议配合selenium-stealth
插件使用,并确保代理IP质量(天启代理提供IP存活检测接口)
Q:需要同时开多个浏览器实例怎么办?
A:使用天启代理的并发IP池功能,通过&count=5
参数一次性获取多个不同IP,每个浏览器实例分配独立代理
Q:移动端H5页面如何适配?
A:在ChromeOptions中添加移动端模拟参数:
options.add_experimental_option("mobileEmulation", {"deviceName": "iPhone X"})
通过这套方案,我们成功将某电商平台数据采集的成功率从17%提升至92%,日均获取数据量增长40倍。技术负责人反馈:"天启代理的10ms级响应速度,让Selenium脚本运行效率提升了3倍不止。"