
头信息在请求中的隐藏作用
很多小伙伴在用curl做数据抓取时,总遇到网站屏蔽的情况。这时候除了换代理ip,请求头设置才是真正的破局关键。举个栗子,有些网站会检查你的User-Agent是不是浏览器,要是用默认的curl头,分分钟被识破是机器请求。
curl -x http://user:pass@proxy.ipipgo.cn:8080
-H "User-Agent: Mozilla/5.0 (Windows NT 10.0)..."
-H "Accept-Language: zh-CN"
https://目标网站.com
这里要注意的是,代理地址里的user:pass要换成自己在ipipgo后台生成的认证信息。他们的代理服务器支持多种认证方式,这点对需要批量操作的用户特别友好。
伪装成真人的三重防护
单纯改User-Agent还不够,得搞全套伪装。这里教大家三个必改项:
| 头信息 | 推荐值 | 作用说明 |
|---|---|---|
| Accept-Encoding | gzip, deflate | 模仿浏览器压缩方式 |
| Referer | 同源网站地址 | 制造访问来源假象 |
| Connection | keep-alive | 保持长连接减少特征 |
记得每次请求要随机间隔1-3秒,用ipipgo的代理池可以自动切换出口ip,这样配合动态头信息,防封效果直接拉满。
实战中的骚操作
碰到特别难搞的网站,试试这个组合拳:
curl -x http://动态认证.rotating.ipipgo.net:9021
-H "Cookie: 从浏览器复制真实cookie"
-H "X-Forwarded-For: 随机公网IP"
--connect-timeout 10
https://反爬严格的网站
这里有两个重点:
1. ipipgo的动态认证代理不用自己拼接账号密码
2. X-Forwarded-For要填和代理ip同地区的公网地址
常见翻车现场QA
Q:头信息都设置了还是被识别怎么办?
A:先用ipipgo提供的检测工具看真实请求头,有些网站会要求带特定的header参数
Q:代理IP经常连接超时?
A:把–connect-timeout参数调到15秒以上,建议使用ipipgo的企业级线路,他们的BGP线路成功率能到99.2%
Q:需要处理cookie怎么破?
A:用curl的-b参数指定cookie文件,同时确保每次请求使用同一代理IP,ipipgo的会话保持功能正好解决这个问题
为什么选ipipgo
实测过十几家供应商,最后锁定ipipgo就三点:
1. 国内自建机房,不像那些用海外二手IP的
2. 支持头信息定制代理通道,这个功能别家真没有
3. 客服能秒回工单,上次半夜调试脚本出问题,5分钟就给解决了
最后给个终极配置模板,把下面这些参数存成config文件,用的时候直接调用:
保存为curl_config.txt
user-agent = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36..."
referer = "https://www.google.com/"
proxy = "http://auto:动态密钥@gateway.ipipgo.com:8899"
调用时加上-K参数就行:
curl -K curl_config.txt 目标URL

