前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >小巧实用的HTTP代理抓包工具:mitmproxy

小巧实用的HTTP代理抓包工具:mitmproxy

作者头像
happyJared
发布2018-12-05 15:40:49
1K0
发布2018-12-05 15:40:49
举报
文章被收录于专栏:happyJaredhappyJared

常见的http代理有:Fiddler、Charles以及下来要介绍的Mitmproxy,几款抓包软件本人都使用过,可以说是各有各的特点。Mitmproxy小巧强大,最吸引我的是它支持加入Python脚本,方便开发人员直接处理监听到的数据。

Explicit HTTP

安装

这步比较简单,直接pip install mitmproxy,或者自行下载安装包。更多更详细的安装说明可以查看这篇文章:MitmProxy的安装

使用

window下不支持使用mitmproxy,但可以使用另外两个附带的组件:mitmdumpmitmweb,二选一在控制台输入,代理开启后默认的监听端口为8080mitmdump是纯控制台输出的监听形式,mitmweb则对应有相关的web监听界面。

mitmdump

mitmweb

更改监听端口?添加-p参数,如mitmdump -p 10000;想指定py脚本?带上-s参数即可,如mitmweb -s out.py;完整的参数信息及使用应该查看官网说明,下来的示例中会介绍Python脚本的使用。

示例

mitmproxy中定义了一系列完整的监听流程事件,通常这并不需要我们关注太多,常见的Events莫过于requestresponse,完整的mitmproxy事件请点击这里查看,下面的简单示例或许对你有帮助:

代码语言:javascript
复制
import mitmproxy.http


def request(flow: mitmproxy.http.HTTPFlow):
    """
        The full HTTP request has been read.
    """
    
    flow.request.headers["User-Agent"] = "Chrome/66.0.3497.100"
    
    pretty_url = flow.request.pretty_url
    print(pretty_url)


def response(flow: mitmproxy.http.HTTPFlow):
    """
        The full HTTP response has been read.
    """

    content = flow.response.content
    print(content)

小结

在功能上多数抓包软件大同小异,重要的还是得根据场景来选择最合适的;我当初接触到mitmProxy,是因为在爬取某APP数据的时候,尝试了一段时间都没有还原出客户端接口加密的请求流程,后来结合使用了AppiummitmProxy,算是部分实现了该需求。综上,全文只是简单浅显的介绍了mitmproxy,而往往看官方文档才是最完整和高效的。

示例源码

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018.11.02 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 安装
  • 使用
  • 示例
  • 小结
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档