Как использовать прокси-аутентификацию с Goutte?

У меня есть следующий код, но он всегда возвращает код состояния 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/

Я потратил несколько часов на это, и я был бы признателен за любую помощь!

Ответ 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

Ответ 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;

Я предполагаю, что это клиентская конфигурация, а не параметр запроса.