страница очистки curl, не отображающая записи поиска (нет проблем с js/cookie)

Я пытаюсь очистить веб-сайт, используя 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


person Bram Hammer    schedule 03.06.2014    source источник
comment
В моей награде я установил vURL, я имел в виду cURL, конечно!   -  person Bram Hammer    schedule 10.06.2014
comment
Можете ли вы попытаться получить дополнительные результаты отладки, используя способы, описанные в этом ответе? Это может облегчить диагностику вашей проблемы. — Кроме того, можете ли вы указать заголовки шагов, которые вы предприняли для успешного выполнения поиска в браузере, и заголовки шагов, которые не удалось выполнить в cURL? Кроме того, я вижу, что CURLOPT_HTTPHEADER для заголовка Host использует website.com без www., но ваши URL и Referer [так в оригинале] имеют часть www.   -  person user2428118    schedule 11.06.2014
comment
Вам необходимо предоставить тестовый URL-адрес, тестовый логин и другие отсутствующие тестовые данные с вашим вопросом, в противном случае на него нельзя будет ответить, поскольку он не может быть воспроизведен. На моем компьютере у curl нет проблем с HTTP-запросами к веб-сайтам. Нет никакого волшебства, чтобы заставить его работать на вашем компьютере, просто технические детали, которые необходимо изучить.   -  person hakre    schedule 15.06.2014


Ответы (2)


не знаю...может глупость говорю...

в любом случае, URL-адрес заканчивается на /, а http_build_query создаст var=value&var2=value...

поэтому запрос будет таким: "http://www.website.com/var=value&var2=value< /а>

так неправильно....

URL-адрес должен быть http://www.website.com/search_page.php?

Хорошего дня

Антонио

person Antonio D'Angeo    schedule 17.06.2014

ответ на самом деле довольно прост. Мое соединение с сайтом закрывается при каждом запросе на завивание. Я этого не хочу, поэтому решение этой проблемы заключается в удалении curl_close ($ch); после входа на веб-сайт.

Дальше все работает нормально!

person Bram Hammer    schedule 21.11.2014