The OpenNET Project / Index page

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




Версия для распечатки Пред. тема | След. тема
Новые ответы [ Отслеживать ]
Секрет POST запроса http, !*! furevor, 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, но это я уже сам разберусь).
Спасибо!

  • Секрет 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)
            > Прекратим этот бессмысленный диалог. Вот здесь скриншоты из программы http analyzer
            > (ссылка на мой dropbox)
            > https://dl.dropboxusercontent.com/u/65360035/screen.zip
            > Если вы действительно тот за кого себя выдаёте, то, увидев это, вам
            > не составит труда указать как исправить положение, а если нет ни
            > знаний, ни желания помочь, то впредь попрошу воздержаться от бесполезных ответов
            > в этой теме. Спасибо!

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

            Успехов.

            • Секрет 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




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

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