卷曲,没有获得预期的页面数据

时间:2011-05-13 09:13:43

标签: php curl httpwebrequest

我正试图通过curl连接到购物软件网站。

当通过CURL连接http时,我没有得到预期的数据返回,它说空篮子(带有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;
?>

饼干:

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 个答案:

答案 0 :(得分:2)

很可能你不能只重复使用过去的cookie。它们通常会识别会话并且会话超时。

您应该(1)“浏览”登录页面,(2)进行登录,然后(3)进行购买POST。并在所有三个步骤中记录和使用cookie。

如果这不起作用,则清除浏览器中的所有Cookie并记录完整的“手动”会话,然后确保您的curl脚本重复该序列。