Wie behebe ich einen 403 Forbidden Error beim Scraping einer Website mit PHP Simple HTML DOM Parser?Php

PHP-Programmierer chatten hier
Guest
 Wie behebe ich einen 403 Forbidden Error beim Scraping einer Website mit PHP Simple HTML DOM Parser?

Post by Guest »

Ich versuche, mit dem PHP Simple HTML DOM Parser Daten von einer Website zu extrahieren. Allerdings erhalte ich jedes Mal, wenn ich versuche, den HTML-Inhalt der Seite abzurufen, den Fehler 403 Forbidden.
Zur Fehlerbehebung habe ich versucht, mit Guzzle benutzerdefinierte Header, einschließlich eines User-Agent, festzulegen PHP zur Nachahmung einer Browseranfrage. Trotzdem besteht das Problem weiterhin und ich kann den Inhalt der Webseite nicht abrufen.

Code: Select all

// using simple dom parser
require '../simple_html_dom.php';

$html = file_get_html('https://www.mywebsite.com');
$title = $html->find('title', 0);
$image = $html->find('img', 0);

echo $title->plaintext."
\n";
echo $image->src;

Code: Select all

// using guzzle
require '../../vendor/autoload.php';

use GuzzleHttp\Client;

$url = "https://www.mywebsite.com";
$client = new Client();

try {
$response = $client->request('GET', $url, [
'headers' => [
'User-Agent' => 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36',
'Accept-Language' => 'en-US,en;q=0.9',
'Accept-Encoding' => 'gzip, deflate, br',
'accept' => 'text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9',
'Referer' => 'https://www.mywebsite.com',
]
]);

if ($response->getStatusCode() === 200) {
$html = $response->getBody()->getContents();
echo "Fetched HTML (first 500 characters):\n" . substr($html, 0, 500) . "\n\n";

// Continue with DOM parsing...
} else {
echo "Failed to fetch the URL. HTTP Status Code: " . $response->getStatusCode() . "\n";
}
} catch (Exception $e) {
echo "An error occurred: " . $e->getMessage() . "\n";
}
Ich vermute, dass der Server über zusätzliche Mechanismen wie IP-Blockierung, Anti-Bot-Schutz oder Cookies verfügt, die den 403-Fehler verursachen.
  • Gibt es andere Header oder Konfigurationen, die ich einbeziehen sollte, um
    den 403 Forbidden-Fehler zu umgehen?
  • Gibt es einen alternativen Ansatz oder eine alternative Bibliothek, die möglicherweise besser funktioniert
    zum Scrapen von Websites damit Einschränkungen?
Jede Anleitung zur Lösung dieses Problems wäre sehr dankbar!

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post