Я пытаюсь очистить веб-сайт, используя curl и php. Теперь мне нужно войти, это не проблема.
Я вхожу в систему, используя файлы cookie, а затем перехожу к списку продуктов. Эти продукты просто печатаются с помощью php на их сайте. Так что не с javascript.
Но когда я использую curl, он говорит, что бренд/поиск не может быть найден (результаты не возвращены). Я сменил реферера и хоста.
Как они могли обнаружить это и есть ли способ «обойти» это? Я получил CSV-файл с их продуктами (получил от них), но не с количеством, ценой и описанием. Так что я хочу заполнить эту часть в себе.
Вот мой сценарий:
include('brands.php');
$request = array(
'username'=>'******',
'pass'=>'*********',
'submit'=>'',
'part-submit'=>'',
'referlink'=>'',
'remember'=>1
);
$agent = "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:29.0) Gecko/20100101 Firefox/29.0";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "http://www.website.com/");
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_COOKIESESSION, TRUE);
curl_setopt ($ch, CURLOPT_COOKIEJAR, 'cookie.txt');
curl_setopt ($ch, CURLOPT_COOKIEFILE, 'cookie.txt');
curl_setopt($ch, CURLOPT_USERAGENT, $agent);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($request));
$response = curl_exec($ch);
curl_close ($ch);
$ch = curl_init();
curl_setopt($ch, CURLOPT_VERBOSE, TRUE);
curl_setopt($ch, CURLOPT_URL, $array[$_GET['k']]."&rpp=100");
curl_setopt($ch, CURLINFO_HEADER_OUT, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Host: website.com'));
curl_setopt ($ch, CURLOPT_REFERER, "http://www.website.com/linecard.php");
curl_setopt($ch, CURLOPT_HEADER, true);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
//curl_setopt($ch, CURLOPT_FRESH_CONNECT, true);
curl_setopt($ch, CURLOPT_COOKIESESSION, TRUE);
curl_setopt ($ch, CURLOPT_COOKIEJAR, 'cookie.txt');
curl_setopt ($ch, CURLOPT_COOKIEFILE, 'cookie.txt');
curl_setopt($ch, CURLOPT_USERAGENT, $agent);
curl_setopt($ch, CURLOPT_POST, false);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
$response = curl_exec($ch);
var_dump(curl_getinfo($ch, CURLINFO_HEADER_OUT ));
$curl_errno = curl_errno($ch);
$curl_error = curl_error($ch);
curl_close($ch);
if ($curl_errno > 0) {
die("cURL Error ($curl_errno): $curl_error\n");
}
echo $response;
Заранее спасибо!
пс. удален с официального сайта, при необходимости предоставлю. за их безопасность и поиски в Google
CURLOPT_HTTPHEADER
для заголовкаHost
используетwebsite.com
безwww.
, но вашиURL
иReferer
[так в оригинале] имеют частьwww
. - person user2428118   schedule 11.06.2014