Яндекс.Маркет + Curl = 403 доступ запрещён

LEOnidUKG
На сайте с 25.11.2006
Offline
1723
393

Интересный случай на локалке. 

Берём простой код CURL:

<?

function curl_gets($url){


$headers[]='Accept:';

$headers[]='Connection: Close';

$headers[]='Host: market.yandex.ru';

  $ch = curl_init();

  curl_setopt($ch, CURLOPT_URL, $url);

  curl_setopt($ch, CURLOPT_HTTPHEADER, $headers); 

  curl_setopt($ch, CURLOPT_HEADER, false);

  curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

  curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 30);

curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);

curl_setopt ($ch, CURLOPT_SSL_VERIFYPEER, false);

curl_setopt ($ch, CURLOPT_SSL_VERIFYHOST, false);

  $data = curl_exec($ch);

  curl_close($ch);

return $data;

}

echo curl_gets('https://market.yandex.ru/product--smartfon-xiaomi-mi-10-8-128gb-android-one/654293021?track=tabs');

Этот код выдаёт 403 Доступ к нашему сервису временно запрещён! В тот же момент, если подключаемся через сокеты, то всё нормально:

<?php

$fp = fsockopen("ssl://market.yandex.ru", 443, $errno, $errstr, 30);

if (!$fp) {

    echo "$errstr ($errno)<br />\n";

} else {

    $out = "GET /product--smartfon-xiaomi-mi-10-8-128gb-android-one/654293021?track=tabs HTTP/1.1\r\n";

    $out .= "Host: market.yandex.ru\r\n";

    $out .= "Connection: Close\r\n\r\n";

    fwrite($fp, $out);

    while (!feof($fp)) {

        echo fgets($fp, 128);

    }

    fclose($fp);

}

Никаких ошибок нет, Яндекс показывает страницу. Ок! Берём file_get_contents 

$arrContextOptions=array(

    "ssl"=>array(

        "verify_peer"=>false,

        "verify_peer_name"=>false,

    ),

);  

echo file_get_contents(' https://market.yandex.ru/product--smartfon-xiaomi-mi-10-8-128gb-android-one/654293021?track=tabs ', false, stream_context_create($arrContextOptions));

Тоже никаких проблем, но уже запрашивает каптчу. 

Но НИГДЕ кроме CURL не выдаёт 403 ошибку. Я проверил передаваемые заголовки, они одинаковы, что на CURL, что на сокетах, что на file_get_contents. Что я упускаю?

p.s. не надо только писать про добавление куков, юзерагента и т.д.


✅ Мой Телеграм канал по SEO, оптимизации сайтов и серверов: https://t.me/leonidukgLIVE ✅ Качественное и рабочее размещение SEO статей СНГ и Бурж: https://getmanylinks.ru/
LEOnidUKG
На сайте с 25.11.2006
Offline
1723
#1

Меняю версию на PHP 5.6 страница открывается без проблем.

Перевожу на PHP 7.4 403 ошибка. 

Это что за нафиг? :)

LEOnidUKG
На сайте с 25.11.2006
Offline
1723
#2

Короче:

curl_setopt($ch, CURLOPT_SSLVERSION, CURL_SSLVERSION_MAX_TLSv1_2);

И будет вам счастье. С какого перепуга Яндекс банит tslv1.3 только одним сисадминам известно. 

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий