Skip to main content

通过 mitmproxy 开发的便捷工具包

Project description

介绍

mitmtools 是根据 mitmproxy 封装的工具库

具备如下功能

  • 替换响应文件
  • 修改部分响应内容
  • 移除部分响应内容
  • hook 注入

安装

pip install mitmtools

替换响应文件

  • ReplaceByFile:通过正则匹配 url,使用文件替换整个响应
  • ReplaceByStr:通过正则匹配 url,使用字典替换部分字段
ReplaceByFile(pattern='', filepath='', max_times=0)  # 注意 max_time 为可选参数,代表匹配次数
ReplaceByStr(pattern='', replace_dict={'':''})

移除部分响应内容

  • RemoveContent:通过正则匹配 url,并去除部分响应内容
RemoveContent(pattern='', remove_list=['x']), max_times=0)

hook 注入

  • HookHtml:通过正则匹配 url,通过 html 进行插入 script 标签进行注入
  • HookJs:通过正则匹配 url,通过 js 进行注入
HookHtml(pattern='', filepath='', content='')
HookJs(pattern='', filepath='', content='')

注意

html 注入属于 xss 攻击,部分会有 csp 防护导致 script 不会执行,从而 hook 失败

友情提醒:任何注入都可能被检测!

查看

如果只是想查看请求过程的话,直接使用 Show

Show()

执行

将需要执行的方法单独放一个 .py 文件,并放在 addons 列表中,如下:

"""
    这只是一个配置的例子
    
    注意:
        启动之后,文件是动态的,随时修改随时生效
        启动程序要和该程序在同一目录,不然可能找不到文件路径
        使用中要注意缓存的影响,停用缓存或清除缓存再尝试
"""
from mitmtools import Show
from mitmtools.remove import RemoveContent
from mitmtools.hook import HookJs, HookHtml
from mitmtools.replace import ReplaceByStr, ReplaceByFile

addons = [
    Show(),  # 输出请求、响应

    # replace
    # ReplaceByStr(pattern='https://www.baidu.com/', replace_dict={'百度一下,你就知道': '百度一下,你也不知道'})
    # ReplaceByFile(pattern='^https://www.baidu.com.?$', filepath="./mitmtools/static/index.html")

    # hook
    # HookHtml(pattern='https://www.baidu.com/', filepath='./mitmtools/static/hookCookie.js'),
    # HookHtml(pattern='https://www.baidu.com/', content='''
    #     (function () {
    #         var gkDocument = document;
    #         var gkPrint = console.log;
    #         Object.defineProperty(document, "cookie", {
    #             set: function (val) {
    #                 gkPrint("正在设置 Cookie:", val)
    #                 debugger;
    #                 cookieTemp = val;
    #                 return val
    #             },
    #             get: function () {
    #                 return gkDocument.cookie
    #             }
    #         })
    #     })()
    # '''),
    HookJs(
        pattern="san_b247717.js",
        filepath='./mitmtools/static/hookCookie.js'
    ),

    # remove
    # RemoveContent(pattern='https://www.baidu.com/', remove_list=['就知道'])
]

随后调用如下代码,或者自己通过 mitmproxy 命令行命令自行启动

from mitmtools.start import execute, execute_web

execute(
    filepath='handler.py',
    port=8866,
    args=['--ssl-insecure', '--mode', 'upstream:http://127.0.0.1:26766']
)  # 有其它命令都可以通过 args 传

execute_web(port=8866)    # 有其它命令都可以通过 args 传

常用启动参数

--ssl-insecure                          # 禁用 ssl 验证
--mode upstream:http://127.0.0.1:1111/  # 设置代理

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

mitmtools-0.0.9.tar.gz (8.3 kB view details)

Uploaded Source

File details

Details for the file mitmtools-0.0.9.tar.gz.

File metadata

  • Download URL: mitmtools-0.0.9.tar.gz
  • Upload date:
  • Size: 8.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.1 CPython/3.9.2

File hashes

Hashes for mitmtools-0.0.9.tar.gz
Algorithm Hash digest
SHA256 7e84200086ee97765f0ba76254d3d2aa4e4b51f230c00a9ee52878fe9b070dcc
MD5 466bc68977340edd0ecf1eb385f383ae
BLAKE2b-256 5900e3239e0d6c04d0565468a7f98f6edd348acca6b257a4caed05d720de64a4

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page