如何在 Guzzle 中设置 referer Header 并获取 CDN 内容

How to set referer Header in Guzzle and get CDN Content

我想抓取一个网站,我正在使用 guzzle 7.4 和 Symfony Dom Crawler

我成功检索了 HTML 数据但是该网站正在使用 CDN 托管一些资源并且它们没有加载,因为没有发送 header 来获取这些资源

下面是代码检索html

<?php

require "vendor/autoload.php";

use Symfony\Component\DomCrawler\Crawler;

// Url
$url = 'scrapingdomain.com';
$headers = [
    'referer' => 'examplescrapingdomain.com'
];

$client = new \GuzzleHttp\Client([
    'headers' => $headers
]);

// go get the data from url
$response = $client->request('GET', $url);
$html =  ''.$response->getBody();
$crawler = new Crawler($html);

echo $html;

?>

如果我直接访问 CDN 并设置 referer header 我得到的响应是 200

代码下方

<?php

require "vendor/autoload.php";

use Symfony\Component\DomCrawler\Crawler;

// Url
$url = 'examplecdnresource.com/Images.png';
$headers = [
    'referer' => 'examplescrapingdomain.com'
];

$client = new \GuzzleHttp\Client([
    'headers' => $headers
]);

// go get the data from url
$response = $client->request('GET', $url);
$html =  ''.$response->getBody();
$crawler = new Crawler($html);

echo $html;

?>

我想获取 scrapdomain.com 获取资源并下载它拥有的 cdn 托管图像

要在已抓取的 html 中获取 CDN 托管内容,我需要做的就是使用 file_get_content 函数并设置 referer 流以下载没有内部 guzzle 的数据,因为我正在获取 css 和图片文件