The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  вход/выход  слежка  RSS
"Секрет POST запроса http"
Вариант для распечатки  
Пред. тема | След. тема 
Форум WEB технологии (PHP)
Изначальное сообщение [ Отслеживать ]

"Секрет POST запроса http"  +/
Сообщение от furevor email(ok) on 15-Ноя-14, 22:44 
Здравствуйте! Подскажите пожалуйста как быть? В http совсем не силён! Задача стоит так. Есть 3g wi-fi модем huawei e355, который нужно удаленно ребутить хотя бы раз в сутки.
Идея в следующем. У роутера есть админка, которая находится по адресу 192.168.1.1. В этой админке есть кнопка "Перезагрузить". Так вот события, возникающие по нажатию кнопки обрабатываются javascript, который в свою очередь производит не что иное, как POST запрос на сервер. Программы типа firebug, fiddler, http analyzer говорят, что в момент перед перезагрузкой модема из браузера происходит обращение по URL http://192.168.1.1/api/device/control. При этом ответ сервера <?xml version="1.0" encoding="UTF-8"?><response>OK</response>. Если скопировать данный URL и перейти по нему в браузере, либо же нажать Reply (т.е. попытаться его повторить) в программе fiddler, то в качестве ответа получим ошибку с кодом 100002.
После недолгих размышлений и одного эксперимента стало ясно, что скорее всего не хватает логина и пароля, т.к. попытка выполнить перезагрузку (т.е. тот самый javascript) после нажатии кнопки "log out" в интерфейсе модема приводит к тому, что сервер возвращает точно ту же ошибку 100002 и перезагрузка не происходит.
Тем не менее http analyzer пишет, что post data содержит лишь это - "1.0" encoding="UTF-8"?><request><Control>1</Control></request>.

Помогите разобраться пожалуйста как правильно сформировать http запрос, чтобы можно было программно имитировать его!!! (Целевой ЯП - Java под Anroid, но это я уже сам разберусь).
Спасибо!

Ответить | Правка | Cообщить модератору

Оглавление

Сообщения по теме [Сортировка по времени | RSS]


1. "Секрет POST запроса http"  +/
Сообщение от да хз on 16-Ноя-14, 01:53 
Никаких секретов
1. Авторизоваться
2. получить куки
3. в нужный запрос эти куки вложить.
В фидлере в формате raw data можно все это увидеть.
Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

2. "Секрет POST запроса http"  +/
Сообщение от PavelR (??) on 16-Ноя-14, 01:55 
> Здравствуйте!

Приветствую.

>Подскажите пожалуйста как быть?

Прочитав написанное вами, рекомендую забить.

> В 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 ? :-))

> Спасибо!

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

3. "Секрет POST запроса http"  +/
Сообщение от furevor email(ok) on 16-Ноя-14, 08:28 
> Прочитав написанное вами, рекомендую забить.

Вам не очевидно, что если человек тратит достаточное количество времени на решение этой проблемы, то забить нельзя?

> Возможно, только вы плохо воспользовались указанными программами.

И в чём же моя ошибка, куда копать то хотя бы?

> Где вы нашли в браузере кнопку Reply?

Речь шла про фидлер, причём здесь браузер?

> Вы всё еще уверены, что ваша попытка "повторить" - успешна?
> Это говорит, что как-то не особо успешна.

По-вашему я этого не понял?

> Вы не умеете пользоваться HTTP-Analyzer. Запрос - это не только "post data".

Я скачал эту программу за три часа до своей просьбы о помощи, т.к. время ГОРИТ (ну или другое место, если вам это понравится услышать)
А что ещё, если не только  "post data"?

> :-)

Правильно ли я понимаю, что вместо того, чтобы помочь нуждающемуся в этом человеку, вы решили за счёт него самоутвердиться?

> Точно так же как разобрались с HTTP ? :-))

У меня были всего сутки для этого, а задачу решить надо до понедельника.

Вообще какой смысл вашего поста? Показать своё превосходство? А зачем это делать на форуме, неужели всё так плохо в оффлайн-жизни у вас?

Ответить | Правка | ^ к родителю #2 | Наверх | Cообщить модератору

