Не знает ли кто как выполнить сабж?
т.е. нужно в запросе указать логин и пароль, чтобы не было стандарного окошка
с приглашением это все ввести. Програмлю я это все с использованием
MSHTML, Если не сложно, то запостите пару ссылок или MSHTML-код.
Здравствуйте, 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?
Так здесь все написано. Нужно послать POST запрос по URL указанном в action и с параметрами j_username и j_password. В ответ будет получена кука, которую нужно передавать при последующих запросах.
А дальше все зависит от конкретного сайта и фантазии его разработчика. Если они задались целью избавиться от таких роботов на сайте, то перед отдачей реальной куки будут долго редиректить со страницы на страницу различными методами (включая скрипты), чтобы убедиться что это действительно браузер, а не робот.
Здравствуйте, 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". а там буду смотреть как можно понять логику приложения на сервере...
Здравствуйте, 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>А дальше все зависит от конкретного сайта и фантазии его разработчика. Если они задались целью избавиться от таких роботов на сайте, то перед отдачей реальной куки будут долго редиректить со страницы на страницу различными методами (включая скрипты), чтобы убедиться что это действительно браузер, а не робот.
И еще вопрос в догонку, как перехватить эту куку?
Заранее благодарен за ответ.
Здравствуйте, EugeneFrme, Вы писали:
EF>И еще вопрос в догонку, как перехватить эту куку?
Если пользоваться функциями WinInet и не установлен флаг INTERNET_FLAG_NO_COOKIES, то ничего делать не надо. Куки будут обрабатываться автоматически. Иначе — нужно читать HTTP заголовок Set-Cookie и писать куки (перечисляя через в HTTP заголовке Cookie. Например через HttpQueryInfo(HTTP_QUERY_SET_COOKIE) и HttpAddRequestHeaders().
Здравствуйте, algol, Вы писали:
A>Здравствуйте, EugeneFrme, Вы писали:
EF>>И еще вопрос в догонку, как перехватить эту куку?
A>Если пользоваться функциями WinInet и не установлен флаг INTERNET_FLAG_NO_COOKIES, то ничего делать не надо. Куки будут обрабатываться автоматически. Иначе — нужно читать HTTP заголовок Set-Cookie и писать куки (перечисляя через в HTTP заголовке Cookie. Например через HttpQueryInfo(HTTP_QUERY_SET_COOKIE) и HttpAddRequestHeaders().
А вот еще вопрос, как я понимаю для подобных целей есть два интерфеса: WinInet и WinHTTP,
а в чем отличия между ними?
Здравствуйте, EugeneFrme, Вы писали:
EF>А вот еще вопрос, как я понимаю для подобных целей есть два интерфеса: WinInet и WinHTTP, EF>а в чем отличия между ними?
WinInet API делался под Interner Explorer и доступен под любой платформой где стоит IE. Отсюда же вытекают и его недостатки. Например ему требуется доступ к реестру для считывания пользовательских настроек (прокси сервер, SSL и т.п.) и поэтому может не работать в Windows сервисах. WinHHTP это более новое API, но доступно оно только на Win2000 и выше.
Здравствуйте, 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();