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

如何用Python Requests获取客户端指纹以抓取alfagift.id网站

问题描述

尝试抓取https://alfagift.id网站时,发现该网站依赖https://alfagift.id/_nuxt/f9d159c.js中的FingerprintJS指纹脚本生成的指纹才能访问其他内容。使用Python Requests直接请求该脚本:

resp=requests.get("https://alfagift.id/_nuxt/f9d159c.js")
resp.content

仅能获取到脚本函数代码,无法得到实际的指纹值,请问如何用Python获取该指纹?

解决方案

直接用Requests无法获取指纹,因为指纹是浏览器端执行JavaScript动态生成的,Requests仅能获取静态资源,不会运行JS代码。以下是两种可行方案:

方案1:使用支持JS执行的浏览器自动化库(推荐)

用Playwright或Selenium这类工具模拟真实浏览器环境,让JS脚本运行并生成指纹,再提取出来。以Playwright为例:

  1. 安装Playwright及浏览器:
pip install playwright
playwright install chromium
  1. 编写Python代码获取指纹:
from playwright.sync_api import sync_playwright

with sync_playwright() as p:
    browser = p.chromium.launch(headless=False)  # 设置headless=True可无头运行
    page = browser.new_page()
    page.goto("https://alfagift.id")
    
    # 等待FingerprintJS执行完成并提取指纹
    fingerprint = page.evaluate("""() => {
        return new Promise(resolve => {
            const checkInterval = setInterval(() => {
                // 根据FingerprintJS的实际暴露对象调整判断逻辑
                if (window.fp?.visitorId) {
                    clearInterval(checkInterval);
                    resolve(window.fp.visitorId);
                }
            }, 100);
        });
    }""")
    
    print("获取到的指纹:", fingerprint)
    browser.close()

方案2:逆向FingerprintJS生成逻辑(难度高)

如果不想用浏览器自动化工具,需要逆向f9d159c.js及依赖的FingerprintJS v3.3.3版本的指纹生成逻辑,在Python中复现所有依赖的浏览器环境参数(如User-Agent、Canvas渲染结果、WebGL信息、时区等),手动计算指纹。但这种方法耗时极长,且网站更新JS后需要重新逆向,不推荐。

注意事项
  • 网站可能有反爬机制,需设置合理的User-Agent、请求间隔,模拟真实用户的浏览行为。
  • FingerprintJS的指纹生成逻辑依赖多个浏览器环境变量,需确保自动化工具的环境配置尽可能贴近真实浏览器。

内容的提问来源于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 22:25:48