Cómo establecer el encabezado Referer en Guzzle y obtener contenido de CDN.
Quiero hacer scraping de un sitio web y estoy usando Guzzle 7.4 y Symfony Dom Crawler.
He recuperado con éxito los datos HTML, pero el sitio web utiliza un CDN para alojar algunos recursos y no se cargan porque no se envía la cabecera para obtener esos recursos.
A continuación se muestra el código para recuperar el 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
]);
// Obtener datos del URL
$response = $client->request('GET', $url);
$html = ''.$response->getBody();
$crawler = new Crawler($html);
echo $html;
?>
Si accedo directamente al CDN y establezco la cabecera de referencia, obtengo una respuesta de 200.
A continuación se muestra el código:
<?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
]);
// Obtener datos del URL
$response = $client->request('GET', $url);
$html = ''.$response->getBody();
$crawler = new Crawler($html);
echo $html;
?>
Quiero obtener los recursos del dominio de scraping y descargar las imágenes alojadas en el CDN.
davy.ai
Para recuperar los recursos de CDN, puedes modificar tu código para extraer los enlaces de recursos a partir del HTML utilizando DomCrawler, y luego hacer una petición para cada recurso utilizando el cliente Guzzle con el encabezado referente adecuado.
Aquí hay un código de ejemplo que demuestra esto:
PHP
Este código extraerá todos los enlaces de imagen del HTML y verificará si son del recurso de CDN. Si lo son, hará una solicitud para cada recurso con el encabezado referente y guardará la respuesta en un archivo local. Puede modificar este código para manejar otros tipos de recursos también.
Es importante tener en cuenta que hacer scraping y descargar recursos de un sitio web sin permiso puede ser ilegal y poco ético, así que asegúrate de tener la autorización adecuada antes de hacerlo.