为 fabpot/goutte 客户端设置 CURL 参数
Setting CURL Parameters for fabpot/goutte Client
我正在使用 goutte (fabpot/goutte) 开发网络爬虫。当我尝试连接到 https 站点时,它会抛出错误,因为该站点使用的是自签名证书。我试图找到设置 curl 参数以忽略 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);
不幸的是,执行此代码时会抛出以下错误:
可捕获的致命错误:传递给 GuzzleHttp\Client::request() 的参数 3 必须是数组类型,给定的布尔值
不知道如何设置参数。呼叫预期如何?任何帮助将不胜感激。
顺便设置 curl 选项,guzzle 似乎将键 "curl" 识别为配置设置,它接收与 curl 相关的配置值数组。因此,您最初尝试实现的等效内容如下所示
$client = new \Goutte\Client();
$guzzleClient = new \GuzzleHttp\Client(array(
'curl' => array(
CURLOPT_TIMEOUT => 60,
),
));
$client->setClient($guzzleClient);
$crawler = $client->request('GET', $my_url);
不确定它的支持程度,因为它没有在 guzzle 文档中的任何地方指出(并且这样做使它看起来依赖于 CURL,我认为这不是 guzzle 的意图。因此一般超时配置条目)。
我最后做了以下事情:
$this->client->setClient(new GuzzleClient(['verify' => false]));
启动 GuzzleClient 时 'verify' => false 使其无法验证证书。
在最新版本的 Goutte (v4.0) 中只有这个有效。
使用这个 HttpClient 接口:
use Symfony\Component\HttpClient\HttpClient;
痛风病实例。
$client = new \Goutte\Client(HttpClient::create(['verify_peer' => false]));
我正在使用 goutte (fabpot/goutte) 开发网络爬虫。当我尝试连接到 https 站点时,它会抛出错误,因为该站点使用的是自签名证书。我试图找到设置 curl 参数以忽略 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);
不幸的是,执行此代码时会抛出以下错误:
可捕获的致命错误:传递给 GuzzleHttp\Client::request() 的参数 3 必须是数组类型,给定的布尔值
不知道如何设置参数。呼叫预期如何?任何帮助将不胜感激。
顺便设置 curl 选项,guzzle 似乎将键 "curl" 识别为配置设置,它接收与 curl 相关的配置值数组。因此,您最初尝试实现的等效内容如下所示
$client = new \Goutte\Client();
$guzzleClient = new \GuzzleHttp\Client(array(
'curl' => array(
CURLOPT_TIMEOUT => 60,
),
));
$client->setClient($guzzleClient);
$crawler = $client->request('GET', $my_url);
不确定它的支持程度,因为它没有在 guzzle 文档中的任何地方指出(并且这样做使它看起来依赖于 CURL,我认为这不是 guzzle 的意图。因此一般超时配置条目)。
我最后做了以下事情:
$this->client->setClient(new GuzzleClient(['verify' => false]));
启动 GuzzleClient 时 'verify' => false 使其无法验证证书。
在最新版本的 Goutte (v4.0) 中只有这个有效。
使用这个 HttpClient 接口:
use Symfony\Component\HttpClient\HttpClient;
痛风病实例。
$client = new \Goutte\Client(HttpClient::create(['verify_peer' => false]));