Программно зайти на защищенный сайт
От: EugeneFrme Украина  
Дата: 06.03.06 17:41
Оценка:
Не знает ли кто как выполнить сабж?
т.е. нужно в запросе указать логин и пароль, чтобы не было стандарного окошка
с приглашением это все ввести. Програмлю я это все с использованием
MSHTML, Если не сложно, то запостите пару ссылок или MSHTML-код.

Есть идея юзать чтото вроде следующего:

<HTML>
<HEAD>
</HEAD>

<BODY onLoad='submitForm()'>

<form id=Form action="http://192.168.0.5:8080/manager/html" METHOD="POST" >
<input type="hidden" name="j_username" value="tomcat" >
<input type="hidden" name="j_password" value="tomcat" >
</form>

<script>
document.forms[0].submit();
</script>

</BODY>
</HTML>

но если выполнить JavaScript из MSHTML не составляет проблем,
то как загнать форму я не наю

Одним словом мож кто сталкивался?

Заранее благодарен.
Re: Программно зайти на защищенный сайт
От: Poirot Россия  
Дата: 07.03.06 10:34
Оценка:
Здравствуйте, EugeneFrme, Вы писали:

EF>Не знает ли кто как выполнить сабж?

EF>т.е. нужно в запросе указать логин и пароль, чтобы не было стандарного окошка
EF>с приглашением это все ввести. Програмлю я это все с использованием
EF>MSHTML, Если не сложно, то запостите пару ссылок или MSHTML-код.

EF>Есть идея юзать чтото вроде следующего:


EF><HTML>

EF><HEAD>
EF></HEAD>

EF><BODY onLoad='submitForm()'>


EF><form id=Form action="http://192.168.0.5:8080/manager/html" METHOD="POST" >

EF><input type="hidden" name="j_username" value="tomcat" >
EF><input type="hidden" name="j_password" value="tomcat" >
EF></form>

EF><script>

EF> document.forms[0].submit();
EF></script>

EF></BODY>

EF></HTML>

EF>но если выполнить JavaScript из MSHTML не составляет проблем,

EF>то как загнать форму я не наю

EF>Одним словом мож кто сталкивался?


EF>Заранее благодарен.

Я мб что-то не так понял, но а если просто правильно заполнить, в соответствии с типом авторизации сервера, заголовок HTTP запроса — Authorization?
Re: Программно зайти на защищенный сайт
От: algol Россия about:blank
Дата: 09.03.06 12:02
Оценка:
Здравствуйте, EugeneFrme, Вы писали:

EF><form id=Form action="http://192.168.0.5:8080/manager/html" METHOD="POST" >

EF><input type="hidden" name="j_username" value="tomcat" >
EF><input type="hidden" name="j_password" value="tomcat" >
EF></form>

Так здесь все написано. Нужно послать POST запрос по URL указанном в action и с параметрами j_username и j_password. В ответ будет получена кука, которую нужно передавать при последующих запросах.
А дальше все зависит от конкретного сайта и фантазии его разработчика. Если они задались целью избавиться от таких роботов на сайте, то перед отдачей реальной куки будут долго редиректить со страницы на страницу различными методами (включая скрипты), чтобы убедиться что это действительно браузер, а не робот.
Re[2]: Программно зайти на защищенный сайт
От: EugeneFrme Украина  
Дата: 09.03.06 12:11
Оценка:
Здравствуйте, algol, Вы писали:

A>Здравствуйте, EugeneFrme, Вы писали:


EF>><form id=Form action="http://192.168.0.5:8080/manager/html" METHOD="POST" >

EF>><input type="hidden" name="j_username" value="tomcat" >
EF>><input type="hidden" name="j_password" value="tomcat" >
EF>></form>

A>Так здесь все написано. Нужно послать POST запрос по URL указанном в action и с параметрами j_username и j_password. В ответ будет получена кука, которую нужно передавать при последующих запросах.

A>А дальше все зависит от конкретного сайта и фантазии его разработчика. Если они задались целью избавиться от таких роботов на сайте, то перед отдачей реальной куки будут долго редиректить со страницы на страницу различными методами (включая скрипты), чтобы убедиться что это действительно браузер, а не робот.

Спасибо за ответы, дело в том что я только учусь и поэтому сама логика подобных действий еще не очень ясна,
насколько я понимаю мне нужно в любом случае получить и распарсить ответ сервера, чтобы понять чего он хочет,
я сейчас хочу добиться этого через ActiveX объект "Microsoft.XMLHTTP". а там буду смотреть как можно понять логику приложения на сервере...
Re[2]: Программно зайти на защищенный сайт
От: EugeneFrme Украина  
Дата: 09.03.06 15:15
Оценка:
Здравствуйте, algol, Вы писали:

A>Здравствуйте, EugeneFrme, Вы писали:


EF>><form id=Form action="http://192.168.0.5:8080/manager/html" METHOD="POST" >

EF>><input type="hidden" name="j_username" value="tomcat" >
EF>><input type="hidden" name="j_password" value="tomcat" >
EF>></form>

A>Так здесь все написано. Нужно послать POST запрос по URL указанном в action и с параметрами j_username и j_password. В ответ будет получена кука, которую нужно передавать при последующих запросах.

A>А дальше все зависит от конкретного сайта и фантазии его разработчика. Если они задались целью избавиться от таких роботов на сайте, то перед отдачей реальной куки будут долго редиректить со страницы на страницу различными методами (включая скрипты), чтобы убедиться что это действительно браузер, а не робот.

