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



Спустя 12 минут, 10 секунд (29.04.2009 - 15:37) waldicom написал(а):
Цитата
работает на ASP.NET

и
Цитата
Пишу на PHP


Это как?

Спустя 1 час, 26 минут, 38 секунд (29.04.2009 - 17:04) restauto написал(а):
Объясняю...

если просто создать форму - входит...
PHP
<form method="post" action="http://online.autodoc.ru/Web/Pages/LoginForm.aspx">
<
input type="text" name="__VIEWSTATE" value="dDwtMjAxOTY4OTk5Nzt0PDtsPGk8MT47aTwzPjtpPDQ+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 запрос никак не получается...
PHP
POST [URL=http://online.autodoc.ru/Web/Pages/LoginForm.aspx]http://online.autodoc.ru/Web/Pages/LoginForm.aspx[/URL] HTTP/1.1
Referer: [URL=http://online.autodoc.ru/Web/Pages/LoginForm.aspx]http://online.autodoc.ru/Web/Pages/LoginForm.aspx[/URL] 
User-AgentOpera/8.50 (Windows NT 5.1Uru)
Hostonline.autodoc.ru
Proxy
-Connectionclose
Content
-Typeapplication/x-www-form-urlencoded
Content
-Length11526

__VIEWSTATE
=dDwtMjAxOTY4OTk5Nzt0PDtsPGk8MT47aTwzPjtpPDQ+Oz47bDx0PDtsPGk8MT47PjtsPHQ8O2w8aTwwPjs+O2w8dDw7bDxpPDA
....длинный viewstate...
+
Oz47bDx0PHA8bDxpbm5lcmh0bWw7PjtsPFw8dGFibGUgY2VsbHNwYWN+FfotNo1c5K
&loginControl:txtLogin=
&
loginControl:txtPassword=


Спустя 20 минут, 38 секунд (29.04.2009 - 17:25) vasa_c написал(а):
POST http://online.autodoc.ru/Web/Pages/LoginForm.aspx
Здесь не нужен http и хост.

Поставьте сниффер, отправьте форму и посмотрите какие заголовки уходят

Спустя 2 часа, 19 минут, 48 секунд (29.04.2009 - 19:45) restauto написал(а):
Поставил... посмотрел...
Посмотрите мой код... мож я че не так делаю...

PHP
//БЕРУ viewstate и идентификатор сесии c формы входа
$socket=fsockopen('online.autodoc.ru',80,$errno,$errstr,60);
$query "GET [URL=http://online.autodoc.ru/Web/Pages/LoginForm.aspx]http://online.autodoc.ru/Web/Pages/LoginForm.aspx[/URL] HTTP/1.0\r\n\r\n";
//print "fsocketopen";
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 [URL=http://online.autodoc.ru/Web/Pages/LoginForm.aspx]http://online.autodoc.ru/Web/Pages/LoginForm.aspx[/URL] 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: [URL=http://online.autodoc.ru/Web/Pages/LoginForm.aspx\r\n"]http://online.autodoc.ru/Web/Pages/LoginFo...;r\n"[/URL].
"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";

//print $query;
$socket=fsockopen('online.autodoc.ru',80,$errno,$errstr,60);
//print "fsocketopen";
fwrite($socket,$query);
//print "fwrite";
$z="";
while(!
feof($socket)) {$z.=fgets($socket);}
fclose($socket);
echo 
$z;


Замечание: нарушение правила 2 п.5с "При оформлении сообщения с программным кодом используйте обрамляющие тэги."

Спустя 25 минут, 13 секунд (29.04.2009 - 20:10) vasa_c написал(а):
Вы делаете неправильно следующее:
1. Проигнорировали первый пункт из моего предыдущего сообщения.
2. Проигнорировали и второй пункт.
3. Надеетесь на то, что кто-то будет подробно разбираться в этом коде.
4. Замышляете что-то нехорошее на удалённом сайте.

Спустя 26 минут, 40 секунд (29.04.2009 - 20:36) restauto написал(а):
Нет, я пробовал и без Http c хостом - результат один и тот же...
то что кто то будет разбираться надеюсь... так как не могу выяснить причину того в чем неудача и он не такой и сложный...
еще раз повторю, чтоб не так громоздко...
переменные $session и $viewstate определены верно

/
PHP
/ФОРМИРУЮ POST запрос и отправляю...   
$post="__VIEWSTATE=".$viewstate."&loginControl:txtLogin=&loginControl:txtPassword=";
$query="POST [URL=http://online.autodoc.ru/Web/Pages/LoginForm.aspx]http://online.autodoc.ru/Web/Pages/LoginForm.aspx[/URL] 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: [URL=http://online.autodoc.ru/Web/Pages/LoginForm.aspx\r\n"]http://online.autodoc.ru/Web/Pages/LoginFo...;r\n"[/URL].
"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;


я все же склоняюсь к тому мнению что viewstate передается как то не правильно. Может потому что он очень длинный или изза сожержания пробелов?

Спустя 10 часов, 34 минуты, 14 секунд (30.04.2009 - 07:11) RealMan написал(а):
пробелы конечно надо кодировать, а так же кирилицу и все спец символы.
urlencode()
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.