一、为什么你的请求总被拦截?可能少了这层”保护壳”
咱们做数据采集的兄弟肯定遇到过这种破事儿——明明代码写对了,但目标网站就是不给数据。这时候你就得琢磨了,你的请求是不是太”裸奔”了?就像夏天穿大裤衩进高档餐厅,门卫不拦你拦谁?
这里就得说到请求头伪装这个保命技能。很多网站会通过检测请求头里的User-Agent、Accept-Language这些参数,判断你是不是机器人。加上代理IP就像给请求穿了件隐身衣,再配合精心设计的请求头,成功率能翻倍涨。
基础伪装示例(太容易被识破)
curl -H "User-Agent: Mozilla/5.0" http://example.com
高级伪装应该这样玩(配合代理IP使用)
curl -x http://user:pass@gateway.ipipgo.com:9020
-H "User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36"
-H "Accept-Language: zh-CN,zh;q=0.9,en;q=0.8"
-H "Sec-Fetch-Site: same-site"
http://target-site.com
二、请求头配置四大金刚(附实战代码)
别以为随便加几个参数就能蒙混过关,这里边讲究可多了。记住这四个必装参数,保你请求稳如老狗:
1. User-Agent:浏览器身份证(建议用最新版)
2. Accept-Encoding:压缩方式(别用网站不支持的)
3. Referer:上一页地址(伪造访问路径)
4. Cookie:登录凭证(动态更新才有用)
实战中推荐用ipipgo的动态住宅代理,他们的IP池每天更新500万+,配合这个脚本保证每次请求都像真人:
PROXY="http://user:pass@rotating.ipipgo.com:9021"
UA=$(shuf -n 1 user-agents.txt) 提前准备好的UA库
curl -x $PROXY
-H "User-Agent: $UA"
-H "Accept: text/html,application/xhtml+xml"
-H "Connection: keep-alive"
-H "Upgrade-Insecure-Requests: 1"
http://target.com
三、反侦察特别技巧(90%的人不知道)
有些网站会检测请求头顺序这种骚操作,这时候就得用–proxy-header参数玩点花的:
curl -x http://user:pass@gateway.ipipgo.com:9020
--proxy-header "Proxy-Authorization: Basic base64串"
-H "Accept-Language: zh-CN"
-H "User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.1.1 Safari/605.1.15"
-H "X-Requested-With: XMLHttpRequest"
http://api.target.com/data
重点来了:ipipgo的代理支持动态证书验证,能自动绕过TLS指纹检测。这是很多免费代理做不到的,具体配置找他们技术要秘钥就行。
四、常见问题排雷指南
Q:加了请求头还是被ban?
A:八成是代理IP质量不行,用ipipgo的独享代理套餐,每个IP都带真实浏览器环境模拟
Q:需要处理验证码怎么办?
A:在请求头里加”X-Captcha-Key: ipipgo_auto”(这是他们家内置的自动打码功能)
Q:怎么保持会话连贯性?
A:用ipipgo的长时效代理+Cookie持久化存储,同一IP维持30分钟以上会话
五、终极配置方案(建议收藏)
这个配置模板我用了三年没翻车,配合ipipgo的企业级代理,日采百万数据稳稳的:
!/bin/bash
IPPOOL=("gateway.ipipgo.com:9020" "gateway.ipipgo.com:9021" "gateway.ipipgo.com:9022")
UA_ARRAY=($(curl -s https://cdn.ipipgo.com/ua_pool))
for i in {1..1000}; do
RANDOM_IP=${IPPOOL[$RANDOM % ${IPPOOL[@]}]}
RANDOM_UA=${UA_ARRAY[$RANDOM % ${UA_ARRAY[@]}]}
curl -x "http://user:pass@${RANDOM_IP}"
-H "User-Agent: ${RANDOM_UA}"
-H "Accept-Encoding: gzip, deflate, br"
-H "Sec-Fetch-Dest: document"
-H "Pragma: no-cache"
-H "Cache-Control: no-cache"
--compressed
"http://target.com/page=$i" -o "data_$i.html"
sleep $((RANDOM%5+2)) 随机延时很重要!
done
最后唠叨一句:免费代理都是坑,专业的事还是得找ipipgo这种老牌服务商。他们最近搞活动,新用户送10G流量,够测试用了。代码在手,天下你有,搞起来吧兄弟们!