使用 http.server 模块和 requests 库来实现,代理服务器可拦截匹配指定路径的 HTTP 请求,并打印或存储请求头和响应体。
实现目标:
1、创建一个HTTP代理服务器。
2、代理所有流量,而对指定的接口(如 /api/target)提取请求头和响应体。
3、转发所有其他流量,保持其正常运行。
from http.server import BaseHTTPRequestHandler, HTTPServer
import requests
# 代理服务器的主机和端口
PROXY_HOST = "127.0.0.1"
PROXY_PORT = 8080
# 要拦截的接口路径(可以调整为你需要的路径)
TARGET_PATH = "/api/target"
class CustomProxyHandler(BaseHTTPRequestHandler):
"""
自定义HTTP处理程序,拦截指定接口的请求和响应
"""
def do_GET(self):
# 打印收到的请求信息
print(f"[*] Received GET request for: {
self.path}")
if self.path.startswith(TARGET_PATH): # 判断是否为目标接口
print(f"[!] Intercepting target path: {
self.path}")
self.handle_target_request()
else:
# 转发其他路径的请求
self.forward_request()
def do_POST(self):
# 打印收到的请求信息
print(f"[*] Received POST request for: {
self.path}")