Задать вопрос
dklight
@dklight
php кодер - level 2.5

Как прикинуться браузером и скачать страницу?

Собственно есть код, хочу спарсить 1 страницу, но упорно не получается:

$cookie_jar = Yii::$app->getBasePath() . '/web/_ssuper_cccoookkie.txt';
//echo $cookie_jar;

$c = curl_init();
$url = Yii::$app->params['parse2_siteUrl']; // https://technopoint.ru/catalog/17a89a0416404e77/materinskie-platy/       
curl_setopt($c, CURLOPT_URL, $url);
curl_setopt($c, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.87 Safari/537.36");
curl_setopt($c, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($c, CURLINFO_HEADER_OUT,1);
curl_setopt($c, CURLOPT_HEADER,1);
$referer = 'https://technopoint.ru';
curl_setopt($c, CURLOPT_REFERER, $referer);
//curl_setopt($c, CURLOPT_NOBODY,1);

// #1
$cookie = 'PHPSESSID=cb29e0b7be713cef7f3fb98bf1dd1209;';
//curl_setopt($c, CURLOPT_COOKIE, $cookie);

curl_setopt($c, CURLOPT_FOLLOWLOCATION, true );
curl_setopt($c, CURLOPT_AUTOREFERER, true );
curl_setopt($c, CURLOPT_COOKIESESSION, true );
curl_setopt($c, CURLOPT_COOKIEJAR, $cookie_jar);
curl_setopt($c, CURLOPT_COOKIEFILE, $cookie_jar);
$cohh = [];
$cohh[] = 'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8';
// последующие 2 строки вызывают появление кракозябр
//$cohh[] = 'Accept-Encoding: gzip, deflate, br';
//$cohh[] = 'Accept-Language: ru,en-US;q=0.9,en;q=0.8';
$cohh[] = 'Cache-Control: max-age=0';
$cohh[] = 'Connection: keep-alive';
$cohh[] = 'Upgrade-Insecure-Requests: 1';
//$cohh[] = 'Cookie: PHPSESSID=eceeb02bb74949d27e02bfb7b932de4e; city_path=astrahan; path=/; domain=.technopoint.ru';

curl_setopt($c, CURLOPT_HTTPHEADER, $cohh);

curl_setopt($c, CURLOPT_VERBOSE,1);
$curl_fn = "curl_errors.txt";
$curl_log = fopen($curl_fn, 'w');
curl_setopt($c, CURLOPT_STDERR, $curl_log);

$page = curl_exec($c);
$curl_info = curl_getinfo($c);
echo $page;
echo Debug::d($curl_info['request_header'],'CURL_INFOOO');

curl_close($c);


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

З.Ы. Ручной способ - чтобы спарсить любую страницу с этого сайта, я открываю значение которое в $url с браузера, далее копирую вручную PHPSESSID. После того как один раз это скопировал, оно работает около 9-12 часов.
Но, это же несерьезно, делать это вручную
  • Вопрос задан
  • 469 просмотров
Подписаться 1 Простой 6 комментариев
Помогут разобраться в теме Все курсы
  • Skillbox
    Веб-разработчик на PHP
    9 месяцев
    Далее
  • Хекслет
    PHP-разработчик
    10 месяцев
    Далее
  • Нетология
    Веб-разработчик с нуля: профессия с выбором специализации
    14 месяцев
    Далее
Пригласить эксперта
Ответы на вопрос 1
@alexandrraizer
PHP developer
Скорей всего там генеряться куки с помощью js, можно раз обратиться к ресурсу через селениум получить куки, и уже с помощью них дергать нужные страницу курлом. Скажем 1тыс операций сделали заново получили куки и.т.д.
Ответ написан
Ваш ответ на вопрос

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

Похожие вопросы
FoodSoul Калининград
от 180 000 до 250 000 ₽
IT-Spirit Москва
от 230 000 до 320 000 ₽
от 200 000 до 290 000 ₽