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 抓包神器-2.抓取Android 和 iOS 手机 https 请求