PHP/cURL如何获取请求Cookie


PHP/cURL how to get Request Cookies

Hy,

我有点问题。我的一个客户要求为一个用ASP构建的网站创建一个登录脚本。尽管我可以获取和使用响应Cookie,但我不能获取和使用请求Cookie。我试过了,但它们没有保存在我的cookie文件中。因此,我无法登录到该网站。其地址为http://www.itraceuk.co.uk/Default.asp?secure=signin

这是我目前使用的代码:

$ch4 = curl_init(); 
curl_setopt ($ch4, CURLOPT_URL, $posturl); 
curl_setopt($ch4, CURLOPT_HEADER, true);
curl_setopt ($ch4, CURLOPT_SSL_VERIFYPEER, false); 
curl_setopt ($ch4, CURLOPT_SSL_VERIFYHOST, false); 
curl_setopt ($ch4, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/38.0.2125.101 Safari/537.36"); 
curl_setopt ($ch4, CURLOPT_TIMEOUT, 60); 
curl_setopt ($ch4, CURLOPT_FOLLOWLOCATION, true); 
curl_setopt ($ch4, CURLOPT_RETURNTRANSFER, 1); 
curl_setopt ($ch4, CURLOPT_COOKIESESSION, 1);
curl_setopt ($ch4, CURLOPT_COOKIEJAR, $cookie2); 
curl_setopt ($ch4, CURLOPT_COOKIEFILE, $cookie2); 
curl_setopt ($ch4, CURLOPT_REFERER, 'http://www.itraceuk.co.uk/Default.asp?secure=signin'); 
$result4 = curl_exec ($ch4); 
curl_close($ch4);
<?php
$posturl = 'http://www.itraceuk.co.uk/Default.asp?secure=signin';
$cookie = __DIR__ . '/cookie.txt'; // file and folder must be writeable
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $posturl);
curl_setopt($ch, CURLOPT_HEADER, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13 ( .NET CLR 3.5.30729)");
curl_setopt($ch, CURLOPT_TIMEOUT, 60);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_COOKIESESSION, 1);
curl_setopt($ch, CURLOPT_COOKIEJAR, $cookie);
curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie);
curl_setopt($ch, CURLOPT_REFERER, 'http://www.itraceuk.co.uk/Default.asp?secure=signin');
$result = curl_exec($ch);
curl_close($ch);
var_dump($result);
var_dump(file_get_contents($cookie));

将cookie文件夹/文件权限设置为可由PHP和Server写入。

登录后重新使用cookie数据。

Curl使用正确的凭据发布到登录表单,使您登录并设置cookie(Curl CURLOPT_POSTFIELDS)。然后在第二个curl请求中重用这个cookie(这里的代码)。

有关HTTPS cURL登录的完整示例,请参阅:https://stackoverflow.com/a/10307956/1163786