Установка параметров CURL для клиента fabpot/goutte

Я работаю над поисковым роботом, используя goutte (fabpot/goutte). Когда я пытаюсь подключиться к сайту https, он выдает ошибку, потому что сайт использует самоподписанный сертификат. Я пытаюсь найти способ установить параметры завитка, чтобы игнорировать тот факт, что сертификат ssl является самоподписанным. Следуя инструкциям в https://github.com/FriendsOfPHP/Goutte, я попробовал следующий код:

    $this->client = new Client();
    $this->client->getClient()->setDefaultOption('config/curl/'.CURLOPT_SSL_VERIFYPEER, false);
    $this->client->getClient()->setDefaultOption('config/curl/'.CURLOPT_CERTINFO, false);

К сожалению, когда этот код выполняется, возникает следующая ошибка:

Обнаруживаемая неустранимая ошибка: аргумент 3, переданный в GuzzleHttp\Client::request(), должен иметь тип array, задано логическое значение

Не могу понять как настроить параметры. Как ожидается звонок? Любая помощь будет оценена.


person osantos    schedule 19.05.2016    source источник


Ответы (3)


Кстати, чтобы установить параметры завитка, похоже, что guzzle распознает ключ «завиток» как параметр конфигурации, который принимает массив значений конфигурации, связанных с завитком. Таким образом, эквивалент того, чего вы изначально пытались достичь, будет выглядеть следующим образом.

$client = new \Goutte\Client();

$guzzleClient = new \GuzzleHttp\Client(array(
    'curl' => array(
        CURLOPT_TIMEOUT => 60,
    ),
));
$client->setClient($guzzleClient);
$crawler = $client->request('GET', $my_url);

Не уверен, насколько хорошо это поддерживается, так как это нигде не указано в документах по глотанию (и, делая это таким образом, это выглядит так, как будто оно зависит от CURL, что, я думаю, не является целью жадности. Отсюда и общая запись конфигурации тайм-аута) .

person rohit ramani    schedule 27.07.2016

В итоге я сделал следующее:

$this->client->setClient(new GuzzleClient(['verify' => false]));

'verify' => false при запуске GuzzleClient не позволяет проверять сертификаты.

person osantos    schedule 23.09.2016

В последней версии Goutte (v4.0) работает только это.

Используйте этот интерфейс HttpClient:

use Symfony\Component\HttpClient\HttpClient;

Экземпляр Гутте.

$client = new \Goutte\Client(HttpClient::create(['verify_peer' => false]));
person Ariful Haque    schedule 18.09.2020