Как смоделировать реальный запрос из браузера с помощью CURL?

Я пытаюсь смоделировать реальный запрос браузера, используя CURL с прокси ротацией, я искал об этом, но ни один из ответов не сработал.

Вот код:

$url= 'https://www.stubhub.com/';
$proxy = '1.10.185.133:30207';
$userAgent = 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36';

$curl = curl_init();
curl_setopt( $curl, CURLOPT_URL, trim($url) );
curl_setopt($curl, CURLOPT_REFERER, trim($url));
curl_setopt( $curl, CURLOPT_RETURNTRANSFER, TRUE );
curl_setopt( $curl, CURLOPT_FOLLOWLOCATION, TRUE );
curl_setopt( $curl, CURLOPT_CONNECTTIMEOUT, 0 );
curl_setopt( $curl, CURLOPT_TIMEOUT, 0 );
curl_setopt( $curl, CURLOPT_AUTOREFERER, TRUE );
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, FALSE);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE);
$cacert='C:/xampp/htdocs/cacert.pem';
curl_setopt( $curl, CURLOPT_CAINFO, $cacert );
curl_setopt($curl, CURLOPT_COOKIEFILE,__DIR__."/cookies.txt");
curl_setopt ($curl, CURLOPT_COOKIEJAR, dirname(__FILE__) . '/cookies.txt');
curl_setopt($curl, CURLOPT_MAXREDIRS, 5);
curl_setopt( $curl, CURLOPT_USERAGENT, $userAgent );

//Headers
$header = array();
$header[] = "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8";
$header[] = "Accept-Language: cs,en-US;q=0.7,en;q=0.3";
$header[] = "Accept-Encoding: utf-8";
$header[] = "Connection: keep-alive";
$header[] = "Host: www.gumtree.com";
$header[] = "Origin: https://www.stubhub.com";
$header[] = "Referer: https://www.stubhub.com";

curl_setopt( $curl, CURLOPT_HEADER, $header );
curl_setopt($curl, CURLOPT_PROXYTYPE, CURLPROXY_HTTP);
curl_setopt($curl, CURLOPT_HTTPPROXYTUNNEL, TRUE);
curl_setopt($curl, CURLOPT_PROXY, $proxy);
curl_setopt($curl, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_1);
$data = curl_exec( $curl );
$info = curl_getinfo( $curl );
$error = curl_error( $curl );

echo '<pre>';
print_r($all);
echo '</pre>';

Вот что я получаю, когда запускаю скрипт:

Array
(
[data] => HTTP/1.1 200 OK

HTTP/1.0 405 Method Not Allowed
Server: nginx
Content-Type: text/html; charset=UTF-8
Accept-Ranges: bytes
Expires: Thu, 01 Jan 1970 00:00:01 GMT
Cache-Control: private, no-cache, no-store, must-revalidate
Surrogate-Control: no-store, bypass-cache
Content-Length: 9411
X-EdgeConnect-MidMile-RTT: 203
X-EdgeConnect-Origin-MEX-Latency: 24
Date: Sat, 03 Nov 2018 17:15:56 GMT
Connection: close
Strict-Transport-Security: max-age=31536000; includeSubDomains

[info] => Array
(
[url] => https://www.stubhub.com/
[content_type] => text/html; charset=UTF-8
[http_code] => 405
[header_size] => 487
[request_size] => 608
[filetime] => -1
[ssl_verify_result] => 0
[redirect_count] => 0
[total_time] => 38.484
[namelookup_time] => 0
[connect_time] => 2.219
[pretransfer_time] => 17.062
[size_upload] => 0
[size_download] => 9411
[speed_download] => 244
[speed_upload] => 0
[download_content_length] => 9411
[upload_content_length] => -1
[starttransfer_time] => 23.859
[redirect_time] => 0
[redirect_url] =>
[primary_ip] => 1.10.186.132
[certinfo] => Array
(
)

[primary_port] => 42150
[local_ip] => 192.168.1.25
[local_port] => 59320
)

[error] =>
)

Как и рекапча, как говорится:

Due to high volume of activity from your computer, our anti-robot software has blocked your access to stubhub.com. Please solve the puzzle below and you will immediately regain access.

Когда я захожу на сайт с помощью любого браузера, веб-сайт отображается.

Но с приведенным выше сценарием, это не так.

Так что же мне не хватает, чтобы сделать запрос curl реальным запросом браузера и не быть обнаруженным как бот?

Или, если есть API / библиотека, которая может это сделать, пожалуйста, укажите это.

Будет ли Guzzle или аналогичное решить эту проблему?

0

Решение

«Так чего же мне не хватает, чтобы сделать запрос curl настоящим запросом браузера»

Я предполагаю, что они используют простую проверку cookie. Там являются более сложные методы, которые позволяют распознавать автоматизацию, такую ​​как cURL, с высокой степенью надежности, особенно в сочетании со списками прокси-IP-адресов или IP-адресов известных устройств.

Ваш первый шаг — перехватить исходящий запрос браузера, используя pcap или что-то подобное, а затем попытайтесь повторить его, используя cURL.

Еще одна простая вещь, чтобы проверить, была ли ваша банка печенья засолена каким-то контрольным сигналом. Я тоже так обычно делаю, так как большинство сценариев в Интернете просто копируют и не уделяют много внимания этим деталям.

То, что наверняка заставит вас отскочить от любой из моих систем, это то, что вы отправляете реферера, но вы, похоже, на самом деле не подключились к первой странице. Вы практически говорите «Хорошо встретились снова» серверу, который видит вас впервые. Возможно, вы сохранили cookie-файл от этой первой встречи, и теперь этот cookie был признан недействительным (фактически помечен как «злой») каким-либо другим действием. По крайней мере, в начале, всегда повторяйте последовательность посещений с чистого листа.

Вы можете попробовать и адаптировать этот ответ, также на основе cURL. Всегда проверяйте фактический трафик, используя прокси-сервер MitM SSL-декодирования.

Теперь реальный ответ — что вам нужно эта информация за? Вы можете получить это где-нибудь еще? Можете ли вы попросить об этом явно, возможно, достичь соглашения с исходным сайтом?

0

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector