目录

一、安装mitmproxy库

二、mitmproxy证书配置

三、设置代理

四、常用命令

1、mitmdump的启动

2、mitmdump指定端口的启动

3、指定python脚本

4、保存截获数据

五、常用代码


一、安装mitmproxy库

pip install mitmproxy -i https://pypi.tuna.tsinghua.edu.cn/simple

二、mitmproxy证书配置

mitmproxy和其他抓包软件一样,需要进行证书配置,由于我们要抓取的大部分页面都采用了HTTPS,也就是经过加密,若没有证书,就无法识别抓取的数据。另外,需要注意的是,mitmproxy一样需要在PC和手机端安装证书。

1、首先cmd运行

mitmdump

命令,以便在windows系统中产生CA证书

2、然后再.mitmproxy目录找到CA证书

3、双击mitmproxy-ca.p12进入导入证书的页面,点击“下一步”

4、不用更改地址,直接下一步

5、不用输入密码,直接点击下一步

6、选择“将所有的证书都放入下列存储”,接着选择“受信任的根证书颁发机构”

7、点击完成

8、点击是

8、接着在手机上配置证书,先将mitmproxy-ca-cert.pem文件发送至手机,推荐用邮箱方式,接着在手机上可以把直接点击附件并安装。最后在手机“设置”、“通用”、“描述文件与设备管理”,找到“证书信任设置”,信任即可。

三、设置代理


1、可以在pc(windows)中用cmd命令行,输入命令ipconfig,查看电脑ip。

2、接着在手机上设置代理,其实就是将pc电脑的ip,设置成代理即可。

3、配置代理,改为手动

4、电脑设置:

地址:http://localhost

端口:8080

其他:127.0.0.1;*.local

不要勾选请勿将代理服务器用于本地(Intranet)地址

四、常用命令

1、mitmdump的启动

mitmdump

2、mitmdump指定端口的启动

mitmdump -p 8080

3、指定python脚本

mitmdump -p 8080 -s test.py

4、保存截获数据

mitmdump -w  test.txt

五、常用代码
 

import mitmproxy.http


class CaptureInfoWriteFile:
    def __init__(self):
        self.records = []

    def request(self, flow: mitmproxy.http.HTTPFlow):
        self.url = flow.request.url  # 接口url
        self.host = flow.request.host  # 域名
        self.path = flow.request.path  # 接口地址
        self.method = flow.request.method  # 请求方式
        self.params = dict(flow.request.query or {})
        self.content = flow.request.content
        self.timestamp_start = flow.request.timestamp_start  # 请求开始时间戳
        self.timestamp_end = flow.request.timestamp_end  # 请求结束时间戳
        self.headers = flow.request.headers  # 请求头
        self.body = flow.request.text  # 请求体

    def response(self, flow: mitmproxy.http.HTTPFlow):
        response_status_code = flow.response.status_code  # 响应状态码
        response_text = flow.response.text  # 响应体
        response_content = flow.response.content
        response_timestamp_start = flow.response.timestamp_start  # 响应开始时间
        response_timestamp_end = flow.response.timestamp_end  # 响应结束时间
        response_header = flow.response.headers  # 响应头

        self.records.append({
            "URL": self.url,
            "Method": self.method,
            "Headers": self.headers,
            "Params": self.params,
            "Body": self.body,
            "Response Text": response_text,
            "Status Code": response_status_code
        })

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