zoukankan      html  css  js  c++  java
  • mitmproxy 代理介绍及入门

    转载请注明出处 https://www.cnblogs.com/majianming/p/11823669.html
    mitmproxy 是一个python 写成的代理工具,可以代理https、http等协议

    重点是 可以自定义脚本 例如获取请求信息并保存到数据库,修改响应等等的操作(眨眼)

    可以使用pip形式安装也可以使用编译好的二进制文件安装 (二进制文件 下载地址https://mitmproxy.org/downloads/)

    但是 如果你需要自定义脚本而且安装第三方库的话 需要使用pip形式的安装

    pip 形式的安装,首先保证你有安装了python 已经pip

    下面以windows 安装为例

    如果是windows 系统 还需要安装Microsoft Build Tools( https://www.microsoft.com/en-us/download/confirmation.aspx?id=48159)

    然后

    执行

    pip install mitmproxy

    如果需要在任何地方都能执行命令 ,那么最好按照提示将类似 C:UsersUserAppDataRoamingPythonPython37Scripts 的路径加入系统环境Path ,否则 你可能需要一直使用全路径的形式访问

    安装成功之后 上述路径下应该有 这些可执行文件

    mitmweb.exe和mitmproxy.exe是可视化的代理程序

    mitmproxy.exe打开会在控制台显示所有代理请求,但是windows下不可用,

    mitmweb.exe 会打开默认的浏览器并显示所有代理请求

    默认代理监听端口为8080 可以在命令行中 -p 8081 这里使用8080 端口 命令mitmweb (mitmweb -p 8080 )启动

    接着我们在浏览器中实验效果 为了方便 我们使用

    SwitchyOmega(https://chrome.google.com/webstore/detail/padekgcemlokbadohgkifijomclgjgif)进行代理切换

    

    然后在 选择使用刚刚创建的代理就可以了

    然后访问一个网站 就可以在刚刚弹出来的窗口中看到所有的请求了 (如果是https 系统需要导入证书 证书一般在用户目录的.mitmproxy文件夹中,

    如果是火狐,因为mitmproxy 的根证书不是使用浏览器的证书信任关系(火狐自己有一套证书体系),所以 需要在设置→ 隐私和安全->安全->证书->查看证书→证书颁发机构→导入 导入证书)

    如果需要些脚本

    可以参考一下的格式 这个脚本是将登录请求保存下来 并把信息发送到指定的服务器上

    import time
    
    import mitmproxy.http
    import requests
    from mitmproxy import ctx
    
    intercept_url = "xx"
    report_server_url = "xxxx"
    
    
    class LoginIntercept:
    
        def request(self, flow: mitmproxy.http.HTTPFlow):
            if intercept_url in flow.request.pretty_url:
                ctx.log.info("监听地址 %s" % flow.request.pretty_url)
                ctx.log.info("请求头 %s" % flow.request.headers)
                info = {
                    "url": flow.request.pretty_url,
     "headers": str(flow.request.headers),
     }
                init_data = {"update_timestamp": int(time.time()),
     "info": info}
                try:
                    requests.post(report_server_url, json=init_data,timeout=2)
                except Exception as e:
                    ctx.log.error("更新信息失败!原因【%r】" % e)
    
    
    addons = [
        LoginIntercept()
    ]
    

    命令行 mitmweb -p 8080 -s script.py 启动
    转载请注明出处 https://www.cnblogs.com/majianming/p/11823669.html


    参考

    官网文档 https://mitmproxy.org/

    github例子 https://github.com/mitmproxy/mitmproxy/tree/master/examples

  • 相关阅读:
    linux下小知识点积累
    马斯洛需求层次理论
    tar命令的小经验
    shell 和c语言的区别
    使用vue实现的品牌列表简单小例子
    vue的基本代码以及常见指令
    MVC和MVVM
    CSS3幽灵
    Web版App,原生App,混合App的区别以及优缺点
    常见的sql操作
  • 原文地址:https://www.cnblogs.com/majianming/p/11823669.html
Copyright © 2011-2022 走看看