当爬虫遇到IP被封?试试这样玩转PHP curl+代理
做过数据采集的老铁都懂,用PHP写爬虫最头疼的就是IP被封。这时候就需要代理IP来穿马甲,而天启代理的IP池子够大够干净,正好能解决这个痛点。
手把手教你curl基础操作
先来段最基础的GET请求代码(记得把example.com换成你要抓的网站):
$ch = curl_init(); curl_setopt($ch, CURLOPT_URL, "http://example.com"); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); $response = curl_exec($ch); curl_close($ch);
这段代码虽然能用,但相当于裸奔上网,分分钟被目标网站封IP。咱们得给它套个隐身斗篷。
给curl套上代理马甲
天启代理支持HTTP/HTTPS/SOCKS5三种协议,这里以HTTP协议为例:
curl_setopt($ch, CURLOPT_PROXY, '代理IP:端口'); //如123.45.67.89:8080 curl_setopt($ch, CURLOPT_PROXYUSERPWD, '用户名:密码'); //天启代理的认证信息
重点注意: - 天启代理的IP需要从API获取,建议每次请求随机选IP - 设置超时时间别超过3秒,避免卡死 - 记得开启header头伪装成正常浏览器
实战配置参数清单
参数 | 推荐值 | 说明 |
---|---|---|
CURLOPT_TIMEOUT | 10 | 最长等待时间(秒) |
CURLOPT_CONNECTTIMEOUT | 3 | 连接超时时间 |
CURLOPT_USERAGENT | Mozilla/5.0... | 浏览器标识 |
CURLOPT_FOLLOWLOCATION | true | 自动跳转跟踪 |
高频踩坑QA
Q:代理设置成功了但没效果?
A:先用curl_getinfo($ch, CURLINFO_PRIMARY_IP)
查实际使用的IP,天启代理的API返回格式要注意解析
Q:HTTPS网站请求失败?
A:把协议改成HTTPS代理,并且设置CURLOPT_PROXYTYPE = CURLPROXY_HTTPS
Q:如何自动更换IP?
A:天启代理提供动态API接口,每次请求前调用接口获取新IP,建议配合IP池轮询使用
为什么选天启代理
自家项目实测对比过多个服务商,天启代理的存活率确实能打。特别是他们的自建机房IP,不像某些服务商拿用户设备当节点。10毫秒内的响应速度,在采集图片这类大文件时优势明显。
最后提醒新手三点:
1. 免费代理都是坑,专业的事交给专业的人
2. 别在代码里写死代理IP,用配置文件更安全
3. 重要项目记得买商业授权,天启代理有正规运营商授权不怕法律风险
代码写再好,没靠谱代理也是白搭。用好这些技巧,配合天启代理的稳定IP资源,你的爬虫就能在合规范围内畅行无阻。