Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > Java: Общие вопросы > Обход сайта из Desktop приложения |
Автор: tigerkvv 21.11.2007, 15:01 | ||
Здравствуйте товарищи. Ситуация: Есть GUI java приложение. Надо из него подключиться к сайту, пройти авторизацию, ответить еще на несколько вопросов (сайт не мой и гоняет по нескольким формам на разных страничках) и в конечном итоге запустить броузер с этой итоговой страничкой. Проблемы: 1. Сайт только с сессиями. Поэтому когда разбираю поток для получения кода сессии потом не могу послать новый запрос (используя полученный код) т.к. невозможно выполнить запрос если уже выполнено чтение буфера. При повторном коннекте другой код естественно. 2. Как потом (преодолев первую проблему) запустить броузер с этой же сессией?
|
Автор: AlexeyVorotnikov 21.11.2007, 15:25 |
А Вы уверены, что сайт использует URL rewriting, а не куки для отслеживания сессий? Может, ID сессии надо в куки пихать? |
Автор: tigerkvv 21.11.2007, 15:38 | ||
может и надо. буду пробовать. |
Автор: alex_nevolin 21.11.2007, 15:43 |
Советую посмотреть эту библиотку: http://jakarta.apache.org/httpcomponents/httpclient-3.x/ Она как раз позволяет работать с Http серварами эмулируя клиента. |
Автор: tigerkvv 21.11.2007, 16:04 |
Как раз сижу изучаю. Может и решу проблему Может кто даст ссылку на русскую доку? |
Автор: unkis 21.11.2007, 19:30 |
если решишь, не забудь запостить ответ |
Автор: Hidrag 22.11.2007, 01:03 |
tigerkvv, русской доки не нужно, там и по примерам все ясно, потом, рекомендую поставить сниффер и пройтись через все формы сайта через браузер вручную, при этом смотря http запросы и ответы через сниффер, сразу увидишь все параметры и значения, затем юзая Jakarta HttpClient напишешь алгоритм всех запросов, которые приведут тебя к нужной странице, а вот как ответ на запрос переслать во внешнее приложение, в данном случае в браузер, даже не знаю, запустить то браузер на заданный линк не проблема, а вот передать при этом куки параметры запроса и т.д уже не так просто я думаю. |
Автор: tigerkvv 22.11.2007, 15:03 |
Обход сайта сделал. HttpClient действительно упрощает многие процедуры. Бьюсь над передачей параметров во внешний броузер. Есть идеи? Вся беда в том что при запуске браузера с указанным URL ему присваивается новая сессия. Можно ли сформировать какой-то скрипт и заставить броузер его выполнить? (походить по сайту) Тогда HttpClient наверное и не нужен будет. Или принудительно переходить на другую сессию? Может какие еще варианты? |
Автор: Hidrag 22.11.2007, 15:20 |
Ну опять же, смотря как идентификатор сессии передается, если через куку, то не знаю, если он в урл дописывается, то это не проблема - сформируешь нужный урл и натравишь на него браузер, если параметры передаются методом пост/гет тоже не проблема - по последнему полученному ответу генеришь html ку в которой прописываешь этот метод, то есть в нем все параметры запроса + нужный урл. Затем делаешь запуск браузер, натравленного на этот файлик. Как я понимаю, если нет привязки к кукам то проблемы особой нет |
Автор: tigerkvv 22.11.2007, 19:02 |
Ура, народ, получается. Еще чуть-чуть и будет релиз. Выкину процедурку. |
Автор: tigerkvv 29.11.2007, 22:39 | ||
Чуть не забыл выложить готовую процедуру. Пользуйтесь кому надо. Правда надо дать несколько пояснений: 1. Обход сайта я делал ручками (по совету Hidrak), чтобы в конце выйти на нужный скрипт с нужными параметрами. В конце все получилось довольно просто: регистрируемся, получаем номер сессии, подставляем в нужный параметр и запускаем броузер со строкой. Поэтому прежде чем пользоваться процедурой надо самому определить конечный адрес (хотя во многих случаях он и не меняется, мне наверное не повезло). 2. В коде процедуры использованы параметры которые нужны были мне. Соответствующие коментарии я оставил в теле.
|