@BushaevDenis

Как имитировать браузер curl на aliexpress?

Как имитировать с помощью curl нормальный браузер с пользователем?
Начеркал я код
<?php
$cs = curl_init();
	$opt = array(CURLOPT_URL => 'https://ru.aliexpress.com/category/202003409/tops-tees.html?site=rus&g=y&SortType=total_tranpro_desc&needQuery=n&tag=',
				 CURLOPT_COOKIE => '',
				 CURLOPT_RETURNTRANSFER => true,
				 CURLOPT_HEADER => 0,
				 CURLOPT_COOKIESESSION => true,
				 CURLOPT_COOKIEFILE => $_SERVER['DOCUMENT_ROOT'].'/cookie.txt',
				 CURLOPT_REFERER => null,
				 CURLOPT_USERAGENT => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.99 Safari/537.36",
				 CURLOPT_TIMEOUT => 10,
				 CURLOPT_RETURNTRANSFER => 1,
				 CURLOPT_FOLLOWLOCATION => 1,
				);
	curl_setopt_array($cs, $opt);
	$out = curl_exec($cs);
	echo $out;
	curl_close($cs);
?>

Но после пятого-седьмого прогона - Али начинает пересылать на страницу авторизации. Помогает смена ip или просто подождать. Но для парсера это совсем не годится)
В файле cookie.txt лежат куки которые я вытащил из браузера.
Возможно ошибка там, ибо я так и не нашёл нормального мануала описывающего что должно быть именно в том файле.
55deac9e7de44e48af2b9b721132301b.png
  • Вопрос задан
  • 4298 просмотров
Пригласить эксперта
Ответы на вопрос 3
glebovgin
@glebovgin
Full Stack Web Developer
1. Браузер могут имитировать только headless-браузеры, например PhantomJS или CasperJS
2. Подставлять cookies так нельзя, используйте дополнительно еще директиву CURLOPT_COOKIEJAR с тем же значением $_SERVER['DOCUMENT_ROOT'].'/cookie.txt'
3. А вот CURLOPT_COOKIE в вашем случае надо убрать.
4. curl хорош в парсинге простых сайтов, которые не имеют защит от парсинга. Так что в случае с Aliexpress советую смотреть всё же пункт 1.
Ответ написан
Комментировать
daager
@daager
Попробуйте парсить мобильную версию сайта.
Может попробовать получить доступ к API?
NightmareJS удобная штука для эмуляции браузера и парсинга сайта.
Ответ написан
Комментировать
@tommy_13
откройте консоль, посмотрите, что отправляет браузер и посылайте те же данные
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы