PHP+cURL:Error:状态信息对此页面无效,可能已损坏。

PHP+cURL:Error:状态信息对此页面无效,可能已损坏。,php,curl,captcha,Php,Curl,Captcha,我尝试登录到 https://reg.viatoll.pl/PreLogin.aspx?language=po 卷曲的。关于错误,我应该得到错误验证码-波兰语:Nieprawidlowy kod weryfikacyjny,但我得到 Error: The state information is invalid for this page and might be corrupted. System.Web at System.Web.UI.ViewStateException.ThrowEr

我尝试登录到

https://reg.viatoll.pl/PreLogin.aspx?language=po
卷曲的。关于错误,我应该得到错误验证码-波兰语:Nieprawidlowy kod weryfikacyjny,但我得到

Error: The state information is invalid for this page and might be corrupted. System.Web at System.Web.UI.ViewStateException.ThrowError(Exception inner, String persistedState, String errorPageMessage, Boolean macValidationError) at...
我不知道我做错了什么。我通知您这是一个带有视图状态和事件验证的东西。如果我在Chrome中打开此页面,在发布数据之前在_uviewstate或_ueventvalidation中更改某个内容,我会得到相同的错误。 我的代码如下:

<?php

require_once('simple_html_dom.php'); // http://simplehtmldom.sourceforge.net/manual.htm     

$cookie="cookie2.txt";

$url = 'https://reg.viatoll.pl/PreLogin.aspx?language=po';
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,$url);  
curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.2) Gecko/20070219 Firefox/2.0.0.2');
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_COOKIE, 1);
curl_setopt($ch, CURLOPT_COOKIEJAR,$cookie);
curl_setopt($ch, CURLOPT_COOKIEFILE,$cookie);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER,1); 
curl_setopt ($ch, CURLOPT_REFERER, $url);
$result = curl_exec($ch);  
$html = str_get_html($result); 
$vs = $html->find('#__VIEWSTATE')[0]->value;
$ev = $html->find('#__EVENTVALIDATION')[0]->value;


// sending data
$txtVerificationCode='asdasdas';
$txtUserName="UserName"; 
$txtPassword="Haselko123"; 
$url='https://reg.viatoll.pl/PreLogin.aspx?language=po';

$postdata = "__LASTFOCUS=&__EVENTTARGET=btnLogin&__EVENTARGUMENT=&__VIEWSTATE=".$vs."&__EVENTVALIDATION=".$ev."&txtUserName=".$txtUserName."&txtPassword=".$txtPassword."&txtVerificationCode=".$txtVerificationCode;

$ch = curl_init(); 
curl_setopt ($ch, CURLOPT_URL, $url); 
curl_setopt ($ch, CURLOPT_SSL_VERIFYPEER, FALSE); 
curl_setopt ($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.6) Gecko/20070725 Firefox/2.0.0.6"); 
curl_setopt ($ch, CURLOPT_TIMEOUT, 60); 
curl_setopt ($ch, CURLOPT_FOLLOWLOCATION, 1); 
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1); 
curl_setopt ($ch, CURLOPT_COOKIEJAR, $cookie); 
curl_setopt ($ch, CURLOPT_COOKIEFILE, $cookie);  // <-- add this line
curl_setopt ($ch, CURLOPT_REFERER, $url); 
curl_setopt ($ch, CURLOPT_POSTFIELDS, $postdata); 
curl_setopt ($ch, CURLOPT_POST, 1); 
$result = curl_exec ($ch); 

echo "POST: " . $postdata . "<br><br><br>";

echo $result;


?>

请任何人帮助:

txtVerificationCode是验证码。你打算如何用cURL绕过这个问题?我想创建一个包含以下字段的站点:login、password和captcha。在我通过cURL登录后,它将创建会话和cookie。我需要它通过CRON每隔5分钟检查viatoll.pl上的余额,所以如果它设置了COOKIE,我不需要每次都登录。但主要的问题是,我得到了一个错误,但不是验证码错误的信息。如果他们想让机器人能够登录,他们本来就不会用验证码来保护这一点……问问他们是否提供了你想要的API。这是波兰网站,它的工作很糟糕。没有人知道他们为什么使用验证码。每个人都为此生气。可能这个网站是由一个学生创建的,他想向大家展示他对安全和网络设计的了解。我不相信他们有API。他们承诺在余额不足时发送短信和电子邮件,但他们没有。所以我想自己检查一下。@zgrzewka除非你已经成功地自动解决了验证码问题,否则你将无法登录。因此,在那之前,找出错误消息的错误是没有任何意义的。