美文网首页软件安装配置
mitmproxy的下载及证书配置

mitmproxy的下载及证书配置

作者: Xyxtank | 来源:发表于2019-04-12 21:14 被阅读0次

    一、mitmproxy的安装

    image

    mitmproxy是一个抓包工具,类似于WireShark、Filddler,并且它支持抓取HTTP和HTTPS协议的数据包。另外,它还有两个非常有用的组件,一个mitmdump,它是mitmproxy的命令行接口,利用它可以对接python脚本;另一个是mitmweb,它是一个web程序,通过它可以清楚的观察mitmproxy捕获的数据情况,优点类似于Chrome浏览器。

    1、linux 安装mitmproxy
    pip3 install mitmproxy
    
    image
    2、windows下安装mitmproxy

    下载地址:https://mitmproxy.org/

    image

    二、安装中可能出现的问题

    在windows系统安装mitmproxy的时候,容易出现下面提示的错误

    error: Microsoft Visual C++ 14.0 is required. Get it with “Microsoft Visual C++ Build Tools”: http://landinghub.visualstudio.com/visual-cpp-build-tools
    

    此时,可以在微软官网直接下载 c++ 库之类的软件,然后再在命令行进行安装 mitmproxy即可。也可以在网上搜索MicrosoftVCTools2017,进行下载。

    下载地址:https://visualstudio.microsoft.com/zh-hans/downloads/

    三、mitmproxy证书配置

    mitmproxy和Charles软件一样,需要进行证书配置,为什么要进行证书配置?由于我们要抓取的大部分App页面都采用了HTTPS,也就是经过加密,若没有证书,就无法识别抓取的数据。另外,需要注意的是,mitmproxy与Charles软件一样需要在PC和手机端安装证书。

    1、首先cmd运行一下以下命令,以便在windows系统中产生CA证书

    mitmdump
    

    2、接着在.mitmproxy目录找到CA证书,如下图所示

    image

    3、双击mitmproxy-ca.p12进入导入证书的页面,点击“下一步”

    image

    4、不用输入密码,直接“下一步”

    image

    5、选择“将所有的证书都放入下列存储”,接着选择“受信任的根证书颁发机构”

    image

    6、最后,弹出警告窗口,直接点击“是”

    image

    7、接着在手机(IOS)上配置证书,先将mitmproxy-ca-cert.pem文件发送至iphone,推荐用邮箱方式,接着在iphone上可以把直接点击附件并安装。最后在手机(ios)“设置”、“通用”、“描述文件与设备管理”,找到“证书信任设置”,信任即可。

    image image

    四、设置手机端代理

    1、可以在pc(windows)中用cmd命令行,输入命令ipconfig,查看电脑ip,这里ip地址是192.168.31.43

    image

    2、接着在手机上设置代理,其实就是将pc电脑的ip192.168.31.43:8080,设置成代理即可。

    image

    3、配置代理,改为手动

    image image

    五、脚本

    addons机制具有一个速记,可以将模块作为一个整体作为addon对象。这使我们可以将事件处理函数放在模块范围内。例如,这是一个完整的脚本,可向每个请求添加标头。

    def request(flow):
        flow.request.headers["myheader"] = "value"
    

    这是另一个截取对特定URL的请求并发送任意响应的示例:

    from mitmproxy import http
    
    def request(flow: http.HTTPFlow) -> None:
        # pretty_url takes the "Host" header of the request into account, which
        # is useful in transparent mode where we usually only have the IP otherwise.
    
        if flow.request.pretty_url == "http://example.com/path":
            flow.response = http.HTTPResponse.make(
                200,  # (optional) status code
                b"Hello World",  # (optional) content
                {"Content-Type": "text/html"}  # (optional) headers
            )
    

    六、命令行交互

    1、mitmdump的启动

    mitmdump
    

    2、mitmdump指定端口的启动

    mitmdump -p 8889
    

    3、指定python脚本

    mitmdump -p 8889 -s test.py
    

    4、保存截获数据

    mitmdump -w  test.txt
    

    七、常用接口

    #http.HTTPFlow 实例 flow
    flow.request.headers #获取所有头信息,包含Host、User-Agent、Content-type等字段
    flow.request.url #完整的请求地址,包含域名及请求参数,但是不包含放在body里面的请求参数
    flow.request.pretty_url #同flow.request.url目前没看出什么差别
    flow.request.host #域名
    flow.request.method #请求方式。POST、GET等
    flow.request.scheme #什么请求 ,如https
    flow.request.path # 请求的路径,url除域名之外的内容
    flow.request.get_text() #请求中body内容,有一些http会把请求参数放在body里面,那么可通过此方法获取,返回字典类型
    flow.request.query #返回MultiDictView类型的数据,url直接带的键值参数
    flow.request.get_content()#bytes,结果如flow.request.get_text() 
    flow.request.raw_content #bytes,结果如flow.request.get_content()
    flow.request.urlencoded_form #MultiDictView,content-type:application/x-www-form-urlencoded时的请求参数,不包含url直接带的键值参数
    flow.request.multipart_form #MultiDictView,content-type:multipart/form-data
    时的请求参数,不包含url直接带的键值参数
    #以上均为获取request信息的一些常用方法,对于response,同理
    flow.response.status_code #状态码
    flow.response.text#返回内容,已解码
    flow.response.content #返回内容,二进制
    flow.response.setText()#修改返回内容,不需要转码
    

    八、参考

    1、https://docs.mitmproxy.org/stable/concepts-certificates/

    2、https://mitmproxy.org/

    3、https://github.com/mitmproxy/mitmproxy/tree/master/examples/simple

    4、https://docs.mitmproxy.org/stable/addons-scripting/

    5、https://docs.mitmproxy.org/stable/addons-events/

    6、https://www.jianshu.com/p/a495cc016682

    相关文章

      网友评论

        本文标题:mitmproxy的下载及证书配置

        本文链接:https://www.haomeiwen.com/subject/crwhwqtx.html