
当爬虫遇到UA检测时,你该这样玩
很多用Python requests库的小伙伴都遇到过这种情况:明明代码写得溜,但目标网站就像开了天眼,总能识别出你是爬虫。这时候别慌,用户代理(UA)伪装+代理IP双管齐下才是正解。
UA设置不是换马甲那么简单
很多人以为随便找个浏览器UA就完事了,其实这里面门道多得很。网站会通过多个特征判断UA真实性,比如:
典型错误示例(千万别这么写)
headers = {'User-Agent': '随便写的UA'}
正确姿势要记住这三点:
1. 设备型号与浏览器版本要匹配(别整个iPhone用着Chrome 120)
2. 语言时区要对应(美国IP配zh-CN语言就露馅了)
3. 请求频率要模拟真人(突然暴增请求量必被封)
代理IP选型有讲究
光改UA还不够,得配合代理IP使用。市面上的代理分三种类型:
| 类型 | 匿名度 | 适用场景 |
|---|---|---|
| 透明代理 | 最低 | 普通数据采集 |
| 匿名代理 | 中等 | 常规防封需求 |
| 高匿代理 | 最高 | 严格反爬场景 |
这里必须夸下自家产品,ipipgo的高匿代理池实测能扛住某电商平台连续7天的检测,具体配置看代码:
import requests
proxies = {
'http': 'http://用户名:密码@gateway.ipipgo.com:9020',
'https': 'https://用户名:密码@gateway.ipipgo.com:9020'
}
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36 Edg/120.0.0.0'
}
response = requests.get('https://目标网站', headers=headers, proxies=proxies)
实战避坑指南
最近帮客户做某旅游网站采集时,发现三个关键点:
1. 凌晨3-5点UA切换间隔要大于120秒(别问怎么知道的,都是泪)
2. 安卓设备UA要带移动网络标识(比如MobiLeo前面那串字符)
3. 用ipipgo的动态端口分配功能,比固定端口存活率高40%
常见问题QA
Q:UA和代理都设置了还是被封?
A:检查IP纯净度,推荐用ipipgo的企业级代理套餐,他们家的IP有真人认证机制
Q:需要每次请求都换UA吗?
A:看网站风控级别,普通站点2-3小时换一次就行,关键是要保持设备特征一致
Q:ipipgo的代理怎么保证稳定性?
A:他们家采用蜂窝网络动态IP池,每次请求都是新出口IP,亲测连续采集8小时没断过
升级玩法推荐
对于骨灰级玩家,可以试试UA指纹混淆:把常见UA拆分成组件库,每次随机组合生成新UA。配合ipipgo的IP轮换策略,成功率直接拉满。
组件式UA生成示例
device = ['Windows NT 10.0', 'Macintosh; Intel Mac OS X 10_15_7']
browser = ['Chrome/120.0.0.0', 'Safari/537.36']
ua = f"Mozilla/5.0 ({random.choice(device)}) AppleWebKit/537.36 ({random.choice(browser)})"
最后说句掏心窝的话,防检测本质是人机对抗。保持技术更新很重要,像ipipgo的技术团队每周都会更新反反爬策略库,比自己折腾省心多了。

