mitmproxy 采坑记录

13 篇文章 0 订阅
8 篇文章 0 订阅

最近在使用mitmproxy,遇到了一些问题,记录一下,希望帮到有缘人,我的环境是win10专业版

  • 问题1

    pip install mitmproxy 后使用mitmdump --version报错

    (py3_spider) F:\apps\interpreter>mitmdump --version
    Traceback (most recent call last):
      File "f:\apps\interpreter\python3.6.4\lib\runpy.py", line 193, in _run_module_as_main
        "__main__", mod_spec)
      File "f:\apps\interpreter\python3.6.4\lib\runpy.py", line 85, in _run_code
        exec(code, run_globals)
      File "F:\apps\interpreter\.virtualenv\py3_spider\Scripts\mitmdump.exe\__main__.py", line 4, in <module>
      File "f:\apps\interpreter\.virtualenv\py3_spider\lib\site-packages\mitmproxy\__init__.py", line 8, in <module>
        asyncio.set_event_loop_policy(asyncio.WindowsSelectorEventLoopPolicy())
    AttributeError: module 'asyncio' has no attribute 'WindowsSelectorEventLoopPolicy'
    

    问题原因

    版本不兼容,pip install mitmproxy 默认安装最新版

    解决方法

    pip install mitmproxy==5.0.0, 问题解决

    H:\use_mitmproxy>mitmdump --version
    Mitmproxy: 5.0.0
    Python:    3.6.4
    OpenSSL:   OpenSSL 1.1.0j  20 Nov 2018
    Platform:  Windows-10-10.0.19041-SP0
    
  • 问题2

    cmd 命令行输入mitmdump -s demo1.py,提示No module named ‘mitmproxy_script

    H:\use_mitmproxy>mitmdump -s demo1.py
    Loading script ./demo1.py
    in script ./demo1.py: No module named '__mitmproxy_script__'
    Proxy server listening at http://*:8080
    

    问题表现为,demo1.py中的脚本逻辑不会执行

    问题原因

    被调用脚本中有导入自己写的包,命令行调用脚本引起的导包路径不存在的问题

    解决方法

    在被调用的脚本中导入自己写的模块前,添加如下代码

    import os, sys
    path = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
    if path not in sys.path:
        sys.path.append(path)
    
    from use_mitmproxy.tables import zf_Token
    

    最后一行是我自己的模块

  • 问题3

    脚本中监控的域名(网页),无响应内容,就像卡死了一样

    问题原因

    脚本def request(self, flow: mitmproxy.http.HTTPFlow):中写的有return 语句,阻止了请求,自然也就没有响应信息,就像下面这样

    #!/usr/bin/env python
    # -*- coding: utf-8 -*-
    import mitmproxy.http
    
    
    class Demo():
    
        def request(self, flow: mitmproxy.http.HTTPFlow):
            if "www.baidu.com" in flow.request.url:
                print(flow.request.url)
                return
            pass
    
        def response(self, flow: mitmproxy.http.HTTPFlow):
            pass
    
    
    addons = [
        Demo(),
    ]
    

    可以参考,下面的文章中关于针对 HTTP 生命周期的介绍,里面讲的比较详细

    使用 mitmproxy + python 做拦截代理

    解决方法

    删除return语句

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
MITMProxy 是一个强大的网络流量拦截和调试工具,它允许你拦截、修改和分析HTTP/HTTPS等网络请求与响应。通过 MITMProxy,你可以进行中间人攻击(Man-in-the-Middle, MITM)模拟,进行开发者测试、安全审计或网络监控。 **MITMProxy教程的基本步骤:** 1. **安装与启动**: - 安装最新版本的MITMProxy:从其官方网站下载适用于你的操作系统的二进制文件或使用pip安装。 - 使用命令行启动 mitmproxy (`mitmproxy` 或 `mitmdump`),通常默认监听 HTTP 和 HTTPS。 2. **基本操作**: - **抓包**:连接到要分析的网络,看到所有经过代理的请求和响应。 - **过滤**:使用命令行或交互式模式过滤特定请求,如URL、HTTP头或数据内容。 - **修改**:修改请求参数、添加或删除headers,甚至替换整个响应。 3. **API和插件**: - 学习 MITMProxy API,通过Python脚本扩展功能,如自动化处理或创建更复杂的拦截规则。 - 安装插件库,如 mitmproxy.contrib,增加更多的功能,如SSL证书管理、自动登录等。 4. **认证处理**: - 针对带有身份验证的网站,理解如何保存和重用cookie,或使用插件支持OAuth等。 5. **高级功能**: - 学习使用mitmproxy的交互模式(mitmproxy -s script.py),编写脚本来自动化复杂任务。 - 了解 mitmdump,它是mitmproxy的命令行接口,可用于批量处理网络流量。 **相关问题--:** 1. 你如何在mitmproxy中设置代理? 2. 如何查看和保存请求/响应的历史记录? 3. 有没有推荐的插件可以用于mitmproxy进行网站审计?

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值