@aljo222
В процессе обучения веб-разработке

Почему неправильно парсится страница с get-запросом?

Здравствуйте!
Есть страница одного стороннего сайта, на которой есть форма поиска с методом get.
Если в браузере просто вбить адрес страницы с нужными get-параметрами, то сразу выйдет страница с результатами.

Но почему-то при попытке спарсить точно такой же урл с помощью simple_html_dom, я получаю страницу, на которой вместо результатов отображается сообщение о том, что ничего не найдено.

По какой причине это может быть? url 100% верный, со скрипта его скопировал, вставил в браузерную строку и все норм показывает.
  • Вопрос задан
  • 117 просмотров
Решения вопроса 1
@zkrvndm
Софт для автоматизации
Вам нужно при загрузке html-кода имитировать браузер, а именно, как минимум передавать User-Agent, а как максимум все заголовки, что обычно отсылает браузер.

Пример загрузки страницы с имитацией браузера:
spoiler
<?php

// Указываем тип документа и кодировку:
header('Content-Type: text/html; charset=utf-8');

// Включаем отображение ошибок:

ini_set('error_reporting', E_ALL);
ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);

// Адрес для парсинга:
$url = 'https://w8shipping.com/tracking/?vin=3GNAXJEV5JS538785&searchAuto=Search';

// Создаём новый сеанс:
$curl = curl_init();

// Указываем адрес целевой страницы:
curl_setopt($curl, CURLOPT_URL, $url);

// О отключаем проверку SSL сертификата:
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 0);

// Устанавливаем заголовки для имитации браузера:

$headers = [
	'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',
	'Accept-Encoding: gzip, deflate, br',
	'Accept-Language: ru-RU,ru;q=0.9',
	'Connection: keep-alive',
	'DNT: 1',
	'Host: ' . parse_url($url)['host'],
	'sec-ch-ua: "Chromium";v="94", ";Not A Brand";v="99"',
	'sec-ch-ua-mobile: ?0',
	'sec-ch-ua-platform: "Windows"',
	'Sec-Fetch-Dest: document',
	'Sec-Fetch-Mode: navigate',
	'Sec-Fetch-Site: none',
	'Sec-Fetch-User: ?1',
	'Upgrade-Insecure-Requests: 1',
	'User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.114 Safari/537.36'
];

curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);

// Разрешаем переадресацию:
curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1);

// Запрещаем прямой вывод результата запроса:
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);

// Делаем сам запрос:
$result = curl_exec($curl);

// Завершаем сеанс:
curl_close($curl);

// Смотрим результат:
echo $result;
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы