如何在运行Python版Selenium时检测Adobe Analytics事件的发送?
捕获Selenium交互时的Adobe Analytics事件(无需额外代理)
不用折腾Browsermob-proxy,直接利用Chrome DevTools Protocol(CDP)结合Selenium就能实现,完全兼容你已有的代理配置,步骤如下:
核心思路
通过Selenium调用Chrome的CDP接口,监听浏览器的网络请求,过滤出Adobe Analytics的收集请求(通常URL包含/b/ss/或collect),然后提取请求Query String里的事件参数并打印。
代码实现(Python + Selenium 4.x)
from selenium import webdriver from selenium.webdriver.chrome.service import Service from webdriver_manager.chrome import ChromeDriverManager import time def capture_adobe_analytics_events(event): request = event.get('request') url = request.get('url') # 过滤Adobe Analytics请求(可根据实际端点调整规则) if '/b/ss/' in url or 'collect?' in url: print("\n=== 捕获到Adobe Analytics事件 ===") print(f"请求地址: {url}") print("关键事件参数:") # 提取Query String参数,重点关注事件相关字段 query_params = request.get('queryString', []) target_params = ['events', 'ev', 'pageName', 'linkName', 'prop1', 'eVar1'] for param in query_params: if param['name'] in target_params: print(f" {param['name']}: {param['value']}") # 若需要打印所有参数,注释上面的target判断,直接遍历所有param # for param in query_params: # print(f" {param['name']}: {param['value']}") # 初始化Chrome驱动 chrome_options = webdriver.ChromeOptions() # 若需无头模式,取消下面注释 # chrome_options.add_argument("--headless=new") driver = webdriver.Chrome( service=Service(ChromeDriverManager().install()), options=chrome_options ) # 启用CDP网络监控 driver.execute_cdp_cmd('Network.enable', {}) # 添加请求监听 driver.add_cdp_listener('Network.requestWillBeSent', capture_adobe_analytics_events) # 执行你的测试操作 driver.get("https://你的目标页面.com") # 示例:点击触发事件的元素 # element = driver.find_element(By.ID, "触发事件的元素ID") # element.click() # 等待事件发送完成(根据实际场景调整时长) time.sleep(3) driver.quit()
关键说明
- 过滤规则调整:根据你的Adobe Analytics实际请求URL修改
if条件,比如部分站点用/collect?v=2这类端点,就把规则改成'collect?' in url。 - 参数自定义:
target_params里的字段可以根据你要监控的事件维度调整,比如添加campaign、channel等自定义变量。 - Selenium版本要求:需使用Selenium 4.2及以上版本,因为
add_cdp_listener是该版本新增的API,旧版本可通过driver.execute_cdp_cmd手动订阅事件,但代码会更繁琐。 - 代理兼容:这种方法直接复用Chrome自身的CDP接口,不会和你已有的代理配置冲突,完全规避了额外代理工具的复杂度。
内容的提问来源于stack exchange,提问作者Matt
相关产品推荐
相关产品推荐

