Таким образом, я взял весь заголовок своего браузера и вставил его в свой код, я все еще получаю тайм-аут. Может ли быть разница в другом месте, кроме массива $ header?
Дополнительные строки кода дали мне такой ответ, когда я попытался: «Примечание: неопределенный индекс: request_header»
Вот обновленный образец:
$useragent = 'User-Agent: Mozilla/5.0 (Windows NT 6.1; W…) Gecko/20100101 Firefox/57.0';
$header[] = 'Accept: text/html,application/xhtml+xm…plication/xml;q=0.9,*/*;q=0.8';
$header[] = 'Accept-Encoding: gzip, deflate, br';
$header[] = 'Accept-Language: en-US,en;q=0.5';
$header[] = 'Connection: keep-alive';
$header[] = 'Cookie: BUI=qkubv5up4ttnn38gyvkshqt8o5…11770704889&hd=1511770705073"';
$header[] = 'Host: www.bol.com';
$header[] = 'Upgrade-Insecure-Requests: 1';
$header[] = 'User-Agent: Mozilla/5.0 (Windows NT 6.1; W…) Gecko/20100101 Firefox/57.0';
$ch = curl_init();
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_URL, "https://bol.com" );
curl_setopt($ch, CURLOPT_USERAGENT, $useragent);
curl_setopt($ch, CURLOPT_HTTPHEADER, $header);
curl_setopt($ch, CURLOPT_AUTOREFERER, true);
curl_setopt($ch, CURLOPT_REFERER, 'http://www.google.com' );
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($ch, CURLOPT_VERBOSE, true ); // new
curl_setopt($ch, CURLOPT_ENCODING, ''); //''
curl_setopt($ch, CURLOPT_TIMEOUT, 20);curl_setopt($ch, CURLINFO_HEADER_OUT, true);
$pagedata = curl_exec($ch);
$info = curl_getinfo($ch);
var_dump($info['request_header']); // gives 'Notice: Undefined index: request_header'
.
.
—-> оригинальный вопрос
Итак, я уже несколько дней читаю ответы cUrl и собрал код ниже, который, как я думал, будет полностью эмулировать вызов браузера. Конечно, это работает, когда я запускаю его дома, но на работе, где я, вероятно, за какими-то стенами безопасности, я получаю тайм-аут соединения (вообще никакого ответа от сервера на URL) от всех вызовов https. Странно то, что те же самые URL-адреса, данные в окне браузера с одной и той же рабочей станции, работают каждый раз безупречно.
Итак, мой вопрос, с помощью приведенного ниже кода, как что-либо в моей сети может все еще обнаружить вызов, исходящий из curl, а не исходящий из моего реального браузера?
$ useragent = ‘Mozilla / 5.0 (Windows NT 5.1; rv: 31.0) Gecko / 20100101 Firefox / 31.0’;
$header[] = 'Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5';
$header[] = 'Cache-Control: max-age=0';
$header[] = 'Connection: keep-alive';
$header[] = 'Keep-Alive: 300';
$header[] = 'Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7';
$header[] = 'Accept-Language: en-us,en;q=0.5';
$header[] = ''; // 'Pragma: '; // browsers usually leave this blank.
$ch = curl_init();
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt($ch, CURLOPT_SSLVERSION, 3);
curl_setopt($ch, CURLOPT_URL, $url );
curl_setopt($ch, CURLOPT_USERAGENT, $useragent);
curl_setopt($ch, CURLOPT_HTTPHEADER, $header);
curl_setopt($ch, CURLOPT_AUTOREFERER, true);
curl_setopt($ch, CURLOPT_REFERER, 'http://www.google.com' );
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($ch, CURLOPT_VERBOSE, true ); // new
curl_setopt($ch, CURLOPT_ENCODING, ''); //''
curl_setopt($ch, CURLOPT_TIMEOUT, 20);
$pagedata = curl_exec($ch);
Как уже говорилось, в подробном сообщении указывается только тайм-аут на IP-адресе, нет ошибок, нет ответов от сервера на URL-адрес.
Задача ещё не решена.
Других решений пока нет …