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

时间:2015-01-26 10:43:53

标签: php curl captcha

我尝试登录

https://reg.viatoll.pl/PreLogin.aspx?language=po

使用CURL。出错时我应该得到"错误验证码" - 波兰语:" 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...

我不知道自己做错了什么。我通过__VIEWSTATE和__EVENTVALIDATION通知这是......如果我在Chrome中打开此页面并在发布数据之前更改__VIEWSTATE或__EVENTVALIDATION,我会收到相同的错误。 我的代码如下:

<?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;


?>

请任何人帮助:)

0 个答案:

没有答案