使用 php/guzzle 从 uri 获取 Json

Get Json with php/guzzle from uri

我正在执行 artisan 命令以获取此网页中的 json: https://www.arera.it/it/atti-18.json

我正在使用 php/guzzle 库:

$client = new \GuzzleHttp\Client();
$crawler = $client->request('GET', 'https://www.arera.it/it/atti-18.json');
echo $res->getBody();

但是我在输出控制台中收到了这个:

<html><head><title>Request Rejected</title></head><body>The requested URL was rejected. Please consult with your administrator.<br><br>Your support ID is: 5887289226846801693</body></html>

而不是 json。有人可以帮助我吗?我正在使用 laravel 5.4 和最新版本的 guzzle。

此类消息可以由保护服务器免遭误用的过滤器生成。 此类封禁通常会在一天后到期,因此您可以稍后再试。

好的,我已经解决了我的问题。在我的客户请求中,我添加了 headers 数组,就像在 guzzle 文档 http://docs.guzzlephp.org/en/stable/request-options.html#headers 中一样。所以我的客户要求是:

$res = $client->request('GET', 'https://www.arera.it/it/atti-18.json',[
        'headers' => [
            'User-Agent' => 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.110 Safari/537.36',
            'accept' => 'image/webp,image/apng,image/*,*/*;q=0.8'
            ],
        'debug' => 'true',
    ]);

也许它可以帮助其他人。谢谢大家的回复。