python mitmproxy代理抓包工具

python mitmproxy代理抓包工具

0 背景

python mitmproxy代理抓包工具

mitmproxy 是一个开源的中间人代理工具,用于拦截、检查、修改和重放 HTTP 和 HTTPS 通信。它主要用于网络调试、安全测试、和爬虫的目的。

mitmproxy 提供了几种运行模式,包括命令行代理(mitmproxy)、交互式控制台界面(mitmweb)和图形界面(mitmweb)。

在爬虫中,mitmproxy 可以作为一个强大的工具来辅助开发和调试。它可以帮助我们理解和模拟客户端(如浏览器或移动应用)与服务器之间的交互,特别是在处理复杂的动态网站或应用程序接口(API)时。

下面是一些 mitmproxy 在爬虫开发中的几种应用:

  1. 抓取和分析 HTTP/HTTPS 请求mitmproxy 可以捕获和显示网站或API发送的所有请求和响应。这对于理解网站的数据加载机制(如通过 AJAX 加载的内容)和API的工作原理非常有用。
  2. 分析和绕过防爬机制:一些网站采用了复杂的防爬策略,如动态生成的请求参数或令牌。通过使用 mitmproxy,我们可以分析这些机制并找到绕过它们的方法。
  3. 模拟客户端请求:了解客户端如何与服务器交互后,我们可以通过写python脚本,使用 mitmproxy 修改请求参数,模拟不同的客户端行为。

1 使用

1 安装和配置

mitmproxy是一个第三包, 所以通过pip来安装

pip install mitmproxy

安装好后, 我们启动在命令中启动mitmproxy就可以进行抓包了, 但是由于很多时候我们还需要抓https的包,因为由于证书的原因。

因此,我们还需要安装证书,笔者这里使用的是火狐浏览器,因为火狐的浏览器设置里面可以直接设置代理。

启动mitmproxy后,我们手动配置代理为mitmproxy的ip和端口,默认端口是8080。

python mitmproxy代理抓包工具

然后访问在火狐中访问http://mitm.it 进行证书的安装,可以下载相关火狐的证书,也可以导入到系统的根证书里面去。

2 拦截 & 修改代理

我们直接编写python脚本,来达到请求和响应修改的效果。

mitimproxy的python脚本中支持函数和类两种方式,由于类相对更具有一些优势,所以我准备直接使用类进行操作。

from mitmproxy import http


class Proxy1(object):
    def __init__(self):
        self.records = []

    def request(self, flow: http.HTTPFlow) -> None:
        # 监听所有的请求
        print(f'{flow.request.pretty_url=}')

        # 当请求链接有一些特征出现时, 我们可以对请求进行一些操作, 比如修改它的请求链接, 请求体, 或者做个计数器什么的
        if 'orange.com/simple' in flow.request.pretty_url:
            flow.request.url = 'https://cp.orange.cc'
            self.records += 1

    def response(self, flow: http.HTTPFlow) -> None:
        if '粘贴' in (text := flow.response.text):
            text = text.replace('粘贴''哈哈哈哈哈橘子')
            flow.response.text = text


addons = [
    Proxy1()
]

其中,

我们需要定义一个类,在类的内部实现requestresponse方法,

http.HTTPFlowmitmproxy 中是一个非常核心的类,它代表了一个完整的 HTTP 流量流。HTTPFlow 对象提供了对流经代理的 HTTP 流量进行分析和修改的能力。我们可以通过编写处理这些 HTTPFlow 对象的脚本来定制 mitmproxy 的行为,实现对流量的监控、修改或重定向等功能。

然后在addons中加入我们类的实例。

在上面的例子中,我们修改了请求的url,以及修改响应中的源代码,比如在混淆的js脚本还原是非常有用的,这让我们可以替换脚本。

最后,我们可以通过运行命令:

mitmproxy -s my_script.py

如果需要修改端口,默认是8080:

mitmproxy -s my_script.py -p 10086

2 关于

欢迎关注我的微信公众号


原文始发于微信公众号(其之):python mitmproxy代理抓包工具

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/204849.html

(0)
小半的头像小半

相关推荐

发表回复

登录后才能评论
极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!