You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何开发ZAP插件实现接收通信时控制台日志记录?

实现ZAP通信控制台记录插件的步骤

1. 实现HTTP监听器接口

创建一个类实现HttpSenderListener接口,重写sendHttpMessage方法——这个方法会在ZAP发送或接收HTTP消息时触发,你可以在这里处理日志输出逻辑。

示例代码:

import org.parosproxy.paros.network.HttpMessage;
import org.parosproxy.paros.network.HttpSenderListener;
import org.zaproxy.zap.utils.ZapXmlConfiguration;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

public class TrafficLoggerListener implements HttpSenderListener {

    private static final Logger logger = LoggerFactory.getLogger(TrafficLoggerListener.class);

    @Override
    public void sendHttpMessage(HttpMessage httpMessage, boolean outgoing, int initiator, ZapXmlConfiguration config) {
        // outgoing为true代表ZAP发送的请求,false代表ZAP接收到的响应
        if (!outgoing) {
            logger.info("=== 接收到HTTP响应 ===");
            logger.info("状态码: {}", httpMessage.getResponseHeader().getStatusCode());
            logger.info("响应头:\n{}", httpMessage.getResponseHeader().toString());
            logger.info("响应体:\n{}", httpMessage.getResponseBody().toString());
        } else {
            // 可选:同时记录ZAP发送的请求
            logger.info("=== 发送HTTP请求 ===");
            logger.info("请求方法: {}", httpMessage.getRequestHeader().getMethod());
            logger.info("请求URL: {}", httpMessage.getRequestHeader().getURI());
            logger.info("请求头:\n{}", httpMessage.getRequestHeader().toString());
            logger.info("请求体:\n{}", httpMessage.getRequestBody().toString());
        }
    }

    @Override
    public int getListenerOrder() {
        // 设置监听器执行优先级,数值越小越先执行,1000为常规取值
        return 1000;
    }
}

2. 在插件扩展类中注册监听器

找到你创建的继承Extension的基础插件类,在init()方法中注册刚才的HTTP监听器,同时在destroy()方法中移除监听器避免内存泄漏:

import org.parosproxy.paros.extension.Extension;
import org.parosproxy.paros.network.HttpSender;

public class ExtensionTrafficLogger extends Extension {

    private TrafficLoggerListener trafficLogger;

    @Override
    public void init() {
        super.init();
        trafficLogger = new TrafficLoggerListener();
        // 将监听器注册到ZAP的HttpSender组件
        HttpSender.addHttpSenderListener(trafficLogger);
    }

    @Override
    public void destroy() {
        super.destroy();
        if (trafficLogger != null) {
            HttpSender.removeHttpSenderListener(trafficLogger);
        }
    }

    @Override
    public String getName() {
        return "Traffic Logger Extension";
    }

    // 补充基础插件要求的其他重写方法,比如getDescription、getAuthor等
}

3. 验证插件

将插件打包后加载到ZAP中,启动代理并访问任意HTTP站点,即可在ZAP的控制台(终端窗口或内置日志面板)看到对应的请求/响应日志内容。

内容的提问来源于stack exchange,提问作者PyKKe

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.19 17:07:48