
当爬虫遇到反爬怎么办?试试这招
老铁们做数据采集时,十有八九都遇到过403 Forbidden吧?网站现在精得很,看你不顺眼就封IP。这时候代理IP+自定义Header就是黄金搭档了。举个栗子,用ipipgo的代理服务,每次请求换个”马甲”,网站根本分不清是人是机器。
手把手教你玩转curl传Header
先来点实在的,直接上代码:
curl -x http://user:pass@proxy.ipipgo.cn:8080
-H "User-Agent: Mozilla/5.0 (Windows NT 10.0)"
-H "X-Requested-With: XMLHttpRequest"
https://target-site.com/api/data
这里-x参数指定代理服务器,注意ipipgo的代理地址要填自己的账号密码。多个Header就多写几个-H,跟糖葫芦似的串起来。
Header伪装四大金刚
这几个参数最管用:
• User-Agent(设备指纹)
• Accept-Language(语言偏好)
• Referer(来路页面)
• Cookie(登录凭证)
建议搞个配置文件存常用组合,比如:
{
"mobile": {
"User-Agent": "Mozilla/5.0 (iPhone; CPU iPhone OS 14_7 like Mac OS X)",
"Accept": "application/json"
},
"pc": {
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64)",
"Accept-Language": "zh-CN,zh;q=0.9"
}
}
动态Header轮换黑科技
总用固定Header还是会被逮到,这时候就要上ipipgo的动态IP池了。配合脚本随机切换Header,效果堪比孙悟空的七十二变:
headers_list = [
{"User-Agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7)"},
{"User-Agent":"Opera/9.80 (Windows NT 6.1; U; en) Presto/2.7.62"},
{"User-Agent":"Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36"}
]
proxy = "http://user:pass@proxy.ipipgo.cn:3000"
curl -x $proxy -H "${headers_list[$RANDOM % 3]}" https://xxx.com
实战避坑指南
有些网站会检测Header顺序,别以为随便写就行。建议先用浏览器正常访问,抓包看原始请求的Header顺序,照猫画虎最稳妥。
| 错误姿势 | 正确姿势 |
|---|---|
| 缺失Content-Type | 根据接口类型设置 |
| 非常用字符集 | 统一用UTF-8 |
| 非常规时间戳 | 保持时区一致 |
你问我答环节
Q:加了Header还是被ban怎么办?
A:试试ipipgo的高匿代理,完全隐藏原始IP。再检查是不是Cookie过期了,或者频率太高。
Q:需要处理Cookie怎么破?
A:先用curl -c保存Cookie文件,后续请求带上-b参数:
curl -x http://proxy.ipipgo.cn -c cookies.txt -b cookies.txt https://xxx.com/login
Q:为什么用代理后响应变慢?
A:可能是节点线路问题,在ipipgo后台切换BGP混合线路,选物理距离近的机房。
终极解决方案
说到底,想要稳定搞数据采集,ipipgo的商用代理套餐才是王道。独享IP池+智能路由切换+Header自动伪装,三合一解决方案。新用户领200M流量试用,不好用直接拍砖。
最后唠叨一句:Header伪装不是万能药,得配合合理的请求间隔。就像吃烧烤要配啤酒,单喝啤酒也没那个味儿不是?

