curl - 使用代理 ¶
作者:KK
发表日期:2017.6.2
要点速读 ¶
使用代理的需求比较罕见
我使用代理主要是为了调试
设置CURLOPT_PROXY选项就可以了,代码是
curl_setopt($curlHandler, CURLOPT_PROXY, 'http://xxx.xxx.xxx.xxx');
,第三个参数就是代理地址如果你真的要用代理请求些什么,当这个代理需要账号密码认证时,我没试过,但你可以查一下CURLOPT_PROXYUSERPWD选项的使用说明
试验 ¶
第一步:准备一个代理 ¶
不用上网查找免费代理什么的了,我们可以通过Finddler这款软件开启一个本地代理,安装Finddler后在顶上菜单中选择Tools - Finddller Options
然后就会弹出下面这个选项,切换到Connection
这个选项卡,大概扫一眼下图中"8888"这个数字留个印象,这是Finddler的代理端口号,接着钩选Allow remote computers to connect
,会提醒你要重启Finddler才能生效,并且可能会遭到安全软件的权限提醒,要允许权限
此时Finddler的设置已经完毕
第二步:测试代码 ¶
以下代码我写在一个叫a.php的文件中
$url = 'http://test/b.php';
$proxy = 'http://127.0.0.1:8888';
$curlHandler = curl_init();
curl_setopt($curlHandler, CURLOPT_URL, $url);
curl_setopt($curlHandler, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curlHandler, CURLOPT_PROXY, $proxy);
$result = curl_exec($curlHandler);
curl_close($curlHandler);
echo $result;
在Finddler中可以看到2条请求记录
第一条是请求http://test/a.php
的,这是我用浏览器请求这个测试脚本的
第二条是a.php通过curl请求http://test/b.php
的记录
我什么时候需要使用本地代理 ¶
因为浏览器无法抓取curl的请求嘛,而且Finddler默认也无法抓curl的请求
所以我就将curl设置代理,让它的请求先走Finddler,再让Finddler帮忙请求,这样Finddler就能记录curl的通讯报文了,这样便于我做接口调试
其它 ¶
假设开启Finddler代理的机器IP是192.168.1.100
同一网段的任何机器都可以用PHP代码执行curl_setopt($curlHandler, CURLOPT_PROXY, 'http://192.168.1.100:8888');
来使用这台机的Finddler代理