mitmproxy手摸手教学

首先还是要先安装依赖环境
pip install mitmproxy
mitmproxy 提供了三个命令,启动模式不同
mitmproxy -> 提供一个命令行界面(该命令不支持windows)。
mitmdump -> 提供一个简单的终端输出。
mitmweb -> 提供一个浏览器界面。
启动监听
mitmdump -w d://log.txt
Proxy server listening at http://*:8080
# 该命令会占用本地8080端口,将监听的数据写入到 d://log.txt 文件中。
证书的安装,分2中:
  1. 通过访问连接:http://mitm.it/ 来安装证书
  2. 接着在.mitmproxy目录找到CA证书,如下图所示
    在这里插入图片描述
mitmdump的密令参数
-s “script.py --bar” # 执行脚本,通过双引号来添加参数
-n 不启动代理
-r 读取文件内容
-w 写入文件
~s 过滤响应数据
~q 过滤请求数据

mitmdump -p 8999 -w baidu.txt

配合Python脚本,下面开始演示,先新建一个py文件(lyc.py)
def request(flow):
    # 获取请求对象
    request = flow.request
    # 实例化输出类
    info = ctx.log.info
    # 打印请求的url
    info(request.url)
    # 打印请求方法
    info(request.method)
    # 打印host头
    info(request.host)
    # 打印请求端口
    info(str(request.port))
    # 打印所有请求头部
    info(str(request.headers))
    # 打印cookie头
    info(str(request.cookies))
# 所有服务器响应的数据包都会被这个方法处理
# 所谓的处理,我们这里只是打印一下一些项
def response(flow):
    # 获取响应对象
    response = flow.response
    # 实例化输出类
    info = ctx.log.info
    # 打印响应码
    info(str(response.status_code))
    # 打印所有头部
    info(str(response.headers))
    # 打印cookie头部
    info(str(response.cookies))
    # 打印响应报文内容
    info(str(response.text))


#启动命令
mitmdump.exe -s lyc.py

在这里插入图片描述

具体示例1:
#!/usr/bin/python
# -*- coding: UTF-8 -*-
"""
@author:chenshifeng
@file:test_maplocal.py
@time:2020/11/29
"""
from mitmproxy import http


def request(flow: http.HTTPFlow):
    # 修改判断条件
    if "quote.json" in flow.request.pretty_url and "x=" in flow.request.pretty_url:
        # 打开保存在本地的数据文件
        with open("/Users/chenshifeng/MyCode/PythonCode/SFDSZL/interface/quote.json") as f:
            # 创造一个 response
            flow.response = http.HTTPResponse.make(
                200,  # (optional) status code
                # 读取文件中数据作为返回内容
                f.read(),
                # 指定返回数据的类型
                {"Content-Type": "application/json"}  # (optional) headers
            )
具体示例2.1:
from mitmproxy import ctx
import json


def response(flow):

    start_url = "https://blog.csdn.net/community/home-api/v1/get-fans-list"

    response = flow.response

    if flow.request.url.startswith(start_url):
        text = response.text
        data = json.loads(text)
        print(data)

具体示例2.2:
import json


class GetFans(object):
    def response(self, flow):
        start_url = "https://blog.csdn.net/community/home-api/v1/get-fans-list"

        response = flow.response
        if flow.request.url.startswith(start_url):
            text = response.text
            data = json.loads(text)
            print(data)

addons = [
    GetFans()
]


未完待续…

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值