【问题标题】:How to use proxy authentication with Goutte?如何在 Goutte 中使用代理身份验证?
【发布时间】: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:你是如何解决代理问题的。可以告诉我吗?

标签: php guzzle goutte


【解决方案1】:

您是否尝试过使用代理选项直接实例化您的客户端?

像这样:

$url = 'http://whatismyip.org';

$client = new Client($url, array(
    'version'        => 'v1.1',
    'request.options' => array(
        'auth'    => array('d80fe9ebasab73d21a4', '', 'Basic'),
        'proxy'   => 'tcp://@x.x.x.x:8010'
    )
));


$crawler = $client->request('GET', $url);

$status = $client->getResponse()->getStatus();

echo $status; // 407

【讨论】:

  • Stucken:这个解决方案对我不起作用。它返回我的本地系统 ip 而不是代理 IP 。您能为此提出一些解决方案吗?
【解决方案2】:
$config = [
    'proxy' => [
        'http' => 'xx.xx.xx.xx:8080'
    ]
];

$client = new Client($config);
$client->setAuth('username', 'password', 'basic');

$crawler = $client->request('GET', $url);
$status = $client->getResponse()->getStatus();

echo $status;

我想这是客户端配置,而不是请求参数。

【讨论】:

    【解决方案3】:

    在新版本中你应该这样使用。

    $config = ['proxy' => host:port];
    
    $client = new Client(HttpClient::create($config));
    

    记得提及

    use Symfony\Component\HttpClient\HttpClient;
    use Goutte\Client;
    

    基本上需要客户端配置。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-08-05
      • 1970-01-01
      相关资源
      最近更新 更多