python 爬虫工具 mitmproxy, 几问几答,记录一下

[复制链接]
发表于 2025-6-14 02:16:24 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
1. 起因, 目的:



  • 某次爬虫失败: 几个加密参数,费劲而且不划算。
  • 决定再次研究 爬虫工具 mitmproxy
2. 过程:

  1. 写个文章。
  2. 目的是记录今天的探索过程。
  3. 所以请力求精简,而且直达核心, 要求语言清晰易懂。
  4. 把核心问题, 即与 mitmproxy 相关的,写在前面
  5. 其他的,额外的知识点,可以写在后面,单独分开。
复制代码
问题:mitmproxy 能做什么?

答复:
mitmproxy 是一个强大的中间人代理工具,能够拦截、修改、记录和分析 HTTP、HTTPS 流量。通过它,你可以:


  • 拦截和修改请求与响应:如修改请求体、请求头、响应内容等。
  • 自动化操纵:通过脚本和插件,可以编写自界说功能来自动处理流量。
  • 流量分析:实时查看和分析 HTTP 请求,了解应用行为。
  • SSL/TLS 握手解密:支持中间人攻击模子,解密 HTTPS 流量以进行分析。
mitmproxy 支持 HTTP/1、HTTP/2 和 WebSocket,得当用于调试 Web 应用、测试 API、了解协议交互等。

问题:如何隐藏 mitmweb 控制台中的无用输出?

答复:
mitmweb 控制台默认会输出大量日志日志信息,若想隐藏这些信息,可以通过设置日志日志级别来过滤掉不需要的输出。利用命令行参数设置 console_eventlog_verbosity 为 warn 或 error 可以镌汰输出的冗余内容:
  1. mitmweb --set console_eventlog_verbosity=warn
复制代码
这会隐藏信息级别以下的日志日志(例如连接日志等),只表现告诫和错误信息。

问题:如何查看 mitmproxy 中的 request 和 response 内容?

答复:
在 mitmproxy 中,flow 对象代表了请求和响应的完整信息。可以通过脚本访问和修改 flow.request 和 flow.response 来处理它们:
  1. def request(flow):
  2.     # 查看请求内容
  3.     print(flow.request.url)
  4.     print(flow.request.headers)
  5. def response(flow):
  6.     # 查看响应内容
  7.     print(flow.response.content)
复制代码
这可以让你捕获请求 URL、请求头、响应体等内容进行分析。

问题:如何在 mitmproxy 中利用过滤器?

答复:
mitmproxy 提供了过滤器功能,可以根据 URL、请求方法、响应状态码等条件来筛选流量。常用的过滤器语法包罗:


  • ~u:匹配 URL
  • ~m:匹配请求方法(GET、POST 等)
  • ~s:匹配响应状态码
  • ~q:匹配请求体或参数
  • ~b:匹配请求或响应的 Body 内容
例如,筛选出所有 POST 请求:
  1. ~m POST
复制代码
或者,筛选出 404 错误响应:
  1. ~s 404
复制代码
这些过滤器可以资助你快速定位到感兴趣的流量。

问题:mitmproxy 与 Clash 同时运行时会发生什么?

答复:
mitmproxy 默认利用 8080 端口,而 Clash 利用的是 7899 端口。假如两者同时启动,它们会争夺同一个网络端口,导致此中一个无法正常运行。


  • 解决方法: 确保只启动一个代理服务,或者将它们的端口进行调解,使其不发生冲突。
假如同时打开,当你发出请求时,流量会按照以下顺序走:

  • 请求会首先被 Clash 代理转发。
  • 然后,mitmproxy 会作为中间人进一步处理(假如它被配置为默认代理)。
这样流量会经过多个代理进行处理,大概会引发一些不须要的耽误或冲突。

额外的知识点


Innsbruck 和 Interlaken



  • Innsbruck 是奥地利的一个都会,位于阿尔卑斯山,是滑雪胜地。
  • Interlaken 是瑞士的一个旅游小镇,也以滑雪和爬山闻名。
这两个都会不一样,固然都位于阿尔卑斯山区。

Anatomy of an Addon

在 mitmproxy 中,插件(Addon)是通过 Python 脚本来实现的,通常涉及两个主要函数:request(flow) 和 response(flow)。flow 是请求和响应的容器,插件通过它来操纵和处理流量。Anatomy of an Addon 就是指了解插件的构成和如何编写自界说功能

Windows Activity 请求

你发现的请求是 Windows 系统的 Activity Feed 功能,它会将用户的活动记录(如打开的应用、浏览的网页)上传到微软服务器。这是微软的一个同步和增强体验的功能。假如你不希望上传这些数据,可以通过设置或组策略关闭该功能。

通过这些整理,希望你对 mitmproxy 有了更清楚的理解,而且能够在实际利用中更加得心应手。假如你有更多问题或需要进一步探讨,随时向我提问!

希望对大家有资助。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
继续阅读请点击广告
回复

使用道具 举报

×
登录参与点评抽奖,加入IT实名职场社区
去登录
快速回复 返回顶部 返回列表