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

如何用Selenium获取网站特定网络请求头(客户端指纹)

解决从alfagift.id获取客户端指纹请求头的问题

一、优化Selenium/seleniumwire的请求捕获方式

你当前用driver.get_log("performance")难以捕获动态生成的指纹请求头,换用seleniumwire的原生请求拦截功能更可靠:

  1. 先修正依赖导入冲突:同时导入selenium和seleniumwire的webdriver会引发冲突,仅保留seleniumwire的导入即可。
  2. 直接遍历捕获的请求,筛选目标请求头:
# 安装依赖
!apt-get update
!apt install chromium-chromedriver
!cp /usr/lib/chromium-browser/chromedriver /usr/bin
!pip install selenium seleniumwire

# 配置浏览器选项
from seleniumwire import webdriver

options = webdriver.ChromeOptions()
options.add_argument('--headless')
options.add_argument('--no-sandbox')
options.add_argument('--disable-dev-shm-usage')
# 禁用自动化检测,避免网站屏蔽
options.add_argument('--disable-blink-features=AutomationControlled')
options.add_experimental_option("excludeSwitches", ["enable-automation"])
options.add_experimental_option('useAutomationExtension', False)

# 启动浏览器并访问目标网站
driver = webdriver.Chrome('chromedriver', options=options)
driver.execute_script("Object.defineProperty(navigator, 'webdriver', {get: () => undefined})")
driver.get('https://alfagift.id/')

# 遍历所有请求,查找指纹请求头
for request in driver.requests:
    # 检查请求头中常见的指纹字段(比如fingerprint、x-fingerprint等)
    if 'fingerprint' in request.headers:
        print(f"找到指纹请求头: {request.headers['fingerprint']}")
    # 筛选特定域名的请求,缩小查找范围
    if 'alfagift.id' in request.url:
        print(f"请求URL: {request.url}")
        print(f"请求头: {request.headers}")

driver.quit()

二、直接在浏览器上下文执行JavaScript提取指纹

多数网站的客户端指纹是前端JS生成后添加到请求头的,你可以直接在页面中执行JS获取生成的指纹值:

# 接上前面的浏览器启动代码
driver.get('https://alfagift.id/')
# 等待页面加载完成,确保指纹生成脚本执行
driver.implicitly_wait(10)

# 执行JS提取指纹(需根据网站实际的JS变量名调整,比如常见的fingerprint、_fingerprint等)
fingerprint = driver.execute_script("""
    // 需查看网站源码定位指纹存储位置,示例为常见存储方式
    return window.fingerprint || window._fp || document.cookie.match(/fingerprint=([^;]+)/)?.[1];
""")

print(f"提取到的指纹: {fingerprint}")

三、Java指纹工具转Python的通用思路

如果有Java版的嗅探工具,可按以下步骤转成Python实现:

  • 拆解Java工具核心逻辑:明确它是通过抓包解析请求头、Hook浏览器JS,还是计算设备特征(画布、UA、时区等)生成指纹。
  • 对应Python实现:
    • 抓包部分用seleniumwire或mitmproxy替代Java的HttpURLConnection/OkHttp。
    • JS Hook部分用selenium的execute_script或pyppeteer的evaluateOnNewDocument实现。
    • 设备特征计算:用user_agent库生成UA,pytz获取时区,PIL生成画布指纹(对应Java的BufferedImage逻辑)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 12:35:21