mitmproxy 抓包工具,优点可以使用python进行二次开发,或者进行接口的mock

官网地址:https://www.mitmproxy.org/

打算用这个最初的需求是,想对app做接口测试,但是app的接口有200多个,这么多接口,如果人工的的抓包或者获取,很浪费人力,那能不能自动的抓取到所有的请求呢?

答案是可以,使用mitmdump -s xx.py 可以过滤我们想要的数据,比如存到数据库之类的

from mitmproxy import ctx

# 所有的请求都会经过request
def request(flow):
    info = ctx.log.info
    d = {}
    if flow.request.host == 'xxxxx':  # 过滤请求,如果host是xxx则写入请求相关信息
        d['url'] = flow.request.url
        d['host'] = flow.request.host
        d['headers'] = flow.request.headers
        d['method'] = flow.request.method
        if flow.request.method == 'POST':
        d['body'] = flow.request.get_text()
        fp = open("/Users/dcc/Desktop/aaaa.txt",'a+',encoding='utf-8')
        fp.write(str(d) + '\n')

# 所有的请求都会经过request
def response(flow):
    info = ctx.log.info
    # info(str(flow.response.headers))
    # info(str(flow.response.cookies))
    info(str(flow.response.text))
    fp = open("/Users/dcc/Desktop/bbbb.txt",'a+',encoding='utf-8')
    fp.write(str(flow.response.text) + '\n')

那既然能拿到所有的请求是不是可以为所欲为了呢?具体的应用场景可以自行尝试哈!比如爬虫?

MOCK功能:

mock功能也是类似,在request里判断发送的请求是不是自己想要的,然后进行修改

修改请求:

def request(flow):
    if flow.request.url.startswith("http://xxx.x.xxx.com.cn/xxx/xxxx/xxxx"):
        ctx.log.info("modify request form")
    if flow.request.urlencoded_form:
        flow.request.urlencoded_form["code"] = "11111"
    else:
        flow.request.urlencoded_form = [
            ("abc", "1234"),("name","name")
        ]

修改返回:

def response(self, flow):
    if flow.request.url.startswith("https://xxx.x.xxx.com.cn/activityInfo/getPrizeInfo=="):
    //获取响应的json字符串,转成python对象进行解析和修改
        response = json.loads(flow.response.get_text())
        response['limitCount'] = 1
        //修改完成后,奖python对象转成json字符串,set进请求的响应体重发送给客户端
        flow.response.set_text(json.dumps(response))
        ctx.log.info('modify limitCount')

mitmproxy 使用mitmdump 过滤请求的更多相关文章

  1. mitmproxy,mitmdump

    mitmproxy,mitmdump # mitmproxy 官网:https://mitmproxy.org/ # githubhttps://github.com/mitmproxy # wind ...

  2. SuperMap-iServer过滤请求返回值

    目的: iServer发布的arcgis地图服务中,由于tileinfo参数为null,导致用arcgis-ios客户端开发的APP闪退.通过过滤器将get请求的返回值修改 代码: package c ...

  3. Java Servlet (1) —— Filter过滤请求与响应

    Java Servlet (1) -- Filter过滤请求与响应 版本: Java EE 6 参考来源: Oracle:The Java EE 6 Tutorial: Filtering Reque ...

  4. Charles系列三:Charles打断点(包含修改请求,修改返回的内容),模拟慢速网络(弱网测试),域名映射,过滤请求,接口调试,打压测试

    一:Charles断点的使用(包含修改请求,修改返回的数据) 设置断点来修改请求和返回的数据,在开发过程中可以模拟多种响应.步骤如下: 1.添加断点方法有两种: 方法1:找到Charles中菜单项Pr ...

  5. WebAuthorize(中间件对所有请求进行拦截)core只有通过添加中间件过滤请求方式 而非继承然后写特性的那种方式

    一.WebAuthorize 1.项目名称 WebAuthorize 2.加个中间件 过滤请求. using Microsoft.AspNetCore.Builder; using Microsoft ...

  6. App爬虫神器mitmproxy和mitmdump的使用

    原文 mitmproxy是一个支持HTTP和HTTPS的抓包程序,有类似Fiddler.Charles的功能,只不过它是一个控制台的形式操作. mitmproxy还有两个关联组件.一个是mitmdum ...

  7. 【Spring】使用Filter过滤请求

    原文:http://liujiajia.me/#/blog/details/spring-filter-request-with-filter public class CustomizedFilte ...

  8. HttpHandler过滤请求..

    记得以前写过一篇..后来找不到了..我自己也忘记怎么弄了.. 在网上找了很多的教程..写的总有瑕疵..感觉不顺畅.. 自己来一篇.. 其实很简单.. 先建立一个类  继承并实现接口 IHttpHand ...

  9. [转]使用 mitmproxy + python 做拦截代理

    使用 mitmproxy + python 做拦截代理   本文是一个较为完整的 mitmproxy 教程,侧重于介绍如何开发拦截脚本,帮助读者能够快速得到一个自定义的代理工具. 本文假设读者有基本的 ...

随机推荐

  1. rich-text 副文本组件 text文本组件

    rich-text 副文本组件 要知道我们小程序常用的标签是view 但是我们想使用div   span  h1 i 标签等等,这种带特性的标签,怎么办的,我们就可以使用我们的 rich-text组件 ...

  2. mysql-c++连接

    1.mysql-c++连接MySQL :: Download Connector/C++ https://dev.mysql.com/downloads/connector/cpp/ 1-1VS201 ...

  3. LinkedTransferQueue 源码分析

    LinkedTransferQueue LinkedTransferQueue 能解决什么问题?什么时候使用 LinkedTransferQueue? 1)LinkedTransferQueue 是基 ...

  4. cookie/http/https

    今天再学习顺便外加复习下http的相关知识,顺便试试在笔记中导出一个长篇的图片回事怎么样的效果. HTTP相关知识,不是很全仅供参考

  5. Linux负载均衡实现

    配置之前清空所有服务器防火墙规则 iptables -F 关闭selinux: 1./usr/sbin/sestatus -v      ##如果SELinux status参数为enabled即为开 ...

  6. javaweb学习总结(十)——HttpServletRequest对象(一) https://www.cnblogs.com/xdp-gacl/p/3798347.html

    一.HttpServletRequest介绍 HttpServletRequest对象代表客户端的请求,当客户端通过HTTP协议访问服务器时,HTTP请求头中的所有信息都封装在这个对象中,通过这个对象 ...

  7. 使用 Spring HATEOAS 开发 REST 服务

    使用 Spring HATEOAS 开发 REST 服务 学习博客:https://www.ibm.com/developerworks/cn/java/j-lo-SpringHATEOAS/ htt ...

  8. 利用Redisson实现分布式锁及其底层原理解析

    Redis介绍 参考地址:https://blog.csdn.net/turbo_zone/article/details/83422215 redis是一个key-value存储系统.和Memcac ...

  9. CentOS 下 redis 安装与配置

    CentOS 下 redis 安装与配置   1.到官网上找到合适版本下载解压安装 [root@java src]# wget -c http://redis.googlecode.com/files ...

  10. uve (mui/light7)写APP的使用心得(大坑);

    话说mui这个框架的UI确实挺好看的(个人觉得)所以项目使用了他,结果里面的坑太TM多,不得不说MUI做东西太不用心了,社区不活跃,提问都没人管!; mui第一个坑: 日期选择器默认值无效:使用代码跟 ...