php - 为 fabpot/goutte 客户端设置 CURL 参数

标签 php ssl curl goutte

我正在使用 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);

不幸的是,执行此代码时会抛出以下错误:

可捕获的 fatal error :传递给 GuzzleHttp\Client::request() 的参数 3 必须是数组类型,给定 bool 值

不知道如何设置参数。调用预期如何?任何帮助将不胜感激。

最佳答案

顺便说一句,要设置 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 的意图。因此一般超时配置项)。

关于php - 为 fabpot/goutte 客户端设置 CURL 参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37324500/

相关文章:

php - 从多个表中检索多行

php - 如何确定哪些脚本正在使用 fopen?

java - 由于 SSL 问题,无法使用 JDBC 连接到 Azure(基于连接字符串和提供的示例)

json - Cloudant NoSql Bluemix 内容类型错误 : bad_content_type

php - Paypal SDK 自适应支付列表中的未知密码 : TLSv1

php - 在更新数据库时如何使用 php pdo 添加自动 inreement

php - 更新 mysql 表中的第二个重复值?

curl - 在Vagrant设置脚本中下载文件时清除输出

android - 将应用程序中的自签名 SSL 证书列入白名单?

java - 如何配置 apache httpclient 4.5+ SSLContext 以使用带有自签名证书的双向 TLS 身份验证?