Модераторы: LSD, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как залогиниться на сайт? 
V
    Опции темы
Dean
Дата 1.2.2010, 17:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 20
Регистрация: 10.2.2008

Репутация: нет
Всего: нет



Всем привет.
Моя задача такая: залогиниться на сайт,  перейти по паре ссылок, ввести данные для поиска в форму и скачать документ, который вернут по результатам поиска.
У меня пока получилось только зайти на первую страницу сайта, но как вбить туда логин, пароль и нажать кнопку "login" я не знаю, и как потом пойти по нужной мне ссылке тоже.   smile  
Для этого надо выполнить несколько GET/POST запросов или можно объединить некоторые действия? И как послать несколько запросов серверу подряд?
Протокол HTTP 1.1.
Может кто подскажет? Если можно по-проще, для чайника  smile 

PM MAIL   Вверх
LSD
Дата 1.2.2010, 20:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15718
Регистрация: 24.3.2004
Где: Dublin

Репутация: 19
Всего: 538



Цитата(Dean @  1.2.2010,  17:37 Найти цитируемый пост)
Для этого надо выполнить несколько GET/POST запросов или можно объединить некоторые действия?

В простейшем случа будет так:
1. Анализируем форму логина и выясняем какие поля (имена) и каким образом (GET/POST/AJAX) отправляются на сайт.
2. С помощью HttpClient отправляем запрос с логином и паролем на сайт, в ответ мы получим страничку и куку с сессией.
2а. Возможно надо будет выставить правильный UserAgent. 
3. Дальше скачиваем нужные HTML странички, парсим и ищем нужные ссылки, потом по ним опять скачиваем  HTML или файлы, смотря что там надо.

Хотя в принципе возможно еще придется с JavaScript-ом повозиться или еще с чем-то таким же приятным, если сайт защищается от ботов.


--------------------
Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it.
PM MAIL WWW   Вверх
Akeem
Дата 2.2.2010, 22:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 381
Регистрация: 14.7.2006
Где: Киев/Украина

Репутация: нет
Всего: 3



Я бы посоветовал использовать селениум (Selenium) и не парится. Пару строк кода и все. 


--------------------
Мир огромен и мы только муравьи в нём! (С) formicha

PM MAIL WWW ICQ   Вверх
SergeyFromUkraine
Дата 3.2.2010, 01:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 2
Регистрация: 21.4.2007

Репутация: нет
Всего: нет



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

1) наиболее трудоемкий способ - эмулировать действия на уровне HTTP протокола, то есть отсылать HTTP GET POST запросы, помнить про Cookies и Referer хеадеры.
2) Есть библиотека HtmlUnit  - эмулирует действия на уровне пользователя HtmlUnit Getting Started , тоесть предоставляет API для загрузки страницы , поиска элементов интерфеса(input , anchors, buttons)  И нажатие на них (click, submit) . Частично поддерживает JavaScript.
3) Есть еще Selenium - аналогичен HtmlUnit  , но действия навигации и прочего выполняют уже не java классы, а настоящий браузер ,которым управляет Selenium . Полностью поддерживает JavaScript, ибо браузер.   Selenium  чуть медленнее HtmlUnit  из-за того, что нужно запускать браузер.

Также хорошо бы установить Firebug (аддон для Firefox) или его аналоги для других браузеров.
Во первых, в нем есть вкладка Network - в которой будет показан HTTP обмен между браузером и сервером. Во вторых используя Inspect Element и вкладку HTML - можно легко подобрать признаки, по которым искать элементы если будешь использовать HtmlUnit  или  Selenium  (имя , атрибуты, id, xpath).

PM MAIL   Вверх
Dean
Дата 5.2.2010, 17:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 20
Регистрация: 10.2.2008

Репутация: нет
Всего: нет



Спасибо всем за советы  smile  
С GETами и POSTами не совсем понятно что и как делать.
Пока получилось сделать с помощью WebDriver. 
Только можно ли сделать чтоб окно браузера не выскакивало каждый раз при запуске?
PM MAIL   Вверх
Akeem
Дата 5.2.2010, 20:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 381
Регистрация: 14.7.2006
Где: Киев/Украина

Репутация: нет
Всего: 3



Dean
Как с WebDriver так и с Selenium (так как первый уже включен в новую версию второго) такое не получится.  Так как оба спроектированы чтобы броузер выскакивал. Такое можно было провернуть с HttpUnit. Либо поробывать использовать WEbDriver как:
Код

WebDriver driver = new HttpUnitDriver();



Сам такого не делал, точно не скажу. 


--------------------
Мир огромен и мы только муравьи в нём! (С) formicha

PM MAIL WWW ICQ   Вверх
Dean
Дата 8.2.2010, 11:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 20
Регистрация: 10.2.2008

Репутация: нет
Всего: нет



Akeem, получилось - окно браузера больше не выскакивает  smile
только не 
Код

WebDriver driver = new HttpUnitDriver();

а 
Код

WebDriver driver = new HtmlUnitDriver();

хотя может твой вариант тоже возможен, но у меня эклипс на него ругался.
PM MAIL   Вверх
Akeem
Дата 11.2.2010, 23:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 381
Регистрация: 14.7.2006
Где: Киев/Украина

Репутация: нет
Всего: 3



Dean
Я по пам"яти писал, так что мог и ошибится в названии класса  smile  (Есть только HttpCommandExecutor и HttpCommandProcessor )

*возможен если самому имплементировать интерфейс WebDriver  smile  


--------------------
Мир огромен и мы только муравьи в нём! (С) formicha

PM MAIL WWW ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java: Работа с сетью | Следующая тема »


 




[ Время генерации скрипта: 0.0740 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.