Хобрук: Ваш путь к мастерству в программировании

Mitmproxy подделывает запросы/ответы GET и POST в одном скрипте

Запрос POST к определенному URL-адресу (http://test.com) выглядит следующим образом:

{

"messageType": "OK",
"city": {
    "Name": "Paris",
    "Views": {
        "1231": {
            "id": 4234,
             "enableView": false
        },
    },
    "Views": [5447, 8457],
    "messages": [{
        "id": "message_6443",
        "eTag": 756754338
    }]
},
"client": {
    "Id": 53,
    "email": "[email protected]",
    "firstName": "test",
    "lastName": "test",
    "id": 52352352,
    "uuid": "5631f-grdeh4",
    "isAdmin": false,

Мне нужно перехватить это и изменить «isAdmin» на true.

И запрос GET на определенный URL-адрес (https://test.com/profiles/{Random_Numbers}/id }) имеет «ответ» [декодированный gzip] JSON

{
"id": 0, 
"Code": "Admin", 
"display": "RRRR"
}

Мне нужно изменить значение «id» на 5.

Итак, в основном мне нужно написать один скрипт, который будет делать эти два.

До сих пор я пытался воспользоваться примерами кода в Github, но не получил ожидаемого результата. (Я полный нуб :\) и надеюсь, что кто-то здесь поможет мне начать работу. Заранее спасибо!

Редактировать: в соответствии с примерами кода в Github,modify_response_body.py:

from libmproxy.protocol.http import decoded

def start(context, argv):
  if len(argv) != 3:
   raise ValueError('Usage: -s "modify-response-body.py old new"')
    context.old, context.new = argv[1], argv[2]


def response(context, flow):
    with decoded(flow.response):  # automatically decode gzipped responses.
      flow.response.content = flow.response.content.replace(context.old, context.new)`

Как мне реализовать это для моего senario?

Возможно, лучше использовать libmproxy для получения http-запроса и ответа.


  • Вы должны показать свои неудачные попытки, код и результаты для основы вашего вопроса. 26.04.2015
  • Почему бы не проанализировать это с помощью модуля json вместо использования регулярного выражения? 27.04.2015
  • @VasiliSyrakis Да! синтаксический анализ с помощью модуля json вместо регулярного выражения звучит намного лучше. 27.04.2015
  • Затем перейдите к нему docs.python.org/3/library/json.html опыт твой учитель 27.04.2015

Ответы:


1

Сценарий, который вы разместили, и модуль Python JSON должны помочь вам довольно далеко:

def response(context, flow):
    if flow.request.url == "...": # optionally filter based on some criteria...
        with decoded(flow.response):  # automatically decode gzipped responses.
            data = json.loads(flow.response.content)
            data["foo"] = "bar"
            flow.response.content = json.dumps(data)
28.04.2015
  • Я использовал это решение, но оно не работает для меня... Я вижу функцию ответа, запущенную в журналах событий, но оператор if, кажется, никогда не увенчается успехом... Любая идея? 14.08.2018
  • Новые материалы

    Dall-E 2: недавние исследования показывают недостатки в искусстве, созданном искусственным интеллектом
    DALL-E 2 — это всеобщее внимание в индустрии искусственного интеллекта. Люди в списке ожидания пытаются заполучить продукт. Что это означает для развития креативной индустрии? О применении ИИ в..

    «Очень простой» эволюционный подход к обучению с подкреплением
    В прошлом семестре я посетил лекцию по обучению с подкреплением (RL) в моем университете. Честно говоря, я присоединился к нему официально, но я редко ходил на лекции, потому что в целом я нахожу..

    Освоение информационного поиска: создание интеллектуальных поисковых систем (глава 1)
    Глава 1. Поиск по ключевым словам: основы информационного поиска Справочная глава: «Оценка моделей поиска информации: подробное руководство по показателям производительности » Глава 1: «Поиск..

    Фишинг — Упаковано и зашифровано
    Будучи старшим ИТ-специалистом в небольшой фирме, я могу делать много разных вещей. Одна из этих вещей: специалист по кибербезопасности. Мне нравится это делать, потому что в настоящее время я..

    ВЫ РЕГРЕСС ЭТО?
    Чтобы понять, когда использовать регрессионный анализ, мы должны сначала понять, что именно он делает. Вот простой ответ, который появляется, когда вы используете Google: Регрессионный..

    Не зря же это называют интеллектом
    Стек — C#, Oracle Опыт — 4 года Работа — Разведывательный корпус Мне пора служить Может быть, я немного приукрашиваю себя, но там, где я живу, есть обязательная военная служба на 3..

    LeetCode Проблема 41. Первый пропущенный положительный результат
    LeetCode Проблема 41. Первый пропущенный положительный результат Учитывая несортированный массив целых чисел, найдите наименьшее пропущенное положительное целое число. Пример 1: Input:..