frist
This commit is contained in:
81
utils/fingerprint.py
Normal file
81
utils/fingerprint.py
Normal file
@@ -0,0 +1,81 @@
|
||||
"""
|
||||
浏览器指纹生成模块
|
||||
|
||||
用于生成符合 OpenAI Sentinel 要求的浏览器指纹配置数组
|
||||
"""
|
||||
|
||||
import uuid
|
||||
import time
|
||||
from typing import List
|
||||
|
||||
|
||||
class BrowserFingerprint:
|
||||
"""
|
||||
浏览器指纹生成器
|
||||
|
||||
生成 Sentinel SDK 所需的配置数组(18 个元素)
|
||||
"""
|
||||
|
||||
def __init__(self, session_id: str = None):
|
||||
"""
|
||||
初始化浏览器指纹
|
||||
|
||||
参数:
|
||||
session_id: 会话 ID(oai-did),如果不提供则自动生成
|
||||
"""
|
||||
self.session_id = session_id or str(uuid.uuid4())
|
||||
self.start_time = time.time()
|
||||
|
||||
def get_config_array(self) -> List:
|
||||
"""
|
||||
获取 Sentinel SDK 配置数组
|
||||
|
||||
返回:
|
||||
包含 18 个元素的指纹数组
|
||||
|
||||
数组结构(从 JS 逆向):
|
||||
[0] screen dimensions (width*height)
|
||||
[1] timestamp
|
||||
[2] memory (hardwareConcurrency)
|
||||
[3] nonce (动态值,PoW 时会修改)
|
||||
[4] user agent
|
||||
[5] random element
|
||||
[6] script src
|
||||
[7] language
|
||||
[8] languages (joined)
|
||||
[9] elapsed time (ms)
|
||||
[10] random function test
|
||||
[11] keys
|
||||
[12] window keys
|
||||
[13] performance.now()
|
||||
[14] uuid (session_id)
|
||||
[15] URL params
|
||||
[16] hardware concurrency
|
||||
[17] timeOrigin
|
||||
"""
|
||||
elapsed_ms = int((time.time() - self.start_time) * 1000)
|
||||
|
||||
return [
|
||||
1920 * 1080, # [0] screen dimensions
|
||||
str(int(time.time() * 1000)), # [1] timestamp
|
||||
8, # [2] hardware concurrency
|
||||
0, # [3] nonce (placeholder)
|
||||
"Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/143.0.0.0 Safari/537.36", # [4] UA
|
||||
str(0.123456789), # [5] random element
|
||||
"https://chatgpt.com/_next/static/chunks/sentinel.js", # [6] script src
|
||||
"en-US", # [7] language
|
||||
"en-US,en", # [8] languages
|
||||
elapsed_ms, # [9] elapsed time
|
||||
"", # [10] random function
|
||||
"", # [11] keys
|
||||
"", # [12] window keys
|
||||
elapsed_ms, # [13] performance.now()
|
||||
self.session_id, # [14] uuid (oai-did)
|
||||
"", # [15] URL params
|
||||
8, # [16] hardware concurrency
|
||||
int(time.time() * 1000) - elapsed_ms, # [17] timeOrigin
|
||||
]
|
||||
|
||||
|
||||
# 导出
|
||||
__all__ = ["BrowserFingerprint"]
|
||||
Reference in New Issue
Block a user