爬虫从入门到精通(18) |Python抓包工具Mitmproxy介绍

文章目录

  • 一、前言
  • 二、安装mitmproxy工具
  • 三、mitmdump
  • 四、mitmweb
  • 五、编写脚本

爬虫从入门到精通(18) |Python抓包工具Mitmproxy介绍_第1张图片

一、前言

除了我们的抓包软件fiddler和Charles,我们今天再介绍一款抓包工具mitmproxy。

不同于 fiddler 或 wireshark 等抓包工具,mitmproxy 不仅可以截获请求帮助开发者查看、分析,更可以通过自定义脚本进行二次开发。举例来说,利用 fiddler 可以过滤出浏览器对某个特定 url 的请求,并查看、分析其数据,但实现不了高度定制化的需求,类似于:“截获对浏览器对该 url 的请求,将返回内容置空,并将真实的返回内容存到某个数据库,出现异常时发出邮件通知”。而对于 mitmproxy,这样的需求可以通过载入自定义 python 脚本轻松实现。

二、安装mitmproxy工具

pip install mitmproxy

查看是否安装成功

mitmdump --version

爬虫从入门到精通(18) |Python抓包工具Mitmproxy介绍_第2张图片

mitmproxy 提供了三个命令,启动模式不同:

  • mitmproxy 提供一个命令行界面(该命令不支持windows)
  • mitmdump 提供一个简单的终端输出。
  • mitmweb 提供一个浏览器界面。

三、mitmdump

mitmdump是mitmproxy所提供的命令之一。它提供类似于tcpdump的功能,让您可以查看、记录和以编程方式转换HTTP流量。

1.启动监听

>>mitmdump -w d://log.txt
Proxy server listening at http://*:8080

2.启动浏览器
这里以360极速浏览器为例,因为可以方便修改代理
爬虫从入门到精通(18) |Python抓包工具Mitmproxy介绍_第3张图片
然后进入百度,会发现刚才的d盘目录生成了log.txt
爬虫从入门到精通(18) |Python抓包工具Mitmproxy介绍_第4张图片
爬虫从入门到精通(18) |Python抓包工具Mitmproxy介绍_第5张图片

四、mitmweb

我们在命令行直接输入mitmweb,会发现我们进入一个web页面,是可视化的抓包页面
爬虫从入门到精通(18) |Python抓包工具Mitmproxy介绍_第6张图片

360极速浏览器链接80代理后,我们访问百度,会抓到如下的包
爬虫从入门到精通(18) |Python抓包工具Mitmproxy介绍_第7张图片

五、编写脚本

mitmproxy最厉害的功能当然是对截获的数据 ,通过脚本进行一些特定事情的修改!

编写一个 demo.py 文件供 mitmproxy 加载,文件定义了变量 addons,addons 是个数组,每个元素是一个类实例,这些类有若干方法,这些方法实现了某些 mitmproxy 提供的事件,mitmproxy 会在某个事件发生时调用对应的方法。这些类,称为一个个 addon,比如一个叫 Counter 的 addon:

# coding: utf-8 
# Author:Qinfan
# Time  : 2022/2/11 14:59

import mitmproxy.http
from mitmproxy import ctx


class Counter:
    def __init__(self):
        self.num = 0

    def request(self, flow: mitmproxy.http.HTTPFlow):
        self.num = self.num + 1
        ctx.log.info("第%d个flows" % self.num)


addons = [
    Counter()
]

命令行运行

mitmweb -s demo.py

访问百度
爬虫从入门到精通(18) |Python抓包工具Mitmproxy介绍_第8张图片
其他篡改可以参考:

https://www.cnblogs.com/grandlulu/p/9525417.html

爬虫从入门到精通(18) |Python抓包工具Mitmproxy介绍_第9张图片

你可能感兴趣的:([Python-网络爬虫入门],爬虫,python,开发语言)