[PYTHON] Ajoutez votre propre vue de contenu à mitmproxy

Qu'est-ce que l'affichage du contenu?

mitmproxy vous permet de choisir le format à afficher lors de l'affichage du contenu de la réponse à la requête.

image.png

Le mécanisme d'affichage de chaque format est appelé ** vue du contenu ** dans mitmproxy.

Les éléments de base tels que html, css et json sont fournis en standard.

Créez votre propre vue de contenu

Puisque mimproxy peut être étendu avec Python, vous pouvez également créer votre propre ** vue de contenu **!

Exemples dans le référentiel officiel github Alors, prenons ce code comme exemple.

Un exemple de ceci est ** "Afficher le contenu de la demande / réponse dans un cas d'échange" **.

custom_contentview.py


from mitmproxy import contentviews


# contentviews.Créer une classe qui hérite de View
class ViewSwapCase(contentviews.View):
    name = "swapcase"

    #Spécifiez une touche de raccourci pour appliquer cet affichage lors du démarrage avec CUI
    prompt = ("swap case text", "z")

    content_types = ["text/plain"]

    #Mettez le processus de réécriture de contenu principal ici
    # data:Contenu de la demande / réponse
    # metadata: metadata["headers"]Vous pouvez voir les en-têtes HTTP sur
    def __call__(self, data, **metadata):
        return "case-swapped text", contentviews.format_text(data.swapcase())


view = ViewSwapCase()


def load(l):
    contentviews.add(view)


def done():
    contentviews.remove(view)

charger et démarrer

Je ne pouvais pas bien le lire avec mon propre mitmproxy tel quel. En regardant le code source de mitmproxy et en faisant diverses choses, j'ai réussi à charger en changeant def load (l) en def start ().

-def load(l):
+def start():
    contentviews.add(view)

En regardant le github de mitmproxy, il semble que la version que vous exécutez soit différente car elle a été réécrite de start à load en cours de route.

addon loader: add boot_into, which replaces returning from start()

Commencez avec le script d'extension installé

Vous pouvez ajouter le chemin du fichier de script en ajoutant -s à l'argument de la commande mitmproxy (ou mitmweb, mitmdump).

J'utilise mitmweb parce que je ne peux pas utiliser mitmproxy dans un environnement Windows.

mitmweb -s custom_contentview.py

Maintenant, si ** swapcase ** est ajouté à la sélection du format de demande / réponse, cela réussit.

image.png

Lien de référence

Overview — mitmproxy 2.0.2 documentation

Recommended Posts

Ajoutez votre propre vue de contenu à mitmproxy
Reliez ROS à votre propre protocole
Ajoutez une carte GPIO à votre ordinateur. (1)
Migrez vos propres données CMS vers WordPress
Pour importer votre propre module avec jupyter
Comment installer votre propre autorité de certification (racine)
[python] Comment ajouter RDF triple à votre propre serveur Fuseki en utilisant rdflib
Ajoutez votre fonction d'affichage préférée à la recherche de pip
Comment définir votre propre cible dans Sage
Annotez vos propres données pour entraîner Mask R-CNN
Étapes pour installer votre propre bibliothèque avec pip
Mémo pour créer votre propre Box avec le Python de Pepper
[Introduction à l'application Udemy Python3 +] 66. Création de votre propre exception
Essayez d'améliorer votre propre quiz d'introduction avec Python
Essayez de mettre des LED dans votre propre PC (légèrement)
[Road to Intermediate Python] Définissez dans votre propre classe
Créez votre propre exception
[Ansible] Comment appeler des variables lors de la création de votre propre module
Comment utiliser pyenv et pyenv-virtualenv à votre manière
(Note) Comment passer le chemin de votre propre module
Utilisez mitmproxy pour forcer l'API de votre application dans un environnement de développement