И еще вопрос в догонку, как перехватить эту куку?
Заранее благодарен за ответ.
Re[3]: Программно зайти на защищенный сайт
От: algol Россия about:blank
Дата: 09.03.06 15:27
Оценка:
Здравствуйте, EugeneFrme, Вы писали:

EF>И еще вопрос в догонку, как перехватить эту куку?


Если пользоваться функциями WinInet и не установлен флаг INTERNET_FLAG_NO_COOKIES, то ничего делать не надо. Куки будут обрабатываться автоматически. Иначе — нужно читать HTTP заголовок Set-Cookie и писать куки (перечисляя через в HTTP заголовке Cookie. Например через HttpQueryInfo(HTTP_QUERY_SET_COOKIE) и HttpAddRequestHeaders().
Re[4]: Программно зайти на защищенный сайт
От: algol Россия about:blank
Дата: 09.03.06 15:28
Оценка:
Здравствуйте, algol, Вы писали:

На месте смайлика нужно читать ;
Re[5]: Программно зайти на защищенный сайт
От: EugeneFrme Украина  
Дата: 09.03.06 15:37
Оценка:
Здравствуйте, algol, Вы писали:

A>Здравствуйте, algol, Вы писали:


A>На месте смайлика нужно читать ;


Большое спасибо, сейчас попробую чтото сделать...
Re[4]: Программно зайти на защищенный сайт
От: EugeneFrme Украина  
Дата: 09.03.06 15:39
Оценка:
Здравствуйте, algol, Вы писали:

A>Здравствуйте, EugeneFrme, Вы писали:


EF>>И еще вопрос в догонку, как перехватить эту куку?


A>Если пользоваться функциями WinInet и не установлен флаг INTERNET_FLAG_NO_COOKIES, то ничего делать не надо. Куки будут обрабатываться автоматически. Иначе — нужно читать HTTP заголовок Set-Cookie и писать куки (перечисляя через в HTTP заголовке Cookie. Например через HttpQueryInfo(HTTP_QUERY_SET_COOKIE) и HttpAddRequestHeaders().


А вот еще вопрос, как я понимаю для подобных целей есть два интерфеса: WinInet и WinHTTP,
а в чем отличия между ними?
Re[5]: Программно зайти на защищенный сайт
От: algol Россия about:blank
Дата: 09.03.06 16:58
Оценка:
Здравствуйте, EugeneFrme, Вы писали:

EF>А вот еще вопрос, как я понимаю для подобных целей есть два интерфеса: WinInet и WinHTTP,

EF>а в чем отличия между ними?

WinInet API делался под Interner Explorer и доступен под любой платформой где стоит IE. Отсюда же вытекают и его недостатки. Например ему требуется доступ к реестру для считывания пользовательских настроек (прокси сервер, SSL и т.п.) и поэтому может не работать в Windows сервисах. WinHHTP это более новое API, но доступно оно только на Win2000 и выше.
Re: Программно зайти на защищенный сайт
От: EugeneFrme Украина  
Дата: 14.03.06 12:01
Оценка:
Здравствуйте, EugeneFrme, Вы писали:

EF>Не знает ли кто как выполнить сабж?

EF>т.е. нужно в запросе указать логин и пароль, чтобы не было стандарного окошка
EF>с приглашением это все ввести. Програмлю я это все с использованием
EF>MSHTML, Если не сложно, то запостите пару ссылок или MSHTML-код.

EF>Есть идея юзать чтото вроде следующего:


EF><HTML>

EF><HEAD>
EF></HEAD>

EF><BODY onLoad='submitForm()'>


EF><form id=Form action="http://192.168.0.5:8080/manager/html" METHOD="POST" >

EF><input type="hidden" name="j_username" value="tomcat" >
EF><input type="hidden" name="j_password" value="tomcat" >
EF></form>

EF><script>

EF> document.forms[0].submit();
EF></script>

EF></BODY>

EF></HTML>

EF>но если выполнить JavaScript из MSHTML не составляет проблем,

EF>то как загнать форму я не наю

EF>Одним словом мож кто сталкивался?


EF>Заранее благодарен.


Спасибо всем за ответы, все получилось логинюсь без проблем, использую
ява-скрипты из-под IHTMLWindow2, но задача усложнилась,
все таки создавать форму не есть выход из проблемы, нужно работать с отображенной формой
туда (в нее) загонять значения и сабмитить. На первый взгляд проблем нет.
Проблемы начинаются тогда когда я пытаюсь доступиться к documents.forms.
Два метода: documents.forms[0] и
IHTMLDocument2 pDoc2->get_forms(...) (а потом get_length() )
выдают ошибку и нуль соответственно. т.е. форма не видима,
хотя если глянуть в исходники странички то форма видна очень хорошо

Может кто видел такие баги? и знает как их исправлять?

В проекте я юзаю MFC, указатель на IHTMLDocument получаю через GetHtmlDocument();

Заранее благодарен.
Re: Программно зайти на защищенный сайт
От: EugeneFrme Украина  
Дата: 16.03.06 11:06
Оценка:
Спасибо всем, вопрос снят,
в данном случае ява-скрипт должен был выглядеть так:
"frames[0].document.forms[0].j_username.value='0_A0000';"

Иногда мат. часть нужно перечитывать
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.