Eu estou trabalhando em um crowler web usando goutte(fabpot / goutte). Quando tento me conectar a um site https, ele gera um erro porque o site está usando um certificado autoassinado. Eu estou tentando encontrar o caminho para definir os parâmetros de onda para ignorar o fato de que o certificado ssl é auto-assinado. Seguindo as instruções em https://github.com/FriendsOfPHP/Goutte Eu tentei o seguinte código:
$this->client = new Client();
$this->client->getClient()->setDefaultOption("config/curl/".CURLOPT_SSL_VERIFYPEER, false);
$this->client->getClient()->setDefaultOption("config/curl/".CURLOPT_CERTINFO, false);
Infelizmente quando este código é executado, o seguinte erro é lançado:
Erro fatal capturável: o argumento 3 passado para GuzzleHttpClient :: request () deve ser do tipo array, dado booleano
Não consigo descobrir como configurar os parâmetros. Como a chamada é esperada? Qualquer ajuda será apreciada.
Respostas:
1 para resposta № 1Para definir as opções de curvas, parece queguzzle reconhece a chave "curl" como uma configuração, que recebe uma matriz de valores de configuração relacionados à curvatura. Então, o equivalente ao que você estava inicialmente tentando alcançar se pareceria com o seguinte
$client = new GoutteClient();
$guzzleClient = new GuzzleHttpClient(array(
"curl" => array(
CURLOPT_TIMEOUT => 60,
),
));
$client->setClient($guzzleClient);
$crawler = $client->request("GET", $my_url);
Não tenho certeza de como isso é bem suportado, já queIsso não é indicado em nenhum lugar nos documentos do Guzzle (e fazê-lo dessa maneira faz com que pareça dependente de CURL, o que eu acho que não é a intenção de engordar. Daí a entrada de configuração do tempo limite geral).
0 para resposta № 2
O que acabei fazendo é o seguinte:
$this->client->setClient(new GuzzleClient(["verify" => false]));
O "verify" => false ao iniciar o GuzzleClient faz com que ele não verifique os certificados.