|
|
|
| Здравствуйте!
Вопрос следующий: Есть сайт (работает на ASP.NET) мне необходимо авторизоваться на нем методом POST и получить определенную инфу. Мне товарищ сказал что это в принципе не возможно!!! О_о Пишу на PHP. Отправляю POST методом __VIEWSTATE, login и pass... но вылетает ошибка, такая же как при ошибочном __VIEWSTATE. Какие у вас есть мнения на этот счет? | |
|
|
|
|
|
|
|
для: restauto
(29.04.2009 в 16:30)
| | порпобуйте использовать cURL (тут на форуме о нём уже неоднократно писали, посмотриет в поиске), в принципе он должен помочь ;) | |
|
|
|
|
|
|
|
для: DEM
(29.04.2009 в 16:57)
| | Сервак не поддерживает cURL... | |
|
|
|
|
|
|
|
для: restauto
(29.04.2009 в 16:30)
| | как минимум нужно ещё запостить __EVENTTARGET и __EVENTARGUMENT.
Посмотрите в Firebug'e или в HttpWatch что именно на сервер постится. | |
|
|
|
|
|
|
|
для: root
(29.04.2009 в 18:08)
| | попробую...
вот что еще скажу...
если просто создать форму - входит...
<form method="post" action="http://online.autodoc.ru/Web/Pages/LoginForm.aspx">
<input type="text" name="__VIEWSTATE" value="dDwtMjAxOTY4OTk5Nzt0PDtsPGk8MT47aTw zPjtpPDQ+Oz47bDx0PDtsPGk8MT47 ... динный набор символов .... FfotNo1c5K" />
<input name="loginControl:txtLogin" type="text" />
<input name="loginControl:txtPassword" type="password" />
<input type="submit" name="loginControl:btnLogin" value="Авторизоваться" />
<input type="submit" name="loginControl:btnGuestLogin" value="Гостевой вход" />
нажимаешь на гостевой вход и входит...
А вот POST запрос никак не получается...
POST http://online.autodoc.ru/Web/Pages/LoginForm.aspx HTTP/1.1
Referer: http://online.autodoc.ru/Web/Pages/LoginForm.aspx
User-Agent: Opera/8.50 (Windows NT 5.1; U; ru)
Host: online.autodoc.ru
Proxy-Connection: close
Content-Type: application/x-www-form-urlencoded
Content-Length: 11526
__VIEWSTATE=dDwtMjAxOTY4OTk5Nzt0PDtsPGk8MT47aTw zPjtpPDQ+Oz47bDx0PDtsPGk8MT47PjtsPHQ8O2w8aTw wPjs+O2w8dDw7bDxpPDA
....длинный viewstate...
+Oz47bDx0PHA8bDxpbm5lcmh0bWw7PjtsPFw 8dGFibGUgY2VsbHNwYWN+FfotNo1c5K
&loginControl:txtLogin=
&loginControl:txtPassword= | |
|
|
|
|
|
|
|
для: restauto
(29.04.2009 в 18:18)
| | loginControl:btnLogin забыли.
К этой кнопке, очевидно, привязан обработчик события Click. | |
|
|
|
|
|
|
|
для: Root
(29.04.2009 в 18:30)
| | Поставил... посмотрел...
Посмотрите мой код... мож я че не так делаю...
//БЕРУ viewstate и идентификатор сесии c формы входа
$socket=fsockopen('online.autodoc.ru',80,$errno,$errstr,60);
$query = "GET http://online.autodoc.ru/Web/Pages/LoginForm.aspx HTTP/1.0\r\n\r\n";
fwrite($socket,$query);
$s="";
$viewstate="";
while(!feof($socket)) {$s.=fgets($socket);}
$viewstate=stristr($s,"name=\"__VIEWSTATE\" value=\"");
$viewstate=substr($viewstate,26);
$viewstate=substr($viewstate,0,strpos($viewstate,"\""));
$session=stristr($s,"ASP.NET_SessionId=");
$session=substr($session,18);
$session=substr($session,0,strpos($session,";"));
//ФОРМИРУЮ POST запрос и отправляю...
$post="__VIEWSTATE=".$viewstate."&loginControl:txtLogin=&loginControl:txtPassword=";
$query="POST http://online.autodoc.ru/Web/Pages/LoginForm.aspx HTTP/1.1\r\n".
//это показал FireBug
"Host: online.autodoc.ru\r\n".
"User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.8.1.20) Gecko/20081217 Firefox/2.0.0.20\r\n".
"Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5\r\n".
"Accept-Language: ru-ru,ru;q=0.8,en-us;q=0.5,en;q=0.3\r\n".
"Accept-Encoding: gzip,deflate\r\n".
"Accept-Charset: windows-1251,utf-8;q=0.7,*;q=0.7\r\n".
"Connection:keep-alive\r\n".
"Keep-Alive: 300\r\n".
"Referer: http://online.autodoc.ru/Web/Pages/LoginForm.aspx\r\n".
"Cookie: _utmb=36050302; __utma=36050302.100615967.1241017538.1241020476.1241020825.6;
__utmz=36050302.1241017538.1.1.utmccn=(referral)|utmcsr=autodoc.ru|utmcct=/|utmcmd=referral;
ASP.NET_SessionId=".$session."; __utmc=36050302; CookieAutodocUserLogin=demo; CookieAutodocUserPassword=demo\r\n".
//это показал FireBug
"Content-Type: application/x-www-form-urlencoded\r\n".
"Content-Length: ".strlen($post)."\r\n\r\n".
$post."\r\n\r\n";
$socket=fsockopen('online.autodoc.ru',80,$errno,$errstr,60);
fwrite($socket,$query);
$z="";
while(!feof($socket)) {$z.=fgets($socket);}
fclose($socket);
echo $z; | |
|
|
|
|
|
|
|
для: restauto
(29.04.2009 в 16:30)
| | Если браузер может авторизоваться, может и скрипт. | |
|
|
|