ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

mitmproxy使用指南

2022-06-08 09:35:48  阅读:235  来源: 互联网

标签:http python request flow mitmproxy 使用指南 data


前言

这是一款抓包软件比起其他的抓包软件(如:fiddler、burpsuite),它的优点在于做二次开发加脚本处理文件。

一、python环境安装

本人用的是Python3.7.3去官网下载安装即可。

二、安装mitmproxy

  • 使用pip install mitmproxypip install pipxpipx install mitmproxy
  • 如果你需要抓https的包你还需要再运行后访问http://mitm.it/来安装安装证书。

三、使用命令

mitmproxy 工具有以下三部分组成:

  • mitmproxy -> 命令行工具(win不支持)
  • mitmdump -> 加载 python 脚本
  • mitmweb -> web 界面工具
    常用参数
    -h 帮助信息
    -p 修改监听端口
    -s 加载 python 脚本(例如:-s "script.py --bar" # 执行脚本,通过双引号来添加参数)
    默认监听端口8080

四、脚本样例

#!/usr/bin/python
# -*- coding: UTF-8 -*-
from mitmproxy import http

def request(flow: http.HTTPFlow):
    # 增加请求的头信息
    flow.request.headers["myheader"] = "shifeng"
    print(flow.request.headers)
#!/usr/bin/python
# -*- coding: UTF-8 -*-

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
            )
#!/usr/bin/python
# -*- coding: UTF-8 -*-
import json

from mitmproxy import http


def response(flow: http.HTTPFlow):
    # 加上过滤条件
    if "quote.json" in flow.request.pretty_url and "x=" in flow.request.pretty_url:
        # 把响应数据转化成python对象,保存到data中
        data = json.loads(flow.response.content)
        # 对第一个股票保持原样
        data['data']['items'][0] = data['data']['items'][0]
        # 对第二个股票名字加长一倍
        data['data']['items'][1]['quote']['name'] = data['data']['items'][1]['quote']['name'] * 2
        # 对第三个股票名字变成空
        data['data']['items'][2]['quote']['name'] = None
        # 把修改后的内容赋值给 response 原始数据格式
        flow.response.text = json.dumps(data)

参考:https://www.lmlphp.com/user/23204/article/item/573492/

五、一些报错

现象:安装以后无法使用报错显示 ImportError: cannot import name ‘soft_unicode‘ from ‘markupsafe‘
解决:命令行运行 python -m pip install markupsafe==2.0.1

现象:正常启动比且代理服务器已开启无反应或没有想要的数据
解决:可以是端口被占用了,换个端口试试

现象:抓不到心怡的数据
解决:这里发现window上的设置也有影响关闭如下图设置就出现数据了

标签:http,python,request,flow,mitmproxy,使用指南,data
来源: https://www.cnblogs.com/yisicanmeng/p/16351824.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有