4. "Секрет POST запроса http"  +/
Сообщение от PavelR (??) on 16-Ноя-14, 10:18 
>> Прочитав написанное вами, рекомендую забить.
> Вам не очевидно, что если человек тратит достаточное количество времени на решение
> этой проблемы, то забить нельзя?

ну как-то не видно, что потрачено _достаточное_ количество времени.
По прогрессу достижения цели видно, что успеха в заданные сроки не достигнуть.
В этих условиях разумно не тратить силы/нервы впустую.

>> Возможно, только вы плохо воспользовались указанными программами.
> И в чём же моя ошибка, куда копать то хотя бы?
> А что ещё, если не только  "post data"?

Даже в файрбаге есть кнопка "Заголовки". Если вы её не заметили, сколько же это - "достаточное количество времени"?

> Я скачал эту программу за три часа до своей просьбы о помощи,

ААА, три часа... ну да, "достаточное количество времени".

> т.к. время ГОРИТ (ну или другое место, если вам это понравится
> услышать)

Прекратите истерить и попробуйте включить рациональное мышление.

> У меня были всего сутки для этого, а задачу решить надо до
> понедельника.

... если вы этого не сделаете, то у вас всегда и всё будет гореть и далее.
Вдруг там авторизация не по кукам... придется новую тему на форуме открывать...

Мне вообще не понятно, зачем вы беретесь _в ограниченные сроки_ делать то,
о чем ничего не знаете? Не знаете, как работает HTTP, не знаете Java под Android.
Не то, что не знаете, но и просто должного представления не имеете.

Собираетесь "имитировать HTTP-запрос" - мне очень интересно, как это.
Для решения задачи я бы имитировал _нажатие на кнопку_ в админке, но имитировать HTTP-запрос конечно намного интереснее, да.

Вы кондитер по профессии, я угадал?

Ответить | Правка | ^ к родителю #3 | Наверх | Cообщить модератору

5. "Секрет POST запроса http"  +/
Сообщение от furevor (ok) on 16-Ноя-14, 10:39 
>> Я скачал эту программу за три часа до своей просьбы о помощи,
> ААА, три часа... ну да, "достаточное количество времени".

Речь шла про http-analyzer, неужели вы полагаете, что всё время тратилось только на неё?

> Мне вообще не понятно, зачем вы беретесь _в ограниченные сроки_ делать то,
> о чем ничего не знаете? Не знаете, как работает HTTP, не знаете
> Java под Android.
> Не то, что не знаете, но и просто должного представления не имеете.

Почему это должно вас волновать?

Если у вас недостаточно знаний либо нет желания помочь, то зачем вы всё это пишете и тратите своё время? Ваше время настолько дешёвое, что вы можете себе это позволить?


Ответить | Правка | ^ к родителю #4 | Наверх | Cообщить модератору

6. "Секрет POST запроса http"  +/
Сообщение от furevor (ok) on 16-Ноя-14, 10:49 
Прекратим этот бессмысленный диалог. Вот здесь скриншоты из программы http analyzer
(ссылка на мой dropbox)
https://dl.dropboxusercontent.com/u/65360035/screen.zip
Если вы действительно тот за кого себя выдаёте, то, увидев это, вам не составит труда указать как исправить положение, а если нет ни знаний, ни желания помочь, то впредь попрошу воздержаться от бесполезных ответов в этой теме. Спасибо!
Ответить | Правка | ^ к родителю #4 | Наверх | Cообщить модератору

7. "Секрет POST запроса http"  +/
Сообщение от PavelR (??) on 16-Ноя-14, 11:01 
> Прекратим этот бессмысленный диалог. Вот здесь скриншоты из программы http analyzer
> (ссылка на мой dropbox)
> https://dl.dropboxusercontent.com/u/65360035/screen.zip
> Если вы действительно тот за кого себя выдаёте, то, увидев это, вам
> не составит труда указать как исправить положение, а если нет ни
> знаний, ни желания помочь, то впредь попрошу воздержаться от бесполезных ответов
> в этой теме. Спасибо!

https://dl.dropboxusercontent.com/u/65360035/screen.zip - 404.

Успехов.

Ответить | Правка | ^ к родителю #6 | Наверх | Cообщить модератору

8. "Секрет POST запроса http"  +/
Сообщение от furevor email(ok) on 16-Ноя-14, 11:04 

> Успехов.

Ссылка поправлена. Уже уходите?))

