cURL връща 302 или 404, докато браузърът връща 200

Ticketa

Registered
Имам скрипт, който използва cURL, за да влезе в даден сайт и да прочете структурата и данните на даден сайт, но това наскоро спря да работи поради cURL заявки, връщащи 302's грешка и пренасочващи към страница, която връща грешка 404 (пък тя си работи през browser). Ако правя същите действия с браузър, няма пренасочвания, а само 200 OK.

Скрипта го ползвам за СЕО анализ на самите страници (скрипта анализира сайта направен от мен, връща ми данните "сдъвкани с препоръки ако има нещо да се оправя"). Единствено направих промяна в сайта като добавих един редирект за мулти езичност и от там ми се счупи "робота" за Сео анализ.

Проблемния ми скрипт:
Код:
<?php
ini_set("display_errors", "1"); error_reporting(E_ALL); 
function get_http_response_code($url, $timeout = 10) {
	$curl = curl_init();
	$options = [
		CURLOPT_URL => $url,
		CURLOPT_HEADER => 1,
		CURLOPT_RETURNTRANSFER => 1,
		CURLOPT_FOLLOWLOCATION => true,
		CURLOPT_USERAGENT => 'Mozilla/5.0 (Windows NT 6.2; WOW64; rv:17.0) Gecko/20100101 Firefox/17.0',
		CURLOPT_REFERER => 'https://google.com/',
		CURLOPT_AUTOREFERER => false,
		CURLOPT_TIMEOUT => $timeout,
	];
	
	curl_setopt_array($curl, $options);
	$data = curl_exec($curl);
	$headers = curl_getinfo($curl);
	curl_close($curl);
	return ( empty($headers['http_code']) || $headers['http_code'] != 200 ) ? false : true;
}
$url_encode = "https://saita.com";
if ( ! get_http_response_code( $url_encode ) ) {
    echo "Страницата не бе намерена";
}

Резултата, който ми връща с изк. команда: CURLOPT_FOLLOWLOCATION => false,
Array
(
=> https://saita.com/ [content...T_URI'], 1) ); exit; } break; }[/code]
 
ЕДИТ: Промених опциите като добавих бисквитки:

$tmpfname = dirname(__FILE__).'/cookie.txt';
$options = [
CURLOPT_URL => $url,
CURLOPT_HEADER => 1,
CURLOPT_RETURNTRANSFER => 1,
CURLOPT_FOLLOWLOCATION => true,
CURLOPT_USERAGENT => 'Mozilla/5.0 (Windows NT 6.2; WOW64; rv:17.0) Gecko/20100101 Firefox/17.0',
CURLOPT_REFERER => 'https://google.com/',
CURLOPT_AUTOREFERER => false,
#CURLOPT_SSL_VERIFYPEER => 0,
#CURLOPT_SSL_VERIFYHOST => 0,
CURLOPT_TIMEOUT => $timeout,
CURLOPT_VERBOSE => true,
CURLOPT_COOKIE => "lng=bg;",
CURLOPT_COOKIEJAR => $tmpfname,
CURLOPT_COOKIEFILE => $tmpfname,

];

Проблема е, че бисквитката lng=bg; е променлва (т.е. ако се промени кода ще се чупи cURL отново, дали има как първо да вземам lng бисквитката и тогава пак да го сканирам?

Сега с добавената (червения код) бисквитка работи успешно. Вече въпроса е да се вземе първо съществуващият език и да се "запамети бисквитката" при второто сканиране.
 
на тия въпроси е отговорено милион пъти със примери и линкове за референция..
това да чакаш наготово някой да ти го смели...
 

Горе