python - MITM Proxy - 通过 python 脚本拦截和修改 https 内容
问题描述
我正在尝试https
使用Mitm Proxy
.
使用 GUI 效果非常好,但我想使用python
脚本。
我试过这个脚本:
from mitmproxy import http
def request(flow: http.HTTPFlow) -> None:
if flow.request.pretty_url == "https://www.facebook.com/?l":
flow.response = http.HTTPResponse.make(
200, # (optional) status code
b"Hello World, this is a test", # (optional) content
{"Content-Type": "text/html"} # (optional) headers
)
def response(flow: http.HTTPFlow):
if flow.response.raw_content and flow.request.pretty_url == "https://www.facebook.com/?lol":
file = open(b"C:\Users\myuser\PycharmProjects\mitmProx\data.txt", "a")
file.write(str(flow.response.) + "\n")
但是,我截获的内容是加密的,尽管网页 GUI 上的内容是清晰的,但内容并不清晰!
有谁知道为什么我的脚本会拦截加密内容而 Web GUI 会打印出清晰的数据?
解决方案
看起来您想使用response.text
or response.content
,而不是response.raw_content
。raw_content 包含原始压缩的HTTP 消息体,而.content
包含未压缩的版本。
推荐阅读
- c# - 有没有办法循环 if 语句从对象列表 C# 中针对特定变量
- python - 请检查此代码以进行面部识别,这给了我错误
- java - JPA Criteria API Set 是否包含值?
- c++ - 在 cmake 中向接口库添加库依赖项
- python - 将 OLE 调用从 MATLAB 转换为 Python
- git - 有选择地将文件和目录移动到新仓库(保留历史记录)
- java - org.h2.jdbc.JdbcSQLNonTransientException:对象已关闭 [90007-200]
- spring - Spring boot:在测试中从 application.properties 引用 pom 属性
- reactjs - MaterialTable 导出选项未显示?
- sequelize.js - JPA 的 @OrderColumn 的 Sequelize 等价物是什么