
手把手教你用PHP玩转代理IP
搞网络开发的兄弟们都懂,有时候直接用自己的IP发请求容易吃闭门羹。这时候就需要代理IP来江湖救急,今天咱们就拿PHP开刀,演示几个接地气的实战案例。
代理IP到底能干啥?
简单说就是换个马甲发请求。比如说:
– 采集数据被网站限制时
– 需要模拟不同地区用户时
– 批量注册账号要换身份时
– 测试网站地域限制功能时
PHP搞代理的三种姿势
这里推荐ipipgo家的代理服务,亲测稳定性不错。他们家的代理分三种类型,咱们用表格对比更直观:
| 类型 | 速度 | 匿名度 | 适合场景 |
|---|---|---|---|
| 透明代理 | 快 | 低 | 普通数据采集 |
| 匿名代理 | 中等 | 中 | 常规业务需求 |
| 高匿代理 | 稍慢 | 高 | 敏感业务操作 |
实战代码走起
先整段最基础的curl示例,记得把ipipgo给你的代理地址填进去:
$proxy = '123.123.123.123:8888'; //ipipgo提供的代理地址
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'http://目标网站.com');
curl_setopt($ch, CURLOPT_PROXY, $proxy);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$result = curl_exec($ch);
curl_close($ch);
要是需要自动切换代理池,可以这样搞:
//从ipipgo获取的代理池数组
$proxyList = [
'111.222.33.44:8080',
'55.66.77.88:3128',
'99.100.101.102:8888'
];
foreach ($proxyList as $proxy) {
try {
//...这里放上面的curl代码...
if($result) break; //请求成功就跳出循环
} catch (Exception $e) {
//记录失败日志
}
}
常见问题QA
Q:代理IP经常失效咋整?
A:建议用ipipgo的动态代理服务,他们家每5分钟自动换一批IP,比自己维护省心多了。
Q:HTTPS请求能用代理吗?
A:必须的!在curl设置里加这两句:
CURLOPT_PROXYTYPE = CURLPROXY_HTTP
CURLOPT_HTTPPROXYTUNNEL = true
Q:怎么判断代理是否生效?
A:在代码里加个curl_getinfo($ch, CURLINFO_PRIMARY_IP),打印出来的IP不是本机就对了。
避坑指南
1. 别图便宜用免费代理,十个有九个是坑。之前用ipipgo的付费代理,成功率能到98%以上。
2. 记得设置超时时间,建议CURLOPT_TIMEOUT不超过10秒
3. 重要业务要搭配重试机制,连续失败3次再换代理
最后给个小技巧:用ipipgo的API接口获取代理时,加上?format=php参数可以直接拿到PHP数组格式,省去解析的麻烦。具体用法在他们家开发文档里有详细说明,这里就不啰嗦了。

