Cet article est le 19ème jour du Calendrier de l'Avent Crawler / Web Scraping 2016.
Tout d'abord, mitmproxy n'est ni un outil de grattage ni un outil d'exploration **, mais c'est le but de cet article de l'utiliser pour le grattage. ..
Comme son nom l'indique, mtimproxy est ** proxy **, ce qui semble être une abréviation pour man-in-the-middle proxy. OSS fait par Python.
Cela ressemble à ceci dans un diagramme. Pour ainsi dire, est-ce l'image d'un proxy qui s'attaque lui-même en tant qu'intermédiaire?
Je l'ai écrit moi-même et j'ai été un peu surpris car c'était un chiffre sans signification, mais avec mitmproxy,
Cela signifie que vous pouvez ** traiter automatiquement tous les sites que vous visitez avec un script Python **.
Être capable de traiter une réponse en Python signifie que vous pouvez enregistrer la réponse, afin qu'elle puisse être utilisée comme une sorte d'outil d'exploration **.
Bien sûr, mitmproxy n'est qu'un outil proxy, vous ne pouvez donc pas explorer automatiquement aucune stratégie. Cette fois, la stratégie consiste pour ** les humains à fonctionner comme des araignées (robots) ** et à enregistrer et à gratter les résultats de la navigation **.
Laissez-moi vous expliquer pourquoi le grattage avec mitmproxy est le plus fort.
--L'humain décide de la page à télécharger, mais l'humain est plus intelligent que le bot (à partir de 2016) --L'humain se comporte plus naturellement que le bot (à partir de 2016) --Si vous pouvez utiliser un proxy, vous pouvez enregistrer tout type de site
Par exemple, existe-t-il les cas d'utilisation suivants?
--Je souhaite explorer l'API des sites Javascript ou Flash ――Je veux analyser le site que j'ai vu en un jour
Au contraire, je ne pense pas que les éléments suivants conviennent.
--Je veux ramper régulièrement ――Je veux explorer des sites partout dans le monde par moi-même --Je veux explorer les résultats sur les sites où le rendu Javascript est important, comme SPA
L'installation est simple. Si vous êtes bloqué dans l'installation, utilisez la [version Docker] officielle (https://hub.docker.com/r/mitmproxy/mitmproxy/).
pip install mitmproxy
mitmproxy a deux outils. mitmproxy et mitmdump. Le premier est un CUI et un outil interactif. Ce dernier n'a aucune interaction et convient aux applications de grattage.
La méthode de démarrage est simple, tapez simplement «mitmdump» dans le shell. Par défaut, il démarre sur le port 8080
, vous pouvez donc spécifier 127.0.0.1: 8080
comme proxy (dans Chrome, Proxy SwitchySharp. L'extension / webstore / detail / proxy-switchysharp / dpplabbmogkhghncfbfdeeokoefdjegm? Hl = ja) est facile à utiliser).
Si les paramètres de proxy réussissent, ouvrez le site approprié. Si tout se passe bien, le contenu reçu par mtimdump devrait ressembler à ceci:
Voici comment exécuter un script Python avec mitmproxy.
mitmdump -s path_to_script.py
Par exemple, le script à exécuter peut être le suivant. L'exemple suivant réduit le type de contenu à «text / html» et l'enregistre.
def response(flow):
content_type = flow.response.headers.get('Content-Type', '')
path = flow.request.url.replace('/', '_').replace(':', '_')
if content_type.startswith('text/html'):
with open(path, 'w') as f:
f.write(flow.response.text)
Bien sûr, je pense que vous devriez extraire les éléments en utilisant lxml, etc., le cas échéant.
D'autres exemples qui couvrent les fonctionnalités de mitmproxy sont sur GitHub.
J'ai introduit la technique d'exploration en utilisant mitmproxy. Les êtres humains sont les meilleurs!
J'ai omis l'explication, mais il prend également en charge les sites SSL (veuillez google pour plus de détails).
Cette méthode est, pour ainsi dire, une méthode comme une attaque intermédiaire. Si vous essayez d'attaquer quelqu'un sans votre consentement, ce sera un bon crime, alors ne le faites pas. Pour la fin, utilisons-le pour enregistrer et analyser le site que vous avez parcouru. De plus, arrêtez d'utiliser les API privées qui sont interdites par nos conditions d'utilisation.
Recommended Posts