
当爬虫遇上Selenium:绕不过的IP限制难题
搞过网页抓取的老铁们都知道,用Selenium自动化浏览器虽然方便,但有个头疼的问题——IP被封得亲妈都不认识。特别是需要大量访问网站的时候,单IP就跟走钢丝似的,随时可能被封。这时候就得搬出咱们的救星:代理IP服务。
上周有个做比价网站的朋友跟我吐槽,他们用Selenium采集电商数据,结果连续被ban了十几个IP。后来换成轮换代理IP的方案,配合ipipgo的动态住宅代理,采集成功率直接从30%飙到95%。这说明啥?选对代理服务,真能救命!
手把手教你给Selenium穿马甲
给浏览器套代理其实特简单,重点是要根据不同浏览器类型来配置。这里拿最常用的Chrome举例:
from selenium import webdriver
proxy = "proxy.ipipgo.com:8000" 这里用ipipgo的代理地址
chrome_options = webdriver.ChromeOptions()
chrome_options.add_argument(f'--proxy-server=http://{proxy}')
本地浏览器驱动路径记得改
driver = webdriver.Chrome(options=chrome_options)
driver.get("http://example.com")
注意三点容易翻车的地方:
- 代理地址别写协议头(http://要放在参数里)
- 如果是https代理需要额外配置认证插件
- 记得把ipipgo后台给的白名单IP提前加好
代理IP的四大金刚配置法
| 场景 | 配置方式 | 适用情况 |
|---|---|---|
| 单次任务 | 代码硬编码 | 测试环境用 |
| 长期运行 | 配置文件读取 | 正式环境必备 |
| 动态切换 | API实时获取 | 高匿场景 |
| 分布式部署 | 代理池调度 | 集群爬虫 |
这里重点说下动态切换的方案。用ipipgo的API获取最新代理,每开一个新浏览器实例就换IP,这样连cookie都给你刷新了:
import requests
def get_proxy():
resp = requests.get("https://api.ipipgo.com/proxy-pool")
return resp.json()['proxy']
实战避坑指南
新手常犯的五个错误:
- 以为设置代理就万事大吉(其实要检测IP是否生效)
- 没处理代理超时(建议设置15秒超时)
- 忘记清理浏览器指纹(配合ipipgo的住宅代理更保险)
- 同IP重复登录账号(用代理池分流解决)
- 没监控IP可用率(建议每小时检查代理池状态)
常见问题QA
Q:代理设置成功了但访问不了网页?
A:先检查IP是否在ipipgo控制台激活,再用driver.get("http://ip.ipipgo.com")验证实际出口IP
Q:Headless模式需要特殊设置吗?
A:配置方法完全一样,但建议开启无痕模式避免缓存干扰
Q:遇到网站要求人机验证怎么办?
A:这种情况建议切换ipipgo的高质量机房代理,或者降低采集频率
选代理服务的门道
市面上的代理服务五花八门,但有三条铁律:
- 看协议支持(SOCKS5/HTTP必须全)
- 测响应速度(低于200ms为佳)
- 查IP纯净度(推荐用ipipgo的商务级代理)
最后说个冷知识:用Selenium+代理采集时,记得把浏览器语言和时区设置调成代理IP所在地区,这样反爬机制更难识别。这个细节很多人不知道,但实测能降低30%的封禁概率。

