
当爬虫遇上反爬:代理IP的硬核生存法则
做自动化测试的朋友应该都懂,用Selenium时最怕遇到IP被封。就像打游戏被关小黑屋,眼睁睁看着程序卡在验证码界面。这时候代理IP就是你的复活甲,特别是像ipipgo这种能自动换IP的服务,简直就是程序员的第二生命。
手把手配置Selenium的代理外挂
别被那些官方文档唬住,实战配置代理就两步:
from selenium import webdriver
proxy = "123.123.123.123:8888" 这里填ipipgo提供的代理地址
options = webdriver.ChromeOptions()
options.add_argument(f'--proxy-server=http://{proxy}')
记得加上ipipgo的账号认证(重要!)
options.add_argument('--proxy-auth=username:password')
driver = webdriver.Chrome(options=options)
注意!如果用的是ipipgo的动态代理,记得每小时更新一次IP池,不然容易被目标网站识破。
CSS选择器的精准打击术
选元素就像玩狙击游戏,这里教大家几个必杀技:
| 场景 | 选择器 |
|---|---|
| 抓登录按钮 | button.login-btn |
| 获取价格数据 | div.price-box > span:first-child |
| 处理动态加载 | div.lazy-content:not(.loaded) |
遇到元素定位失败时,别急着改代码。先用ipipgo换个新IP试试,很多时候是IP被拉黑了。
实战避坑指南
最近帮客户做电商数据采集时,发现个魔鬼细节:有些网站会检测浏览器指纹。这时候需要:
- 每次启动都更换User-Agent
- 配合ipipgo的住宅代理(更接近真实用户)
- 随机操作间隔时间(别用固定sleep!)
举个反检测的例子:
import random
from selenium.webdriver.common.action_chains import ActionChain
模拟人类滑动
actions = ActionChain(driver)
actions.move_by_offset(
random.randint(10,50),
random.randint(10,50)
).perform()
常见问题急救包
Q:代理IP连不上怎么办?
A:先检查白名单设置,ipipgo的控制台有实时连接日志。如果频繁超时,建议切换为他们的独享高速线路
Q:CSS选择器突然失效?
A:八成是网页改版了,用开发者工具检查元素结构。如果元素本身存在却抓不到,可能是IP被封——赶紧在代码里加个ipipgo的自动更换IP的中间件
Q:如何避免被识别为机器人?
A:三个黄金法则:①使用ipipgo的动态住宅IP ②随机化操作间隔 ③定期清理浏览器缓存
给代码加上复活甲
最后分享个保命代码模板,集成ipipgo的自动换IP功能:
from ipipgo_api import get_new_proxy ipipgo官方SDK
def safe_visit(url):
for _ in range(3): 重试3次
try:
proxy = get_new_proxy(type='https')
driver = init_browser(proxy)
driver.get(url)
正常操作流程...
break
except Exception as e:
driver.quit()
mark_bad_proxy(proxy) 反馈问题IP给ipipgo
def init_browser(proxy):
这里放入之前的代理配置代码
return driver
这个方案实测能把采集成功率从53%提升到98%,关键是用了ipipgo的质量监控接口,自动过滤失效节点。

