Запрос Post, непонятные параметры
1. перехожу по ссылке на страницу авторизации, ввожу имя и пароль
2. На странице на которую перекинуло после авторизации, кликаю по ссылке, выбрасывает еще на одну страницу с предложение ввода.
3. Там заполняю еще кое-какую информацию и получаю требуемую страницу с результатаом.
Вот теперь вопрос как все это проделать программно? IE отрпавляет такую ссылку(итоговую):
https://statserv.home.net/cgi-bin/clients/deal_service?session_id=bryehd64hd76460a91cac74ad3d2e8be4&service_id=24571&start_y=2005&start_m=11&start_d=01&stop_y=2005&stop_m=11&stop_d=14&leased=%A0%D2%CF%F3%AA%EF%A4%D2%B5%C4%D8+%D4%D2%C1%C6%C9%AD-%D3%C5%D3%D3%C9%C9
и если Я это отправляю методом пост Броузера все работает, но только один день. Я подозреваю, что виноваты параметры: - 1-й и последний
т.е. вопрос сводится к тому, что это за параметры и какое у них назначение. Думаю их предварительно нужно запросить или как?
Я подозреваю, что виноваты параметры: - 1-й и последний
т.е. вопрос сводится к тому, что это за параметры и какое у них назначение. Думаю их предварительно нужно запросить или как?
c session_id - присутствует на странице созданной после п.1 ввиде скрытой метки, но, что это фишка сервера и как и где это регламентируется? Т.е уже придется выполнить два запроса в первом получить session_id и подставлять его во второй.
а с последним параметром пока плохо...
c session_id - присутствует на странице созданной после п.1 ввиде скрытой метки, но, что это фишка сервера и как и где это регламентируется? Т.е уже придется выполнить два запроса в первом получить session_id и подставлять его во второй.
а с последним параметром пока плохо...
С первым вроде так и решил, а что с последним делать? На приведенной ссылке он маленько не так отображается, на самом деле так:
&leased=%F0%D2%CF%D3%CD%CF%D4%D2%C5%D4%D8+%D4%D2%C1%C6%C9%CB-%D3%C5%D3%D3%C9%C9
что за икс? Если Я сначала запрашиваю session_id, а потом подставляю его, даты и это еб..ческое значение, то все работает, но Я не пойму оно для всех одинаковое или для конкретного юзера свое (если для каждого свое, то как его достать программно есс-но...).
Ну не стесняемся помогаем!
ART_CODE - ау!!!!
Нам, конечно, может быть интересно - что там за
параметры такие... но по- большому счету - пофиг.
Все, что нужно подставить в строку параметров у
тебя уже должно быть в теле тех страниц, которые ты перед этим посещаешь, там и искать надо программно...
Однако есть вариант, когда этот параметр
генерится диамически на стороне клиента в браузере
при помощи JavaScript - в этом случае , конечно
нужно понять логику работы этого скрипта и
имитировать ее...
Как всегда рулит полный перехват ВСЕХ
отправляемых и принимаемых данных и анализ ...
Да, и еще - очень важно - перед перехватом не забывай сбрасывать Кеш браузера - чтобы ничего не пропустить... (Удалить файлы и Удалить "Cookie")
Для обеспечения перехвата можно по- прежнему использоватьTcpLogger или использовать программу TinyHTTPGate от http://mike.nov.ru/
немного доработав ее самостоятельно для сохранения всех передаваемых и принимаемых данных
Скачать исходники TinyHTTPGate
Все, что нужно подставить в строку параметров у
тебя уже должно быть в теле тех страниц, которые ты перед этим посещаешь, там и искать надо программно...
Ну до этого Я уже допер, кликаю мышкой Я хорошо (в Билдере как никак работаю) в том числе и правой. Вот, что-то типа этого после авторизации (п.1) обнаруживается:
<input type="hidden" name="session_id" value="ec4c1bf11b49b271e5d9ce6e8a3265ce">
т.е. выполняю первый запрос, нахожу session_id, далее выполняю второй и извлекаю нужное мне значение. Ужасный параметр, как было выяснено экспериментально, зависит от того, на какую кнопочку из трех нажали в последней форме ввода и в пространстве и времени похоже не меняется.
Однако есть вариант, когда этот параметр
генерится диамически на стороне клиента в браузере
при помощи JavaScript - в этом случае , конечно
нужно понять логику работы этого скрипта и
имитировать ее...
Вроде он генерится сервером и по смыслу названия идентификатора вроде так получается...
Как всегда рулит полный перехват ВСЕХ
отправляемых и принимаемых данных и анализ ...
Да, и еще - очень важно - перед перехватом не забывай сбрасывать Кеш браузера - чтобы ничего не пропустить... (Удалить файлы и Удалить "Cookie")
Для обеспечения перехвата можно по- прежнему использоватьTcpLogger или использовать программу TinyHTTPGate от http://mike.nov.ru/
немного доработав ее самостоятельно для сохранения всех передаваемых и принимаемых данных
Скачать исходники TinyHTTPGate
Да. Забыл старый проверенный способ. Спасибо за ссылку.
Есть еще маленький, вопрос:
Т.к. Я работаю c WinInet да еще и два запроса отправляю, то это вызывает некоторое затупление (на 2-5 сек) IE (код запускается по нажатии на кнопочку на панели IE) перед тем как юзер увидит окошечко с заветным числом. Мало того, что это не понравится пользователям - это не нравится мне самому. Так вот думаю как-бы ускорить процесс? Session_id Я уже запоминаю на текущую дату - результат затупление только при самом первом запросе. Потом сейчас Я качаю страницу полностью, хотя как видно при первом запросе мне это делать необязательно. Я бы добавил в хедер при запросе Content-Range, но чего-то нифига не получается. Будь другом приведи примерчик?
Хотя может мне просто сделать 1 раз:
вместо чтения всей страницы в цикле. Это будет корректно? И читать Я смогу только сначала...
В итоге наверно все равно придется перейти на запрос на сокетах.
...
В итоге наверно все равно придется перейти на запрос на сокетах.
Наверно так будет правильно - на сокетах.
НO ! Eсли на том сайте когда-нибудь сделают SSL, да еще с проверкой сертификата пользователя, то прийдется повозиться...
А вообще - что-то много времени уходит , может не совсем корректные сетевые настройки у компа, и время уходит на всякие DNS -WINS -LMHOSTS -NetBIOS процедуры... у меня такие случаи были.
Но все может быть - и долгая инициализация кода и томоза интернета или самого сайта, к которому обращаются...
Насчет закачки файла по фрагментам - IMHO не прокатит - если он (файл) генерится динамически , через CGI (а это единственный способ вставить туда актуальное значение сессии).
Такая фича (закачка файла по фрагментам) обеспечивается функционалом самого WEB Server а CGI про такое скорее всего ничего не знает и не умеет (если, конечно, разработчик скрипта не извратился особым образом, но это очень мало вероятно - и даже если сделал это , то скорее всего там свои особые команды для закачки по фрагментам).
Жаль, но ничего нового , наверно я не сказал...
Удачи.
Наверно так будет правильно - на сокетах.
НO ! Eсли на том сайте когда-нибудь сделают SSL, да еще с проверкой сертификата пользователя, то прийдется повозиться...
В первом посте:
https://statserv.home.net/cgi-bin/clients/deal_service?...
поэтому Я и пользуюсь WinInet.
поэтому Я и пользуюсь WinInet.
Да, не внимательно это я...
Кстати, для SSL времени требуется немного больше , чем при обычном соединении - SSL в несколько этапов делается - сначала согласование паролей, а затем передача данных , плюс время на шифрование и расшифровку...
Для упрощения работы попробуй Indy HTTP клиента с SSL Intercept, наверняка в интернете примеры использования найдутся, сам я пока такое не делал (собирал Indy HTTP сервер с SSL Intercept - все работает, есть надежда, что и клиент их будет работать).
Удачи.
Кстати, для SSL времени требуется немного больше , чем при обычном соединении - SSL в несколько этапов делается - сначала согласование паролей, а затем передача данных , плюс время на шифрование и расшифровку...
А на сокетах, без компонент есть примеры? Необязательно собственные, ссылка на какой-либо ресурс подойдет...
Для упрощения работы попробуй Indy HTTP клиента с SSL Intercept, наверняка в интернете примеры использования найдутся, сам я пока такое не делал (собирал Indy HTTP сервер с SSL Intercept - все работает, есть надежда, что и клиент их будет работать).
Не-а не подойдет. Это у меня плаги к IE, тут компоненты не в тему (хоть Я и поклонник пропертей и т.п.). У меня итак уже релиз dll-ки на 300 кб тянет (хеви металл - ATL + VCL + WinInet), но для "обкатки" подойдет. Потом перепишу комик без ATL и VCL.
А на сокетах, без компонент есть примеры? Необязательно собственные, ссылка на какой-либо ресурс подойдет...
Есть интересная иерархия классов - от простого сокета до HTTPS, кликаем на диаграмму и изучаем любой интересующий нас класс...
http://www.alhem.net/Sockets/html/classHttpsGetSocket.html
Кажется это под Linux, но если разобраться , то может и удастся переделать...
Сам пока не тестил, времени и необходимости нет...
А еще скачай "source" с
http://www.openssl.org/
может там в архиве и примеры есть , надо проверить..
Удачи.