使用curl和PHP进行身份验证-神秘的安全性

使用curl和PHP进行身份验证-神秘的安全性,php,security,curl,login,Php,Security,Curl,Login,我正在尝试制作一个脚本,它将运行在我每天访问的一些网站上,并从中获取最有趣的信息/统计数据。我想为此使用curl,因为其中一些站点需要身份验证。一切都很好,直到我撞到了一个网站:rossnet.pl,它似乎有点安全,因为我根本无法验证自己 我想使用的表格可以在这里找到: 在左侧,文本下方:“Mam konto w Rossnet.pl-Logowanie”。它似乎没有任何隐藏的输入字段,只有两个凭证文本字段,称为: -“dnn$ctr1203$ViewLogin$txtUserLogin” -

我正在尝试制作一个脚本,它将运行在我每天访问的一些网站上,并从中获取最有趣的信息/统计数据。我想为此使用curl,因为其中一些站点需要身份验证。一切都很好,直到我撞到了一个网站:rossnet.pl,它似乎有点安全,因为我根本无法验证自己

我想使用的表格可以在这里找到:

在左侧,文本下方:“Mam konto w Rossnet.pl-Logowanie”。它似乎没有任何隐藏的输入字段,只有两个凭证文本字段,称为: -“dnn$ctr1203$ViewLogin$txtUserLogin” -“dnn$ctr1203$ViewLogin$txtUserPass”

我使用的代码如下所示,但服务器返回的页面似乎完全没有发生任何事情(没有错误消息,看起来与我不发送任何POST数据时的情况相同)

有人对可能的错误有线索吗?在下面的代码中,我输入了实际的帐户凭据,以便您能够测试脚本(如果您希望帮助我)

在这里,您可以看到下面的脚本如何在我的服务器上工作:


登录表单有时会受到挑战的保护,这些挑战会阻止您在不首先加载页面的情况下直接提交表单。我列出了一些可能会妨碍你的选择

一个选项是cookie挑战,它也是最容易处理的,只需加载页面(获取cookie)并将其与表单提交一起发送即可

另一个选择是一个隐藏的领域挑战;隐藏的表单字段中填充了质询代码,提交时也希望发送该值


我能想到的最后一个选择是涉及JavaScript的更困难的方法;页面将使用JavaScript加载质询字符串,可能会对其进行一点模糊处理,然后将其发送(通过隐藏表单字段或ajax请求)。

登录表单有时会受到质询的保护,这些质询会阻止您在不先加载页面的情况下直接提交表单。我列出了一些可能会妨碍你的选择

一个选项是cookie挑战,它也是最容易处理的,只需加载页面(获取cookie)并将其与表单提交一起发送即可

另一个选择是一个隐藏的领域挑战;隐藏的表单字段中填充了质询代码,提交时也希望发送该值


我能想到的最后一个选择是涉及JavaScript的更困难的方法;页面将使用JavaScript加载质询字符串,可能会对其进行一些模糊处理,然后发送(通过隐藏表单字段或ajax请求)。

我相信cURL正在尝试验证对等方的证书。尝试通过添加
curl\u setopt($ch,CURLOPT\u SSL\u VERIFYPEER,false)禁用此选项
也许您需要先加载页面(method=GET),然后发布表单。@njk-不幸的是,我不这么认为,因为在这种情况下,curl可能会返回一些错误消息,但它不会。第二件事是,在我发布这个问题之前,我已经将这个选项设置为false,这没有任何区别。无论如何,谢谢。@Jack-你能写一些关于你的概念的东西吗?也许是一些代码或有用的链接?不一定在注释中:)。我相信cURL正在尝试验证对等方的证书。尝试通过添加
curl\u setopt($ch,CURLOPT\u SSL\u VERIFYPEER,false)禁用此选项
也许您需要先加载页面(method=GET),然后发布表单。@njk-不幸的是,我不这么认为,因为在这种情况下,curl可能会返回一些错误消息,但它不会。第二件事是,在我发布这个问题之前,我已经将这个选项设置为false,这没有任何区别。无论如何,谢谢。@Jack-你能写一些关于你的概念的东西吗?也许是一些代码或有用的链接?不一定在注释中:)。
<?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;

?>