Ответить | Правка | ^ к родителю #7 | Наверх | Cообщить модератору

9. "Секрет POST запроса http"  +/
Сообщение от PavelR (??) on 16-Ноя-14, 11:15 
>> Успехов.
> Ссылка поправлена. Уже уходите?))

Заголовок "Cookie: _authorized=admin" пробовали подставить?

Рекомендую эти заголовки тоже выставить, гении могли додуматься сделать и их проверки:

X-Requested-With: XMLHttpRequest
Referer: http://192.168.1.1/html/reboot.html  

Ответить | Правка | ^ к родителю #8 | Наверх | Cообщить модератору

10. "Секрет POST запроса http"  +/
Сообщение от furevor email(ok) on 16-Ноя-14, 11:25 
>>> Успехов.
>> Ссылка поправлена. Уже уходите?))
> Заголовок "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?

Ответить | Правка | ^ к родителю #9 | Наверх | Cообщить модератору

11. "Секрет POST запроса http"  +/
Сообщение от furevor email(ok) on 16-Ноя-14, 12:27 
> Заголовок "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, кстати..
И кондитер тоже профессия! Все профессии нужны, все профессии важны!

Ответить | Правка | ^ к родителю #9 | Наверх | Cообщить модератору

12. "Секрет POST запроса http"  +/
Сообщение от PavelR (??) on 16-Ноя-14, 13:07 
>> Заголовок "Cookie: _authorized=admin" пробовали подставить?
>> Рекомендую эти заголовки тоже выставить, гении могли додуматься сделать и их проверки:
>> X-Requested-With: XMLHttpRequest
>> Referer: http://192.168.1.1/html/reboot.html
> Вновь при перезагрузке получил запрос в fiddler, роутер перезагрузился. Я снова подключился
> к нему, нажал Replay на запросе в fiddler и он вернул
> ошибку. Почему? Потому что я не умею пользоваться программой?:D
> Но суть не в этом. После этого я зашёл в админку, залогинился,
> а затем вернулся в fiddler и нажал Replay на запросе и
> роутер перезагрузился. Как это понимать?

Насколько я понял, из ответа первого запроса не надо передавать никаких параметров во второй, нужно тупо сделать два последовательных фиксированных запроса, один за другим - запрос на авторизации потом запрос на перезагрузку.

Первый запрос взведет внутри роутера флаг "авторизовались", второй просто выполнится.


Ответить | Правка | ^ к родителю #11 | Наверх | Cообщить модератору

13. "Секрет POST запроса http"  +/
Сообщение от furevor email(ok) on 16-Ноя-14, 13:32 
>[оверквотинг удален]
>> Вновь при перезагрузке получил запрос в fiddler, роутер перезагрузился. Я снова подключился
>> к нему, нажал Replay на запросе в fiddler и он вернул
>> ошибку. Почему? Потому что я не умею пользоваться программой?:D
>> Но суть не в этом. После этого я зашёл в админку, залогинился,
>> а затем вернулся в fiddler и нажал Replay на запросе и
>> роутер перезагрузился. Как это понимать?
> Насколько я понял, из ответа первого запроса не надо передавать никаких параметров
> во второй, нужно тупо сделать два последовательных фиксированных запроса, один за
> другим - запрос на авторизации потом запрос на перезагрузку.
> Первый запрос взведет внутри роутера флаг "авторизовались", второй просто выполнится.

Вооо... Вот о флаге в роутере я не подумал.. Потому что меня мучил вопрос почему если я из фиддлера делаю запрос на авторизацию, а потом делаю запрос на перезагрузку, то он перезагружается так же как если бы я логинился в админке, а потом делал запрос на перезагрузку из фиддлера. Я думал роутер что-то куда-то специфическое возвращает, что потом используется в запросе на перезагрузку, чего я в упор не вижу, анализируя запрос в том же фиддлере.
Не успел пока всё это на андроиде проверить, это в фиддлере тыкнул Replay и всё, а там же формировать запрос надо руками..

Ответить | Правка | ^ к родителю #12 | Наверх | Cообщить модератору

14. "Секрет POST запроса http"  +/
Сообщение от furevor email(ok) on 16-Ноя-14, 22:58 
Спасибо! Всё получилось. 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

Ответить | Правка | ^ к родителю #12 | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру