mitmproxy 抓包神器-4.拦截请求实现篡改请求和返回数据

Posted 上海-悠悠

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mitmproxy 抓包神器-4.拦截请求实现篡改请求和返回数据相关的知识,希望对你有一定的参考价值。

前言

fiddler 工具有个打断点功能非常实用,可以实现拦截请求,篡改请求和返回的数据。
mitmproxy 可以用python代码写插件的方式实现拦截请求,篡改请求和返回数据。

fiddler 打断点

before response:这个是打在request请求的时候,未到达服务器之前

after response:也就是服务器响应之后,在Fiddler将响应传回给客户端之前。

拦截到请求就可以在工具上修改请求和返回的数据了

拦截请求

request(flow) 方法可以拦截请求,并且能获取请求参数,修改请求参数

from mitmproxy import http
# 作者:上海-悠悠 微信号:283340479

def request(flow: http.HTTPFlow):
    # 拦截请求地址
    if "http://httpbin.org/get" in flow.request.url:
        print('请求方法', flow.request.method)
        print('请求类型', flow.request.scheme)
        print('请求url', flow.request.url)
        # 获取url 键值对请求参数
        print(flow.request.query)
        # 取得所有请求参数
        print(list(flow.request.query.keys()))
        # 修改请求参数
        flow.request.query.set_all('yoyo', ['python'])
        # 打印修改过后的参数
        print(flow.request.query.get('yoyo'))

在浏览器上访问http://httpbin.org/get?yoyo=123&key=hello 地址

打印结果

请求方法 GET
请求类型 http
请求url http://httpbin.org/get?yoyo=123&key=hello
MultiDictView[('yoyo', '123'), ('key', 'hello')]
['yoyo', 'key']
python

会发现请求参数yoyo的值已经改成了python

mock 返回内容

response(flow) 方法可以拦截到返回的数据,对返回的数据修改后返回

from mitmproxy import http
# 作者:上海-悠悠 微信号:283340479

def response(flow: http.HTTPFlow):
    if "http://httpbin.org/get" in flow.request.url:
        # 状态码
        print(f'状态码: flow.response.status_code')
        # 返回内容,已解码
        print(f'返回内容: flow.response.text')
        # 返回内容, bytes类型
        print(f'返回内容bytes类型: flow.response.content')
        # 取得响应的文本
        print(f'应的文本: flow.response.get_text')
        # 修改响应 的文本
        flow.response.set_text('"code": 0, "message": "success"')

浏览器上访问http://httpbin.org/get?yoyo=123&key=hello 时,返回内容已经是set_text() 指定的内容了

以上是关于mitmproxy 抓包神器-4.拦截请求实现篡改请求和返回数据的主要内容,如果未能解决你的问题,请参考以下文章

mitmproxy 抓包神器-1.环境准备与抓取浏览器请求

mitmproxy 抓包神器-1.环境准备与抓取浏览器请求

mitmproxy 抓包神器-2.抓取Android 和 iOS 手机 https 请求

mitmproxy 抓包神器-2.抓取Android 和 iOS 手机 https 请求

mitmproxy 抓包神器-5.mock功能使用

手把手带你入坑抓包神器MitmProxy