Скручиваемость, не получаю ожидаемых данных - PullRequest
0 голосов
/ 13 мая 2011

Я пытаюсь подключиться к веб-сайту магазина покупок с помощью curl.

Когда http был подключен через CURL, я не получаю ожидаемого возврата данных, например пустую корзину (с html-данными).

Здесь код:

<?php
   $agents = 'Mozilla/5.0 (X11; U; Linux i686; en-US) AppleWebKit/534.16 (KHTML, like Gecko) Chrome/10.0.648.204 Safari/534.16';
   $cookiesPath = "c:/wamp/www/Order/cookies";

   $postArray['buy'] = "YTsdfjnsdjnfjsdnkjfnkjsdnfjknsdkfnksnkfn53534545=";
   $postData = http_build_query($postArray);

   $ch = curl_init();
   curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, true);
   curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 2);
   curl_setopt($ch, CURLOPT_HEADER, true);
   curl_setopt($ch, CURLOPT_USERAGENT, $agents);
   curl_setopt($ch, CURLOPT_ENCODING, 'gzip,deflate');
   curl_setopt($ch, CURLOPT_CAINFO, getcwd() . "\Entrust.netSecureServerCertificationAuthority.crt");
   curl_setopt($ch, CURLOPT_URL, "https://www.domain-site.com/checkout/checkout.php" );
   curl_setopt($ch, CURLOPT_POST, 1 );
   curl_setopt($ch, CURLOPT_POSTFIELDS, $postData); 
   curl_setopt($ch, CURLOPT_FOLLOWLOCATION, TRUE);
   curl_setopt($ch, CURLOPT_VERBOSE, TRUE);
   curl_setopt($ch, CURLOPT_COOKIEFILE, $cookiesPath . "/cookiefile.txt");
   curl_setopt($ch, CURLOPT_COOKIEJAR, $cookiesPath . "/cookiefile.txt");
   curl_setopt($ch, CURLOPT_COOKIE, session_name() . '=' . session_id());
   curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
   $postResult  = curl_exec($ch);
   echo $postResult;
?>

Файлы cookie:

www.domain-site.com FALSE   /   FALSE   0   SECURESESSID    e3psta9vbv4kribfi18jlqxxxx
www.domain-site.com FALSE   /checkout/  FALSE   13052850xx  basketStartTime 1305277xxx

Я не получаю ожидаемый результат HTML.

В Firefox с использованием Firebug, вот оноhttp запрос:

GET /checkout/checkout.php?buy=YTsdfjnsdjnfjsdnkjfnkjsdnfjknsdkfnksnkfn53534545= HTTP/1.1
Host: www.domain-site.com
User-Agent: Mozilla/5.0 (Windows NT 6.1; rv:2.0.1) Gecko/20100101 Firefox/4.0.1
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-gb,en;q=0.5
Accept-Encoding: gzip, deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 115
Connection: keep-alive
Cookie: basketStartTime=1305276911; whoson=853-1303405947712; __utma=1.1209994793.1298996427.1305226205.1305276974.7; __utmz=1.1305276974.7.4.utmcsr=exxxxportal.com|utmccn=(referral)|utmcmd=referral|utmcct=/index.php; SECURESESSID=835qpldx8f1qikueau3s9oxxxx; __utmb=1.1.10.1305276974; __utmc=1

HTML-данные возвращаются, как и ожидалось, с информацией о корзине.

1 Ответ

2 голосов
/ 13 мая 2011

Скорее всего, вы не можете просто повторно использовать куки из прошлого. Обычно они идентифицируют сеанс и время ожидания сеанса.

Вы должны (1) «перейти» на страницу входа в систему, (2) выполнить вход в систему и затем (3) выполнить покупку POST. И записывать и использовать куки на всех трех этапах.

Если это не сработает, удалите все куки с вашего браузера и запишите полный «ручной» сеанс, а затем убедитесь, что ваш curl-скрипт повторяет эту последовательность.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...