【发布时间】:2015-12-31 18:04:35
【问题描述】:
我有以下代码,但它总是返回 407 HTTP 状态代码。
$url = 'http://whatismyip.org';
$client = new Client();
$options = array(
'proxy' => array(
'http' => 'tcp://@x.x.x.x:8010',
),
'auth' => array('d80fe9ebasab73d21a4', '', 'basic')
);
$crawler = $client->request('GET', $url, $options);
$status = $client->getResponse()->getStatus();
echo $status; // 407
我将 Goutte 与 Guzzle 6 一起使用。我开始尝试使用 setDefaultOption 设置代理,但此方法已被弃用。
我的用户名和空白密码绝对正确,因为它可以在命令行上使用 curl:
curl -U d80fe9ebasab73d21a4: -vx x.x.x.x:8010 http://whatismyip.org/
我已经为此花费了几个小时,如果有任何帮助,我将不胜感激!
【问题讨论】:
-
当客户端尝试使用 HTTP1 而不是 HTTP1.1 时,可能会发生这种情况 -- curl_setopt($curl, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_1);不确定客户端如何在内部工作.. 检查你的 curl 版本
-
很难说。使用 Wireshark 检查网络层的请求。还要检查您是否在 PHP 中启用了 cURL 扩展,并且 Guzzle 使用 CurlHandler。为什么代理IP前有
@char?您也可以尝试使用类似http://d80fe9ebasab73d21a4@x.x.x.x:8010的代理地址并省略auth选项。 -
@Abs:你是如何解决代理问题的。可以告诉我吗?