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

如何追踪Jenkins任务执行过程中访问的所有URL?

追踪Jenkins上Python项目执行期间访问的URL

以下是几个无需深入梳理项目代码的可行方案:

1. 给Python请求库打补丁自动记录URL

如果项目用requests或urllib这类主流HTTP库,直接通过补丁或钩子拦截所有请求并记录:

针对requests库的实现

在Jenkins任务的Python执行脚本最开头加入这段代码,会自动把所有requests发起的URL打印到日志:

import requests
from requests.models import Response

def log_request(response: Response, *args, **kwargs):
    print(f"[HTTP_REQUEST] {response.request.method} {response.request.url}")
    return response

# 给所有requests请求添加钩子
requests.hooks.register('response', log_request)

通用补丁方案(兼容更多库)

如果项目混用多种HTTP库,可以patch底层的socket.connect来记录所有出站连接的域名/IP,再结合端口判断HTTP/HTTPS:

import socket
original_connect = socket.socket.connect

def patched_connect(self, address):
    host, port = address
    print(f"[OUTBOUND_CONNECT] {host}:{port}")
    return original_connect(self, address)

socket.socket.connect = patched_connect

这种方式会记录所有网络连接,后续可以从Jenkins日志里筛选出疑似HTTP服务的端口(80/443/自定义端口)对应的域名。

2. 在Jenkins节点上用网络抓包工具

直接在Jenkins构建步骤中调用系统级抓包工具,捕获任务运行期间的所有HTTP/HTTPS流量:

用tcpdump的示例

在Jenkins构建的前置步骤添加shell命令(Linux/macOS适用):

# 启动抓包,保存到临时文件,只捕获80/443端口的流量
tcpdump -i any port 80 or port 443 -w /tmp/jenkins_http_traffic.pcap &
# 记录抓包进程ID,方便后续停止
echo $! > /tmp/tcpdump_pid.txt

在构建的后置步骤添加shell命令停止抓包并解析:

# 停止抓包进程
kill $(cat /tmp/tcpdump_pid.txt)
# 解析抓包文件并输出到Jenkins日志(需安装tshark)
tshark -r /tmp/jenkins_http_traffic.pcap -T fields -e http.request.method -e http.request.full_uri | grep -v "^$"

构建结束后,Jenkins日志里会直接列出所有访问的HTTP/HTTPS URL。

3. 优化:按进程ID过滤抓包(避免干扰)

如果Jenkins节点上有多个任务同时运行,可以通过进程ID过滤抓包,确保只捕获当前任务的流量:

# 获取当前Python项目进程的PID(替换为你的主脚本名)
PYTHON_PID=$(pgrep -f "python your_main_script.py")
# 只捕获该进程的80/443端口流量
tcpdump -i any port 80 or port 443 and pid $PYTHON_PID -w /tmp/jenkins_http_traffic.pcap &

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 06:12:43