今天遇到了一个问题就是在开发过程中想抓取https的流量使用了非常多的工具。比如Charles、BurpSuite等等。估计是我证书的原因,配置了都不能抓取到https的流量。于是想到了使用python的mitmprox库开发一个抓取https流量的脚本。废话不多说,直接上流程。
1、安装mitmprox
pip install mitmproxy
2、创建一个proxy.py文件
我这里增加了一个判断,就是只保存host=aigcba.com的请求信息。这个可以根据自己的实际情况进行改动。
from mitmproxy import http
def request(flow: http.HTTPFlow) -> None:
if "aigcba.com" in flow.request.host:
with open("log.logs", "a") as log_file:
log_file.write(f"Request: {flow.request.method} {flow.request.url}\n")
for key, value in flow.request.headers.items():
log_file.write(f"{key}: {value}\n")
if flow.request.method == 'POST':
log_file.write(f"Body: {flow.request.content}\n")
log_file.write("\n")
if __name__ == "__main__":
from mitmproxy.tools.main import mitmdump
mitmdump(['-s', __file__])
3、安装和信任mitmproxy的证书
要抓取https流量就必须要安装证书。
1.启动mitmproxy:
在终端运行:mitmproxy
2.访问mitmproxy网页:
在浏览器中,访问 http://mitm.it。
3.下载并安装证书:
根据你的操作系统选择相应的证书下载并安装。
4.在macOS上信任证书:
•打开钥匙串访问工具。
•将下载的mitmproxy-ca-cert.pem文件导入到系统钥匙串中。
•找到并双击该证书,展开“信任”部分,将“使用此证书”设置为“始终信任”。
4、配置浏览器代理:
使用SwitchyOmega或直接在浏览器中设置代理为127.0.0.1,端口为8080(mitmproxy的默认端口)。
5、重新运行mitmproxy:
在终端中运行以下命令,启动代理并指定脚本:
mitmproxy -s proxy.py(你创建的python文件名称)
6、访问网站:
在浏览器中访问https://aigcba.com,所有请求将被捕获并打印到终端。这个时候终端会打印所有的浏览器请求。log.logs里面就只会保存aigcba.com的请求记录。因为我们在前面的代码里面进行了判断。
log.logs文件内容
© 版权声明
文章版权归作者所有,未经允许请勿转载。
相关文章
暂无评论...