繁体   English   中英

有没有办法通过 Python 加载网页的网络活动(您可以在 Chrome Dev Tools 上看到)?

[英]Is there a way to get a webpage's Network activity (which you can see on Chrome Dev Tools) on load via Python?

我想收听网络事件(基本上是您转到 Chrome 开发人员工具/检查上的网络选项卡时可以看到的所有活动)并在通过 Python 加载页面时记录特定事件。

这可能吗? 谢谢!

具体来说

  • webpage.com
  • 打开 Chrome Dev Tools 并转到Network选项卡
  • 添加api.webpage.com作为过滤器
  • 刷新页面[滚动]

我希望能够捕获这些事件的名称,因为存在无法通过 UI 获得的特定 ID。

虽然它没有完全回答这个问题,但@mihai-andrei 的回答让我最接近。

如果有人正在寻找 Python 解决方案,那么以下代码应该可以解决问题:

from selenium import webdriver
from selenium.webdriver.common.desired_capabilities import DesiredCapabilities
from selenium.webdriver.chrome.options import Options

def get_perf_log_on_load(self, url, headless = True, filter = None):

    # init Chrome driver (Selenium)
    options = Options()
    options.headless = headless
    cap = DesiredCapabilities.CHROME
    cap['loggingPrefs'] = {'performance': 'ALL'}
    driver = webdriver.Chrome(desired_capabilities = cap, options = options)

    # record and parse performance log
    driver.get(url)
    if filter: log = [item for item in driver.get_log('performance')
                      if filter in str(item)]
    else: log = driver.get_log('performance')
    driver.close()

    return log

2021 年更新我不得不对 Zach 的答案进行一些更改才能使其正常工作。 带有### 的评论是我的评论

def get_perf_log_on_load(url, headless=True, filter=None):

    # init Chrome driver (Selenium)
    options = Options()
    options.add_experimental_option('w3c', False) ### added this line
    options.headless = headless
    cap = DesiredCapabilities.CHROME
    cap["loggingPrefs"] = {"performance": "ALL"}
    ### installed chromedriver.exe and identify path
    driver = webdriver.Chrome(r"C:\Users\asiddiqui\Downloads\chromedriver_win32\chromedriver.exe", desired_capabilities=cap, options=options) ### installed
    # record and parse performance log
    driver.get(url)
    if filter:
        log = [item for item in driver.get_log("performance") if filter in str(item)]
    else:
        log = driver.get_log("performance")
    driver.close()

    return log

您可以绕过 chrome 并使用像 mitmproxy 这样的可编写脚本的代理。 https://mitmproxy.org/

另一个想法是使用 selenium 来驱动浏览器并从 perf 日志中获取事件https://sites.google.com/a/chromium.org/chromedriver/logging/performance-log

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM