Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Авторизоваться на сайте ASP методом POST. Возможно ли это?
 
 автор: restauto   (29.04.2009 в 16:30)   письмо автору
 
 

Здравствуйте!
Вопрос следующий: Есть сайт (работает на ASP.NET) мне необходимо авторизоваться на нем методом POST и получить определенную инфу. Мне товарищ сказал что это в принципе не возможно!!! О_о Пишу на PHP. Отправляю POST методом __VIEWSTATE, login и pass... но вылетает ошибка, такая же как при ошибочном __VIEWSTATE. Какие у вас есть мнения на этот счет?

  Ответить  
 
 автор: DEM   (29.04.2009 в 16:57)   письмо автору
 
   для: restauto   (29.04.2009 в 16:30)
 

порпобуйте использовать cURL (тут на форуме о нём уже неоднократно писали, посмотриет в поиске), в принципе он должен помочь ;)

  Ответить  
 
 автор: restauto   (29.04.2009 в 17:52)   письмо автору
 
   для: DEM   (29.04.2009 в 16:57)
 

Сервак не поддерживает cURL...

  Ответить  
 
 автор: root   (29.04.2009 в 18:08)   письмо автору
 
   для: restauto   (29.04.2009 в 16:30)
 

как минимум нужно ещё запостить __EVENTTARGET и __EVENTARGUMENT.
Посмотрите в Firebug'e или в HttpWatch что именно на сервер постится.

  Ответить  
 
 автор: restauto   (29.04.2009 в 18:18)   письмо автору
 
   для: 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=

  Ответить  
 
 автор: Root   (29.04.2009 в 18:30)   письмо автору
 
   для: restauto   (29.04.2009 в 18:18)
 

loginControl:btnLogin забыли.
К этой кнопке, очевидно, привязан обработчик события Click.

  Ответить  
 
 автор: restauto   (29.04.2009 в 20:46)   письмо автору
 
   для: 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;

  Ответить  
 
 автор: cheops   (02.05.2009 в 18:38)   письмо автору
 
   для: restauto   (29.04.2009 в 16:30)
 

Если браузер может авторизоваться, может и скрипт.

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования