我试图远程登录网站。我已成功完成此操作,并且登录页面正常打开,我可以从中提取所有信息。问题是,当我点击任何链接时,网站会将我退出!之前该链接与我的域名相关,现在我已将其更改为网站域名,但问题仍然存在。我正在为您附上代码,以了解我是如何发送Cookie的。
我已经在网站中的另一个网址上执行了另一个curl_exec
,但该网站会将我注销!
<html>
<head>
<base href="http://example.com/" />
<body>
<?php
$username = $_POST["uname"];
$password = $_POST["pass"];
$fields = "username=" . $username . "&password=" . $password . "&Login.x=61&Login.y=15";
$ch=curl_init();
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_URL, 'http://www.SOMESITE.net/amizone/default.aspx');
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_COOKIEJAR, "ASPSESSIONIDSQADDRBQ=OCALKIGABGLPCJLKMGIKJLLF"); //I got this exact cookiename from LiveHTTPheaders (Firefox extension)
curl_setopt($ch, CURLOPT_COOKIEFILE, "ASPSESSIONIDSQADDRBQ=OCALKIGABGLPCJLKMGIKJLLF");
curl_setopt($ch, CURLOPT_COOKIESESSION, TRUE);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 1000 );
curl_setopt($ch, CURLOPT_TIMEOUT, 10000 );
curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.0.8) Gecko/20061025 Firefox/1.5.0.8' );
curl_setopt($ch, CURLOPT_AUTOREFERER, 1 );
curl_setopt ($ch, CURLOPT_REFERER, "http://www.example.com/");
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0 );
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0 );
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $fields);
ob_start(); //the issue with the script remains with/without ob_start/ob_end_clean
$raw_data=curl_exec($ch);
curl_setopt($ch, CURLOPT_POST, 0); //at this point im trying to get another page using curl. since i will not be using post i have set it to 0.
curl_setopt($ch, CURLOPT_URL, 'http:/site.net/amizone/WebForms/TimeTable/StudentTimeTableForWeek.aspx');
$ttable = curl_exec($ch);
ob_end_clean();
echo $ttable;
//curl_close($ch);
//$raw_data = preg_replace('/\s(1,)/',' ',$raw_data); //clean it up
//echo $raw_data;
//$raw_data = stripslashes($raw_data);
//$raw_data = explode("<strong>",$raw_data);
//2 3 and 4
//echo htmlentities($raw_data[4]);
?>
</body>
</html>
注意:我从'LiveHttpHeaders'获取了cookie名称,这是Firefox的扩展。我错过了什么?
答案 0 :(得分:1)
你在做什么与cookiejar和cookiefile?这些不是用于设置cookie,并且会话变量不应该是硬编码的,而是从第一次请求到ASP Web服务器获得。
您希望根据文档将cookiejar和cookiefile设置为值:
CURLOPT_COOKIEFILE 包含Cookie数据的文件的名称。 cookie文件可以是Netscape格式,也可以是纯HTTP格式 标头转储到文件中。
CURLOPT_COOKIEJAR 要发送的文件名 将句柄关闭时保存所有内部cookie,例如之后 致电curl_close。
因此,没有cookie数据,但是文件的路径。这样,会话cookie(和其他cookie)将被存储并用于连续的请求中。