Для устранения неполадок я попытался установить собственные заголовки, включая User-Agent, с помощью Guzzle. PHP для имитации запроса браузера. Несмотря на это, проблема сохраняется, и я не могу получить содержимое веб-страницы.
Код: Выделить всё
// 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;
Код: Выделить всё
// 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";
}
- Есть ли другие заголовки или конфигурации, которые мне следует включить, чтобы обойти
ошибку 403 Forbidden? - Есть ли альтернативный подход или библиотека, которая могла бы работать лучше
для парсинга веб-сайтов с помощью таких ограничения?
Подробнее здесь: https://stackoverflow.com/questions/793 ... -simple-ht