- Секрет POST запроса http,
да хз, 01:53 , 16-Ноя-14 (1)Никаких секретов 1. Авторизоваться 2. получить куки 3. в нужный запрос эти куки вложить. В фидлере в формате raw data можно все это увидеть.
- Секрет POST запроса http,
PavelR, 01:55 , 16-Ноя-14 (2)> Здравствуйте! Приветствую. >Подскажите пожалуйста как быть? Прочитав написанное вами, рекомендую забить. > В http совсем не силён! Заметно. > Задача стоит так. Есть 3g wi-fi модем huawei e355, который нужно удаленно ребутить > хотя бы раз в сутки. Задача ясна. > Идея в следующем. У роутера есть админка, которая находится по адресу 192.168.1.1. > В этой админке есть кнопка "Перезагрузить". Так вот события, возникающие по > нажатию кнопки обрабатываются javascript, который в свою очередь производит не что > иное, как POST запрос на сервер. Сложно из "пустого" браузера сделать что-то иное, чем одну из вариаций HTTP-запроса. > Программы типа firebug, fiddler, http analyzer говорят, что в момент перед > перезагрузкой модема из браузера происходит > обращение по URL http://192.168.1.1/api/device/control. Возможно, только вы плохо воспользовались указанными программами. > При этом ответ сервера <?xml version="1.0" encoding="UTF-8"?><response>OK</response>. > Если скопировать данный URL и перейти по нему в браузере, Немудрено, ведь идет запрос GET. > либо же нажать Reply Где вы нашли в браузере кнопку Reply? > (т.е. попытаться его повторить) в программе fiddler, Вы всё еще уверены, что ваша попытка "повторить" - успешна? >то в качестве ответа получим ошибку с кодом 100002. Это говорит, что как-то не особо успешна. > После недолгих размышлений и одного эксперимента стало ясно, что скорее всего не > хватает логина и пароля, т.к. попытка выполнить перезагрузку (т.е. тот самый > javascript) после нажатии кнопки "log out" в интерфейсе модема приводит к > тому, что сервер возвращает точно ту же ошибку 100002 и перезагрузка > не происходит.
Шедевр логики. > Тем не менее http analyzer пишет, что post data содержит лишь это > - "1.0" encoding="UTF-8"?><request><Control>1</Control></request>. Вы не умеете пользоваться HTTP-Analyzer. Запрос - это не только "post data". > Помогите разобраться пожалуйста как правильно сформировать http запрос, > чтобы можно было программно имитировать его!!! :-) > (Целевой ЯП - Java под Anroid, но это я уже сам разберусь). Точно так же как разобрались с HTTP ? :-)) > Спасибо!
- Секрет POST запроса http,
furevor, 08:28 , 16-Ноя-14 (3)> Прочитав написанное вами, рекомендую забить.Вам не очевидно, что если человек тратит достаточное количество времени на решение этой проблемы, то забить нельзя? > Возможно, только вы плохо воспользовались указанными программами. И в чём же моя ошибка, куда копать то хотя бы? > Где вы нашли в браузере кнопку Reply? Речь шла про фидлер, причём здесь браузер? > Вы всё еще уверены, что ваша попытка "повторить" - успешна? > Это говорит, что как-то не особо успешна. По-вашему я этого не понял? > Вы не умеете пользоваться HTTP-Analyzer. Запрос - это не только "post data". Я скачал эту программу за три часа до своей просьбы о помощи, т.к. время ГОРИТ (ну или другое место, если вам это понравится услышать) А что ещё, если не только "post data"? > :-) Правильно ли я понимаю, что вместо того, чтобы помочь нуждающемуся в этом человеку, вы решили за счёт него самоутвердиться? > Точно так же как разобрались с HTTP ? :-)) У меня были всего сутки для этого, а задачу решить надо до понедельника. Вообще какой смысл вашего поста? Показать своё превосходство? А зачем это делать на форуме, неужели всё так плохо в оффлайн-жизни у вас?
- Секрет POST запроса http,
PavelR, 10:18 , 16-Ноя-14 (4)>> Прочитав написанное вами, рекомендую забить. > Вам не очевидно, что если человек тратит достаточное количество времени на решение > этой проблемы, то забить нельзя?ну как-то не видно, что потрачено _достаточное_ количество времени. По прогрессу достижения цели видно, что успеха в заданные сроки не достигнуть. В этих условиях разумно не тратить силы/нервы впустую. >> Возможно, только вы плохо воспользовались указанными программами. > И в чём же моя ошибка, куда копать то хотя бы? > А что ещё, если не только "post data"? Даже в файрбаге есть кнопка "Заголовки". Если вы её не заметили, сколько же это - "достаточное количество времени"? > Я скачал эту программу за три часа до своей просьбы о помощи, ААА, три часа... ну да, "достаточное количество времени". > т.к. время ГОРИТ (ну или другое место, если вам это понравится > услышать) Прекратите истерить и попробуйте включить рациональное мышление. > У меня были всего сутки для этого, а задачу решить надо до > понедельника. ... если вы этого не сделаете, то у вас всегда и всё будет гореть и далее. Вдруг там авторизация не по кукам... придется новую тему на форуме открывать... Мне вообще не понятно, зачем вы беретесь _в ограниченные сроки_ делать то, о чем ничего не знаете? Не знаете, как работает HTTP, не знаете Java под Android. Не то, что не знаете, но и просто должного представления не имеете. Собираетесь "имитировать HTTP-запрос" - мне очень интересно, как это. Для решения задачи я бы имитировал _нажатие на кнопку_ в админке, но имитировать HTTP-запрос конечно намного интереснее, да. Вы кондитер по профессии, я угадал?
- Секрет POST запроса http,
furevor, 10:39 , 16-Ноя-14 (5)>> Я скачал эту программу за три часа до своей просьбы о помощи, > ААА, три часа... ну да, "достаточное количество времени".Речь шла про http-analyzer, неужели вы полагаете, что всё время тратилось только на неё? > Мне вообще не понятно, зачем вы беретесь _в ограниченные сроки_ делать то, > о чем ничего не знаете? Не знаете, как работает HTTP, не знаете > Java под Android. > Не то, что не знаете, но и просто должного представления не имеете. Почему это должно вас волновать? Если у вас недостаточно знаний либо нет желания помочь, то зачем вы всё это пишете и тратите своё время? Ваше время настолько дешёвое, что вы можете себе это позволить?
- Секрет POST запроса http,
furevor, 10:49 , 16-Ноя-14 (6)Прекратим этот бессмысленный диалог. Вот здесь скриншоты из программы http analyzer (ссылка на мой dropbox) https://dl.dropboxusercontent.com/u/65360035/screen.zip Если вы действительно тот за кого себя выдаёте, то, увидев это, вам не составит труда указать как исправить положение, а если нет ни знаний, ни желания помочь, то впредь попрошу воздержаться от бесполезных ответов в этой теме. Спасибо!
- Секрет POST запроса http,
PavelR, 11:01 , 16-Ноя-14 (7)
- Секрет POST запроса http,
furevor, 11:04 , 16-Ноя-14 (8)> Успехов. Ссылка поправлена. Уже уходите?))
- Секрет POST запроса http,
PavelR, 11:15 , 16-Ноя-14 (9)>> Успехов. > Ссылка поправлена. Уже уходите?)) Заголовок "Cookie: _authorized=admin" пробовали подставить? Рекомендую эти заголовки тоже выставить, гении могли додуматься сделать и их проверки: X-Requested-With: XMLHttpRequest Referer: http://192.168.1.1/html/reboot.html
- Секрет POST запроса http,
furevor, 11:25 , 16-Ноя-14 (10)>>> Успехов. >> Ссылка поправлена. Уже уходите?)) > Заголовок "Cookie: _authorized=admin" пробовали подставить? > Рекомендую эти заголовки тоже выставить, гении могли додуматься сделать и их проверки: > X-Requested-With: XMLHttpRequest > Referer: http://192.168.1.1/html/reboot.html Не помогло. Для отправки запроса использовал Advanced Rest Client (расширение для хрома) Указал тип POST, добавил все заголовки в том числе указанные выше, отправил, но получил ошибку 100003 Примечательно ещё и то, что если просто вставить строку в браузер, то ошибка 100002, а если отослать запрос через расширение хрома, то ошибка 100003. Понятно, что при отправке из строки браузера запрос GET, об этом ли говорит ошибка 100002? Если да, то о чём говорит ошибка 100003?
- Секрет POST запроса http,
furevor, 12:27 , 16-Ноя-14 (11)> Заголовок "Cookie: _authorized=admin" пробовали подставить? > Рекомендую эти заголовки тоже выставить, гении могли додуматься сделать и их проверки: > X-Requested-With: XMLHttpRequest > Referer: http://192.168.1.1/html/reboot.html Вновь при перезагрузке получил запрос в fiddler, роутер перезагрузился. Я снова подключился к нему, нажал Replay на запросе в fiddler и он вернул ошибку. Почему? Потому что я не умею пользоваться программой?:D Но суть не в этом. После этого я зашёл в админку, залогинился, а затем вернулся в fiddler и нажал Replay на запросе и роутер перезагрузился. Как это понимать? Я никогда не трогал эту область не смотря на то, что писал под андроид с использованием NDK и OpenGL ES, кстати.. И кондитер тоже профессия! Все профессии нужны, все профессии важны!
- Секрет POST запроса http,
PavelR, 13:07 , 16-Ноя-14 (12)>> Заголовок "Cookie: _authorized=admin" пробовали подставить? >> Рекомендую эти заголовки тоже выставить, гении могли додуматься сделать и их проверки: >> X-Requested-With: XMLHttpRequest >> Referer: http://192.168.1.1/html/reboot.html > Вновь при перезагрузке получил запрос в fiddler, роутер перезагрузился. Я снова подключился > к нему, нажал Replay на запросе в fiddler и он вернул > ошибку. Почему? Потому что я не умею пользоваться программой?:D > Но суть не в этом. После этого я зашёл в админку, залогинился, > а затем вернулся в fiddler и нажал Replay на запросе и > роутер перезагрузился. Как это понимать?Насколько я понял, из ответа первого запроса не надо передавать никаких параметров во второй, нужно тупо сделать два последовательных фиксированных запроса, один за другим - запрос на авторизации потом запрос на перезагрузку. Первый запрос взведет внутри роутера флаг "авторизовались", второй просто выполнится.
- Секрет POST запроса http,
furevor, 13:32 , 16-Ноя-14 (13)>[оверквотинг удален] >> Вновь при перезагрузке получил запрос в fiddler, роутер перезагрузился. Я снова подключился >> к нему, нажал Replay на запросе в fiddler и он вернул >> ошибку. Почему? Потому что я не умею пользоваться программой?:D >> Но суть не в этом. После этого я зашёл в админку, залогинился, >> а затем вернулся в fiddler и нажал Replay на запросе и >> роутер перезагрузился. Как это понимать? > Насколько я понял, из ответа первого запроса не надо передавать никаких параметров > во второй, нужно тупо сделать два последовательных фиксированных запроса, один за > другим - запрос на авторизации потом запрос на перезагрузку. > Первый запрос взведет внутри роутера флаг "авторизовались", второй просто выполнится. Вооо... Вот о флаге в роутере я не подумал.. Потому что меня мучил вопрос почему если я из фиддлера делаю запрос на авторизацию, а потом делаю запрос на перезагрузку, то он перезагружается так же как если бы я логинился в админке, а потом делал запрос на перезагрузку из фиддлера. Я думал роутер что-то куда-то специфическое возвращает, что потом используется в запросе на перезагрузку, чего я в упор не вижу, анализируя запрос в том же фиддлере. Не успел пока всё это на андроиде проверить, это в фиддлере тыкнул Replay и всё, а там же формировать запрос надо руками..
- Секрет POST запроса http,
furevor, 22:58 , 16-Ноя-14 (14)Спасибо! Всё получилось. 3g wi-fi modem huawei e355 с андроид устройства путем POST запроса перезагружен! Если не вдаваться в подробности того, что http запрос не выполняется из основного потока (если кто не знающий этого, будет читать форум), а так же опустить блоки try/catch, то код авторизации выглядит примерно так: public void makeSecondHttpPOSTRequest() { HttpClient httpclient = new DefaultHttpClient(); HttpPost httppost = new HttpPost("http://192.168.1.1/api/user/login"); String xmlString = "<?xml version=\"1.0\" encoding=\"UTF-8\"?><request><Username>admin</Username><Password>eW04NWoyNzZm</Password></request>"; InputStream inputStream = new ByteArrayInputStream(xmlString.getBytes());//init your own inputstream InputStreamEntity inputStreamEntity = new InputStreamEntity(inputStream, xmlString.getBytes().length); httppost.setEntity(inputStreamEntity); HttpResponse response = httpclient.execute(httppost); }
Никакие заголовки задавать при этом не требуется. (по крайней мере для e355) Однако стоит заметить, что пароль здесь передаётся совсем не тот, который бы я вводил в форму логина. Я ещё не посмотрел, но похоже там какой-то javascript этот самый пароль кодирует. Догадываюсь конечно как, но надо уточнить.. Далее запрос на перезагрузку. Код выглядит так же за исключением того, что URL меняется на "http://192.168.1.1/api/device/control", а xml тело запроса на String xmlString = "<?xml version=\"1.0\" encoding=\"UTF-8\"?><request><Control>1</Control></request>"; Собственно на этом всё. Если кому вдруг это будет нужно, но не понятно, стучите в skype: skyline0034
|