美文网首页
如何让Charles抓包功能更强大?

如何让Charles抓包功能更强大?

作者: sheenaghWS | 来源:发表于2020-06-07 15:05 被阅读0次

    一、抓包工具介绍

    1. Charles是一款十分流行的api抓包工具,提供了多种抓包所需的功能。缺点是不支持二次开发。
    2. mitmproxy是基于python开发的开源的抓包工具,同样功能强大。可惜mitmproxy只能基于控制台或web操作,没有单独的GUI,操作远不如Charles方便。但是mitmproxy有一个极大的优势和亮点---它提供了基于python的API,可以自定义脚本控制请求与响应。

    二、关于Charles的思考

    在日常抓包测试工作中,Charles提供的rewrite、breakingpoint、maplocal等功能真的很好用。
    但是有时候需要对抓包过程进行实时修改、数据提取、批量处理等,Charles就显得力不从心。这时候一般是利用python脚本直接发送请求去处理,但是数据准备会比较繁琐。或者直接用强大的mitmproxy工具,可惜抓包过程不够直观。
    有没有办法能够让Charles抓包也支持自定义脚本呢?
    答案是可以的。

    三、将Charles与mitmproxy组合?

    原理:可以将mitmproxy作为Charles的上级代理。客户端发起的请求先经过Charles,再经过mitmdump,最后到达服务器。利用mitmdump提供的python api弥补Charles不能二次开发的缺点。

    四、配置方法

    3.1 前置条件
    1. mitmproxy安装
      pip3 install mitmproxy
    2. 安装Charles证书
      连接Charles代理,浏览器访问chls.pro/ssl安装证书。
    3. 安装mitmproxy证书
      连接mitmproxy代理,浏览器访问mitm.it安装证书。
    3.2 使用方法
    1. 启动mitmproxy,端口8080,并加载自定义的脚本。mitmdump -p 8080 -s myScript.py
    2. 启动Charles,打开 Proxy > External Proxy Setting设置项。
    3. 勾选Use external proxy servers项,使用代理。
    4. 勾选Web Proxy (HTTP)项,右侧server项填入mitmproxy的地址和端口。如:localhost:8080。该选项表示将http请求代理到mitmproxy。
    5. 勾选Secure Web Proxy (HTTP)项,配置同上。该选项表示将https请求代理到mitmproxy。
    6. 手机连接Charles代理,按照正常抓包使用即可。
    7. 若不想使用mitmproxy,关闭Charles中的External Proxy Setting + 停用mitmproxy即可。
    3.3 已知存在的问题
    1. 在Charles中使用repeat功能,重复发送https请求时,mitmproxy会将请求拦截,返回400状态码。原因是mitmproxy的安全校验机制导致。详细可参考:mitmproxy讨论区

    相关文章

      网友评论

          本文标题:如何让Charles抓包功能更强大?

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