【发布时间】:2012-08-30 15:14:25
【问题描述】:
我正在尝试制作一个脚本,该脚本将在我每天访问的一些网站上运行,并从中获取最有趣的信息/统计数据。我想为此目的使用 curl,因为其中一些站点需要身份验证。一切都很好,直到我碰到了这个网站:rossnet.pl,它似乎是安全的,因为我根本无法验证自己的身份。
我想使用的表格可以在这里找到: https://www.rossnet.pl/rossnetlogin.aspx
在左侧,文字下方:“Mam konto w Rossnet.pl - Logowanie”。它似乎没有任何隐藏的输入字段,只有两个用于凭据的文本字段,称为: -“dnn$ctr1203$ViewLogin$txtUserLogin” - "dnn$ctr1203$ViewLogin$txtUserPass"
我正在使用下面显示的代码,但服务器返回的页面似乎完全没有发生任何事情(没有错误消息,看起来与我不发送任何 POST 数据时相同)。
有人知道可能出了什么问题吗?在下面的代码中,我输入了实际的帐户凭据,以便您能够测试脚本,如果您想帮助我。
在这里你可以看到下面的脚本是如何在我的服务器上工作的: http://kremuwa.netii.net/rossman/skrypt.php
<?php
$url = "https://www.rossnet.pl/rossnetlogin.aspx";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_COOKIEJAR, 'cookie.txt');
curl_setopt($ch, CURLOPT_COOKIEFILE, 'cookie.txt');
curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.2.13) Gecko/20101206 Ubuntu/10.10 (maverick) Firefox/3.6.13');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_HEADER, 1);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_REFERER, $url);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, 'dnn$ctr1203$ViewLogin$txtUserLogin=warzywko3000&dnn$ctr1203$ViewLogin$txtUserPass=password123');
$output = curl_exec($ch);
curl_close($ch);
echo $output;
?>
【问题讨论】:
-
我相信 cURL 正在尝试验证对等方的证书。尝试通过添加
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);禁用此功能 -
也许您先加载页面(方法 = GET),然后发布表单。
-
@njk - 不幸的是,我不这么认为,因为在这种情况下 curl 可能应该返回一些错误消息,但它没有。第二件事是,在我发布这个问题之前,我将该选项设置为 false 并且没有任何区别。还是谢谢。
-
@Jack - 你能写更多关于你的概念的东西吗?也许一些代码或有用的链接?不一定在评论中:)。