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

如何用Python捕获浏览器动态请求URL并保存至文件?

问题分析

你的代码逻辑和需求完全不匹配:你现在是主动轮询一个固定URL,提取响应里的.jpg链接,但你的需求是捕获浏览器和网站连接后,浏览器向动态端点发送的所有请求URL,原代码根本没涉及拦截浏览器请求的逻辑,自然达不到目的。

正确实现方案

要捕获浏览器发出的请求,核心是让浏览器的流量经过你的Python程序,或者直接读取浏览器的网络请求日志,下面是两种可行的落地方案:

方案1:用mitmproxy拦截请求

mitmproxy是专门用来拦截、修改HTTP/HTTPS流量的工具,能轻松捕获浏览器的所有请求。

操作步骤:

  1. 先安装mitmproxy:
pip install mitmproxy
  1. 编写Python脚本(比如命名为capture_requests.py):
from mitmproxy import http

class CaptureRequests:
    def request(self, flow: http.HTTPFlow) -> None:
        # 拿到当前请求的完整URL
        request_url = flow.request.pretty_url
        # 把URL追加写入文件
        with open("captured_urls.txt", "a", encoding="utf-8") as f:
            f.write(request_url + "\n")
        
        # 可以加过滤条件,比如只抓目标域名或特定后缀的请求
        # if "example.com" in request_url and request_url.endswith(".jpg"):
        #     with open("captured_urls.txt", "a", encoding="utf-8") as f:
        #         f.write(request_url + "\n")

addons = [CaptureRequests()]
  1. 启动mitmproxy代理:
mitmdump -s capture_requests.py
  1. 配置浏览器代理:把浏览器的HTTP/HTTPS代理设为127.0.0.1:8080(mitmproxy默认端口),之后访问目标网站,所有请求都会被捕获并写入captured_urls.txt。

方案2:用Selenium捕获浏览器网络日志

如果你本来就在用Selenium控制浏览器,可以直接读取浏览器的网络日志获取请求URL。

代码示例:

from selenium import webdriver
from selenium.webdriver.chrome.options import Options
import time
import json

# 配置Chrome,开启性能日志(包含网络请求信息)
chrome_options = Options()
chrome_options.set_capability("goog:loggingPrefs", {"performance": "ALL"})

driver = webdriver.Chrome(options=chrome_options)
driver.get("https://example.com")  # 替换成你要监控的目标网站

# 持续捕获请求
while True:
    # 获取浏览器的性能日志
    logs = driver.get_log("performance")
    for log in logs:
        log_entry = log["message"]
        # 筛选出请求即将发送的日志条目
        if '"method":"Network.requestWillBeSent"' in log_entry:
            data = json.loads(log_entry)
            request_url = data["message"]["params"]["request"]["url"]
            # 写入文件
            with open("captured_urls.txt", "a", encoding="utf-8") as f:
                f.write(request_url + "\n")
    time.sleep(2)

# 实际使用完记得关闭浏览器
# driver.quit()
原代码的问题总结
  • 逻辑完全偏差:原代码是主动请求固定URL,提取响应内容,和“捕获浏览器发出的请求”不是一个逻辑。
  • 无新请求识别:就算能提取链接,也只是重复提取同一URL的响应内容,没法区分“新生成的请求”。
  • 写入格式问题:f.write(line)没加换行符,会导致所有链接挤在一行。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 11:35:21