Laravel&PHP使用Goutte不校验SSL证书

前言:

Goutte是一个抓取网站数据的 PHP 库。它提供了一个优雅的 API,这使得从远程页面上选择特定元素变得简单。

一、错误分析:

在请求https网站时,会出现以下错误:

​ SSL peer certificate or SSH remote key was not OK

直译过来就是:SSL对等证书或SSH远程密钥不正常。其实就是要对curl设置不验证证书和hosts。在curl设置如下:

curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);

 但是在Laravel或PHP中调用Goutte是直接new一个类出来的,无法直接设置curl。

use Goutte\Client

$client = new Client();
$client->request('GET', $url);

二、问题解决

通过去官方github 查看,有以下描述

如果需要使用自己的 HTTP 设置,可以创建一个 HttpClient 实例并将其传递给 Goutte。例如,要添加 60 秒的请求超时:

use Goutte\Client;
use Symfony\Component\HttpClient\HttpClient;

$client = new Client(HttpClient::create([
    'timeout' => 60
]));

那想要设置CURLOPT_SSL_VERIFYPEER和CURLOPT_SSL_VERIFYHOST如何处理呢?参数如下

use Goutte\Client;
use Symfony\Component\HttpClient\HttpClient;

$client = new Client(HttpClient::create([
    'timeout' => 60
    'verify_peer' => false,
    'verify_host' => false,
]));

如果需要查看其他HTTP设置,请看symfony文档:

Framework Configuration Reference (FrameworkBundle) (Symfony Docs)https://symfony.com/doc/current/reference/configuration/framework.html#reference-http-client

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值