1. 引言
在前两篇文章中,我们深入探讨了CreepJS的基础概念、核心技术原理以及各种具体的指纹识别技术实现。本篇文章将重点关注实际应用层面,详细介绍如何将CreepJS与当前主流的浏览器自动化工具进行集成,包括Playwright、Selenium、Puppeteer等流行框架。
浏览器自动化工具的集成对于大规模指纹分析、安全研究和隐私保护评估具有关键重要性。通过系统性的自动化方法,研究人员和开发者可以高效地进行批量指纹收集、比较分析以及各种隐私保护措施的有效性评估。
本文将提供详细的实现示例和最佳实践指南,帮助读者理解如何在真实世界场景中有效利用CreepJS进行全面的指纹分析。同时,我们还将讨论在集成过程中可能遇到的技术挑战和相应的解决策略。
2. Playwright集成解决方案
2.1 Playwright框架优势
Playwright作为微软开发的现代浏览器自动化框架,提供了强大的跨浏览器测试能力和先进的浏览器控制功能。相比于传统的自动化工具,Playwright具有更好的性能、更稳定的接口以及更全面的浏览器功能支持。
在指纹分析环境中,Playwright的关键优势包括:对多种浏览器引擎的原生支持(Chromium、Firefox、WebKit)、先进的网络拦截能力、复杂的上下文隔离机制以及出色的无头模式性能。
2.2 基础集成实现
以下是使用Python实现的Playwright与CreepJS集成解决方案:
from playwright.sync_api import sync_playwright
import json
import time
import random
def comprehensive_fingerprint_analysis():
“””
使用Playwright进行全面指纹分析
“””
with sync_playwright() as p:
# 配置浏览器启动参数
browser = p.chromium.launch(
headless=False, # 使用可见模式获得更真实的指纹
args=[
'–no-sandbox',
'–disable-blink-features=AutomationControlled',
'–disable-extensions',
'–disable-plugins',
'–disable-default-apps',
'–disable-sync'
]
)
# 创建浏览器上下文并配置特定设置
context = browser.new_context(
viewport={'width': 1920, 'height': 1080},
user_agent='Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36',
locale='zh-CN',
timezone_id='Asia/Shanghai',
permissions=['geolocation', 'camera', 'microphone']
)
page = context.new_page()
# 注入高级反检测脚本
page.add_init_script('''
// 隐藏自动化标识符
Object.defineProperty(navigator, 'webdriver', {
get: () => undefined,
});
// 模拟真实插件配置
Object.defineProperty(navigator, 'plugins', {
get: () => [
{
name: 'Chrome PDF Plugin',
filename: 'internal-pdf-viewer',
description: 'Portable Document Format',
length: 1
}
],
});
// 重写权限查询行为
const originalQuery = window.navigator.permissions.query;
window.navigator.permissions.query = (parameters) => (
parameters.name === 'notifications' ?
Promise.resolve({ state: Notification.permission }) :
originalQuery(parameters)
);
''')
try:
# 访问CreepJS分析页面
page.goto(“https://abrahamjuliot.github.io/creepjs/”,
wait_until='networkidle')
# 等待完整分析过程完成
page.wait_for_selector('#fingerprint-data', timeout=45000)
# 提取全面的指纹数据
analysis_result = page.evaluate('''
() => {
return {
timestamp: new Date().toISOString(),
trustScore: window.fp?.signature?.trust || 0,
fingerprintHash: window.fp?.signature?.hash || '',
detectedLies: window.fp?.signature?.lies || [],
browserSignature: {
canvas: window.fp?.signature?.canvas || {},
webgl: window.fp?.signature?.webgl || {},
audio: window.fp?.signature?.audio || {},
screen: window.fp?.signature?.screen || {},
fonts: window.fp?.signature?.fonts || {}
},
systemInfo: {
navigator: window.fp?.signature?.navigator || {},
performance: window.fp?.signature?.performance || {},
timezone: window.fp?.signature?.timezone || {}
},
analysisMetrics: {
totalTests: window.fp?.signature?.totalTests || 0,
passedTests: window.fp?.signature?.passedTests || 0,
failedTests: window.fp?.signature?.failedTests || 0,
analysisTime: window.fp?.signature?.analysisTime || 0
}
};
}
''')
# 保存全面分析结果
with open('playwright_fingerprint_analysis.json', 'w', encoding='utf-8') as f:
json.dump(analysis_result, f, indent=2, ensure_ascii=False)
return analysis_result
finally:
browser.close()
def batch_fingerprint_analysis():
“””
执行批量指纹分析进行比较研究
“””
results = []
configurations = [
{'headless': True, 'viewport': {'width': 1366, 'height': 768}},
{'headless': False, 'viewport': {'width': 1920, 'height': 1080}},
{'headless': True, 'viewport': {'width': 1280, 'height': 720}}
]
for i, config in enumerate(configurations):
print(f”运行分析配置 {i+1}/3…”)
with sync_playwright() as p:
browser = p.chromium.launch(headless=config['headless'])
context = browser.new_context(viewport=config['viewport'])
page = context.new_page()
page.goto(“https://abrahamjuliot.github.io/creepjs/”)
page.wait_for_selector('#fingerprint-data', timeout=30000)
result = page.evaluate('''
() => ({
config: arguments[0],
fingerprint: window.fp?.signature?.hash || '',
trustScore: window.fp?.signature?.trust || 0
})
''', config)
results.append(result)
browser.close()
# 在分析之间添加延迟
time.sleep(random.uniform(2, 5))
return results
智能体编程
2.3 高级Playwright配置
对于更复杂的指纹分析需求,可以使用以下高级配置:
def advanced_playwright_setup():
“””
用于隐蔽指纹分析的高级Playwright配置
“””
launch_options = {
'headless': False,
'args': [
'–no-sandbox',
'–disable-blink-features=AutomationControlled',
'–disable-extensions',
'–disable-plugins',
'–disable-images',
'–disable-background-timer-throttling',
'–disable-renderer-backgrounding',
'–disable-backgrounding-occluded-windows',
'–disable-client-side-phishing-detection',
'–disable-default-apps',
'–disable-dev-shm-usage',
'–disable-sync',
'–disable-translate',
'–hide-scrollbars',
'–metrics-recording-only',
'–mute-audio',
'–no-first-run',
'–safebrowsing-disable-auto-update'
]
}
context_options = {
'viewport': {'width': 1920, 'height': 1080},
'user_agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36',
'locale': 'zh-CN',
'timezone_id': 'Asia/Shanghai',
'extra_http_headers': {
'Accept-Language': 'zh-CN,zh;q=0.9,en;q=0.8',
'Accept-Encoding': 'gzip, deflate, br',
'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8'
}
}
return launch_options, context_options
智能体编程
3. Selenium集成方案详解
3.1 Selenium框架特点
Selenium作为最广泛采用的网页自动化工具,拥有成熟的生态系统和广泛的社区支持。虽然在性能方面不如较新的框架,但其稳定性和兼容性使其在指纹分析领域仍然具有重要价值。
3.2 Selenium集成实现
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
import json
import time
def selenium_fingerprint_analysis():
“””
使用Selenium进行全面指纹分析
“””
# 配置Chrome选项进行隐蔽操作
chrome_options = Options()
chrome_options.add_argument('–disable-blink-features=AutomationControlled')
chrome_options.add_argument('–disable-extensions')
chrome_options.add_argument('–disable-plugins')
chrome_options.add_argument('–disable-images')
chrome_options.add_argument('–disable-javascript-harmony-promises')
chrome_options.add_argument('–disable-background-timer-throttling')
chrome_options.add_argument('–disable-renderer-backgrounding')
chrome_options.add_argument('–disable-backgrounding-occluded-windows')
chrome_options.add_argument('–disable-client-side-phishing-detection')
chrome_options.add_argument('–disable-default-apps')
chrome_options.add_argument('–disable-dev-shm-usage')
chrome_options.add_argument('–disable-sync')
chrome_options.add_argument('–disable-translate')
# 高级反检测配置
chrome_options.add_experimental_option(“excludeSwitches”, [“enable-automation”])
chrome_options.add_experimental_option('useAutomationExtension', False)
chrome_options.add_experimental_option(“prefs”, {
“profile.default_content_setting_values.notifications”: 2,
“profile.default_content_settings.popups”: 0,
“profile.managed_default_content_settings.images”: 2
})
# 创建WebDriver实例
driver = webdriver.Chrome(options=chrome_options)
try:
# 执行全面的反检测脚本
driver.execute_script(“””
Object.defineProperty(navigator, 'webdriver', {get: () => undefined});
Object.defineProperty(navigator, 'plugins', {
get: () => [
{
name: 'Chrome PDF Plugin',
filename: 'internal-pdf-viewer',
description: 'Portable Document Format'
}
],
});
Object.defineProperty(navigator, 'languages', {
get: () => ['zh-CN', 'zh', 'en'],
});
“””)
# 访问CreepJS分析平台
driver.get(“https://abrahamjuliot.github.io/creepjs/”)
# 等待分析完成
WebDriverWait(driver, 45).until(
EC.presence_of_element_located((By.ID, “fingerprint-data”))
)
# 提取详细指纹信息
fingerprint_data = driver.execute_script('''
return {
analysisTimestamp: new Date().toISOString(),
fingerprintSignature: {
hash: window.fp?.signature?.hash || '',
trust: window.fp?.signature?.trust || 0,
lies: window.fp?.signature?.lies || []
},
technicalDetails: {
canvas: window.fp?.signature?.canvas || {},
webgl: window.fp?.signature?.webgl || {},
audio: window.fp?.signature?.audio || {},
screen: window.fp?.signature?.screen || {},
fonts: window.fp?.signature?.fonts || {},
navigator: window.fp?.signature?.navigator || {}
},
performanceMetrics: {
totalTests: window.fp?.signature?.totalTests || 0,
passedTests: window.fp?.signature?.passedTests || 0,
failedTests: window.fp?.signature?.failedTests || 0,
analysisLatency: window.fp?.signature?.analysisTime || 0
},
environmentInfo: {
timezone: window.fp?.signature?.timezone || {},
language: window.fp?.signature?.language || {},
platform: window.fp?.signature?.platform || {}
}
};
''')
# 执行额外的验证检查
validation_result = driver.execute_script('''
return {
webdriverDetected: typeof navigator.webdriver !== 'undefined',
automationDetected: window.chrome && window.chrome.runtime,
phantomDetected: window.callPhantom || window._phantom,
seleniumDetected: window.document.$cdc_asdjflasutopfhvcZLmcfl_
};
''')
# 合并所有分析数据
complete_analysis = {
'fingerprint': fingerprint_data,
'validation': validation_result,
'metadata': {
'tool': 'selenium',
'timestamp': time.time(),
'browserVersion': driver.capabilities.get('browserVersion', 'unknown')
}
}
# 保存分析结果
with open('selenium_fingerprint_report.json', 'w', encoding='utf-8') as f:
json.dump(complete_analysis, f, indent=2, ensure_ascii=False)
print(“Selenium指纹分析成功完成”)
print(f”信任评分: {fingerprint_data['fingerprintSignature']['trust']}”)
print(f”指纹哈希: {fingerprint_data['fingerprintSignature']['hash']}”)
print(f”检测到的问题: {len(fingerprint_data['fingerprintSignature']['lies'])}”)
return complete_analysis
except Exception as e:
print(f”分析失败,错误信息: {str(e)}”)
return None
finally:
driver.quit()
def multi_browser_selenium_analysis():
“””
使用Selenium进行多浏览器指纹分析
“””
browsers = ['chrome', 'firefox', 'edge']
results = {}
for browser_name in browsers:
print(f”使用{browser_name}进行分析…”)
try:
if browser_name == 'chrome':
options = webdriver.ChromeOptions()
driver = webdriver.Chrome(options=options)
elif browser_name == 'firefox':
options = webdriver.FirefoxOptions()
driver = webdriver.Firefox(options=options)
elif browser_name == 'edge':
options = webdriver.EdgeOptions()
driver = webdriver.Edge(options=options)
driver.get(“https://abrahamjuliot.github.io/creepjs/”)
WebDriverWait(driver, 30).until(
EC.presence_of_element_located((By.ID, “fingerprint-data”))
)
result = driver.execute_script('''
return {
browser: arguments[0],
fingerprint: window.fp?.signature?.hash || '',
trustScore: window.fp?.signature?.trust || 0
};
''', browser_name)
results[browser_name] = result
driver.quit()
except Exception as e:
print(f”分析{browser_name}时出错: {str(e)}”)
results[browser_name] = {'error': str(e)}
return results
智能体编程
4. Puppeteer集成解决方案
4.1 Puppeteer框架优势
Puppeteer作为谷歌开发的Node.js库,专门为Chrome和Chromium浏览器提供高级控制能力。在指纹分析环境中,Puppeteer的主要优势包括原生Chrome集成、出色的性能以及全面的接口覆盖。
4.2 Puppeteer集成实现
const puppeteer = require('puppeteer');
const fs = require('fs').promises;
async function puppeteerFingerprintAnalysis() {
/**
* 使用Puppeteer进行高级指纹分析
*/
const browser = await puppeteer.launch({
headless: false,
args: [
'–no-sandbox',
'–disable-setuid-sandbox',
'–disable-blink-features=AutomationControlled',
'–disable-extensions',
'–disable-plugins',
'–disable-images',
'–disable-background-timer-throttling',
'–disable-renderer-backgrounding',
'–disable-backgrounding-occluded-windows',
'–disable-client-side-phishing-detection',
'–disable-default-apps',
'–disable-dev-shm-usage',
'–disable-sync',
'–disable-translate',
'–hide-scrollbars',
'–metrics-recording-only',
'–mute-audio',
'–no-first-run'
]
});
const page = await browser.newPage();
// 配置页面设置
await page.setUserAgent('Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36');
await page.setViewport({ width: 1920, height: 1080 });
// 注入全面的反检测脚本
await page.evaluateOnNewDocument(() => {
// 隐藏webdriver属性
Object.defineProperty(navigator, 'webdriver', {
get: () => undefined,
});
// 模拟真实的插件环境
Object.defineProperty(navigator, 'plugins', {
get: () => [
{
name: 'Chrome PDF Plugin',
filename: 'internal-pdf-viewer',
description: 'Portable Document Format',
length: 1
}
],
});
// 重写权限接口
const originalQuery = window.navigator.permissions.query;
window.navigator.permissions.query = (parameters) => (
parameters.name === 'notifications' ?
Promise.resolve({ state: Notification.permission }) :
originalQuery(parameters)
);
// 隐藏自动化指标
delete window.chrome.runtime;
window.chrome = {
app: {
isInstalled: false,
},
webstore: {
onInstallStageChanged: {},
onDownloadProgress: {},
},
runtime: {
onConnect: {},
onMessage: {},
},
};
});
try {
// 访问CreepJS分析平台
await page.goto('https://abrahamjuliot.github.io/creepjs/', {
waitUntil: 'networkidle2',
timeout: 60000
});
// 等待完整分析
await page.waitForSelector('#fingerprint-data', { timeout: 45000 });
// 提取全面的分析结果
const analysisReport = await page.evaluate(() => {
return {
metadata: {
analysisTimestamp: new Date().toISOString(),
tool: 'puppeteer',
userAgent: navigator.userAgent,
url: window.location.href
},
fingerprintSignature: {
hash: window.fp?.signature?.hash || '',
trust: window.fp?.signature?.trust || 0,
lies: window.fp?.signature?.lies || [],
score: window.fp?.signature?.score || 0
},
technicalAnalysis: {
canvas: window.fp?.signature?.canvas || {},
webgl: window.fp?.signature?.webgl || {},
audio: window.fp?.signature?.audio || {},
screen: window.fp?.signature?.screen || {},
fonts: window.fp?.signature?.fonts || {},
navigator: window.fp?.signature?.navigator || {},
timezone: window.fp?.signature?.timezone || {}
},
performanceData: {
totalTests: window.fp?.signature?.totalTests || 0,
passedTests: window.fp?.signature?.passedTests || 0,
failedTests: window.fp?.signature?.failedTests || 0,
analysisTime: window.fp?.signature?.analysisTime || 0,
apiCalls: window.fp?.signature?.apiCalls || 0
},
privacyAnalysis: {
trackingResistance: window.fp?.signature?.trackingResistance || {},
fingerprintEntropy: window.fp?.signature?.entropy || 0,
uniquenessScore: window.fp?.signature?.uniqueness || 0
}
};
});
// 保存全面的分析报告
await fs.writeFile(
'puppeteer_fingerprint_analysis.json',
JSON.stringify(analysisReport, null, 2)
);
console.log('Puppeteer指纹分析成功完成');
console.log(`信任评分: ${analysisReport.fingerprintSignature.trust}`);
console.log(`指纹哈希: ${analysisReport.fingerprintSignature.hash}`);
console.log(`性能测试: ${analysisReport.performanceData.passedTests}/${analysisReport.performanceData.totalTests}`);
return analysisReport;
} catch (error) {
console.error('Puppeteer分析失败:', error.message);
throw error;
} finally {
await browser.close();
}
}
async function comparativeAnalysis() {
/**
* 执行跨不同配置的比较指纹分析
*/
const configurations = [
{
name: '标准配置',
headless: false,
viewport: { width: 1920, height: 1080 }
},
{
name: '无头模式',
headless: true,
viewport: { width: 1366, height: 768 }
},
{
name: '移动设备',
headless: false,
viewport: { width: 375, height: 667 }
}
];
const results = [];
for (const config of configurations) {
console.log(`运行${config.name}配置分析…`);
const browser = await puppeteer.launch({ headless: config.headless });
const page = await browser.newPage();
await page.setViewport(config.viewport);
await page.goto('https://abrahamjuliot.github.io/creepjs/');
await page.waitForSelector('#fingerprint-data', { timeout: 30000 });
const result = await page.evaluate((configName) => ({
configuration: configName,
fingerprint: window.fp?.signature?.hash || '',
trustScore: window.fp?.signature?.trust || 0,
viewport: {
width: window.innerWidth,
height: window.innerHeight
}
}), config.name);
results.push(result);
await browser.close();
// 在分析之间添加延迟
await new Promise(resolve => setTimeout(resolve, 3000));
}
// 保存比较分析
await fs.writeFile(
'comparative_fingerprint_analysis.json',
JSON.stringify(results, null, 2)
);
return results;
}
// 执行分析
puppeteerFingerprintAnalysis()
.then(result => console.log('分析完成:', result.metadata))
.catch(error => console.error('分析失败:', error));
智能体编程
5. 集成最佳实践
5.1 性能优化策略
在进行大规模指纹分析时,性能优化是关键考虑因素:
并行处理:使用多个浏览器实例并行处理分析任务,显著提高整体吞吐量。
资源管理:正确管理浏览器资源,避免内存泄漏和资源耗尽。
缓存策略:实施智能缓存机制来避免冗余的分析操作。
网络优化:优化网络请求和响应处理来减少延迟。
5.2 反检测增强
为了获得更准确的指纹数据,需要实施全面的反检测措施:
用户代理轮换:系统性地轮换用户代理字符串来模拟不同的浏览器环境。
时序随机化:引入随机延迟来模拟类似人类的行为模式。
环境模拟:全面模拟真实的浏览器环境和用户交互模式。
代理集成:使用代理服务来分散请求并避免基于IP的检测。
6. 高级配置策略
6.1 动态环境模拟
为了进一步增强隐蔽能力,可以实施动态环境模拟:
def dynamic_environment_fingerprint_analysis():
“””
动态环境模拟增强指纹分析
“””
environments = [
{
'name': '企业Windows环境',
'user_agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36',
'viewport': {'width': 1920, 'height': 1080},
'timezone': 'Asia/Shanghai',
'language': 'zh-CN'
},
{
'name': '家庭macOS环境',
'user_agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36',
'viewport': {'width': 1440, 'height': 900},
'timezone': 'Asia/Shanghai',
'language': 'zh-CN'
},
{
'name': '移动Android环境',
'user_agent': 'Mozilla/5.0 (Linux; Android 12; SM-G975F) AppleWebKit/537.36',
'viewport': {'width': 375, 'height': 667},
'timezone': 'Asia/Shanghai',
'language': 'zh-CN'
}
]
analysis_results = []
for env_config in environments:
print(f”分析环境: {env_config['name']}”)
with sync_playwright() as p:
browser = p.chromium.launch(headless=False)
context = browser.new_context(
viewport=env_config['viewport'],
user_agent=env_config['user_agent'],
locale=env_config['language'],
timezone_id=env_config['timezone']
)
page = context.new_page()
# 环境特定脚本注入
page.add_init_script(f'''
// 模拟环境特定特征
Object.defineProperty(navigator, 'platform', {{
get: () => '{env_config[“name”].split(“环境”)[0]}'
}});
// 动态内存模拟
Object.defineProperty(navigator, 'deviceMemory', {{
get: () => {random.choice([4, 8, 16, 32])}
}});
''')
page.goto(“https://abrahamjuliot.github.io/creepjs/”)
page.wait_for_selector('#fingerprint-data', timeout=30000)
result = page.evaluate(f'''
() => ({{
environment: '{env_config[“name”]}',
fingerprint: window.fp?.signature?.hash || '',
trustScore: window.fp?.signature?.trust || 0,
detectedLies: window.fp?.signature?.lies?.length || 0
}})
''')
analysis_results.append(result)
browser.close()
# 随机延迟模拟
time.sleep(random.uniform(3, 8))
return analysis_results
智能体编程
6.2 高级反检测配置框架
class AdvancedStealthConfiguration:
“””
用于指纹分析的高级隐蔽配置管理
“””
def __init__(self):
self.user_agents = [
'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36',
'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36',
'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36'
]
self.viewport_configurations = [
{'width': 1920, 'height': 1080},
{'width': 1366, 'height': 768},
{'width': 1440, 'height': 900},
{'width': 1280, 'height': 720}
]
self.timezone_options = [
'Asia/Shanghai',
'Asia/Beijing',
'Asia/Chongqing',
'Asia/Harbin',
'Asia/Urumqi'
]
def get_randomized_config(self):
“””
生成随机化的浏览器配置用于隐蔽操作
“””
return {
'user_agent': random.choice(self.user_agents),
'viewport': random.choice(self.viewport_configurations),
'timezone': random.choice(self.timezone_options),
'locale': 'zh-CN',
'permissions': ['geolocation', 'camera', 'microphone']
}
def get_advanced_launch_args(self):
“””
用于最大隐蔽性的全面浏览器启动参数
“””
return [
'–no-sandbox',
'–disable-blink-features=AutomationControlled',
'–disable-extensions',
'–disable-plugins',
'–disable-images',
'–disable-javascript-harmony-promises',
'–disable-background-timer-throttling',
'–disable-renderer-backgrounding',
'–disable-backgrounding-occluded-windows',
'–disable-client-side-phishing-detection',
'–disable-default-apps',
'–disable-dev-shm-usage',
'–disable-sync',
'–disable-translate',
'–hide-scrollbars',
'–metrics-recording-only',
'–mute-audio',
'–no-first-run',
'–safebrowsing-disable-auto-update',
'–disable-ipc-flooding-protection',
'–disable-background-networking',
'–disable-component-extensions-with-background-pages',
'–disable-features=TranslateUI,VizDisplayCompositor'
]
def sophisticated_fingerprint_analysis():
“””
使用高级隐蔽配置执行复杂指纹分析
“””
stealth_config = AdvancedStealthConfiguration()
config = stealth_config.get_randomized_config()
with sync_playwright() as p:
browser = p.chromium.launch(
headless=False,
args=stealth_config.get_advanced_launch_args()
)
context = browser.new_context(
viewport=config['viewport'],
user_agent=config['user_agent'],
locale=config['locale'],
timezone_id=config['timezone'],
permissions=config['permissions']
)
page = context.new_page()
# 注入全面的反检测脚本
page.add_init_script('''
// 完整的webdriver属性混淆
Object.defineProperty(navigator, 'webdriver', {
get: () => undefined,
});
// 高级插件模拟
Object.defineProperty(navigator, 'plugins', {
get: () => [
{
name: 'Chrome PDF Plugin',
filename: 'internal-pdf-viewer',
description: 'Portable Document Format',
length: 1,
item: () => null,
namedItem: () => null
},
{
name: 'Chromium PDF Plugin',
filename: 'internal-pdf-viewer',
description: 'Portable Document Format',
length: 1,
item: () => null,
namedItem: () => null
}
],
});
// 全面的权限API重写
const originalQuery = window.navigator.permissions.query;
window.navigator.permissions.query = (parameters) => {
const permissionMap = {
'notifications': { state: Notification.permission },
'geolocation': { state: 'granted' },
'camera': { state: 'denied' },
'microphone': { state: 'denied' }
};
return parameters.name in permissionMap ?
Promise.resolve(permissionMap[parameters.name]) :
originalQuery(parameters);
};
// Chrome运行时混淆
if (window.chrome && window.chrome.runtime) {
delete window.chrome.runtime.onConnect;
delete window.chrome.runtime.onMessage;
}
// 高级时序混淆
const originalDateNow = Date.now;
Date.now = () => originalDateNow() + Math.random() * 100;
// 性能时序混淆
const originalPerformanceNow = performance.now;
performance.now = () => originalPerformanceNow() + Math.random() * 10;
''')
try:
# 使用增强隐蔽性执行指纹分析
page.goto(“https://abrahamjuliot.github.io/creepjs/”,
wait_until='networkidle')
# 等待完整分析并延长超时时间
page.wait_for_selector('#fingerprint-data', timeout=60000)
# 提取全面的分析数据
enhanced_analysis = page.evaluate('''
() => {
return {
timestamp: new Date().toISOString(),
stealthConfiguration: {
webdriverHidden: typeof navigator.webdriver === 'undefined',
pluginsModified: navigator.plugins.length > 0,
permissionsPatched: true,
chromeRuntimeModified: !window.chrome?.runtime?.onConnect
},
fingerprintSignature: {
hash: window.fp?.signature?.hash || '',
trust: window.fp?.signature?.trust || 0,
lies: window.fp?.signature?.lies || [],
score: window.fp?.signature?.score || 0
},
detectionBypass: {
automationHidden: true,
timingObfuscated: true,
performanceModified: true,
pluginEnvironmentSimulated: true
},
analysisMetrics: {
totalTests: window.fp?.signature?.totalTests || 0,
passedTests: window.fp?.signature?.passedTests || 0,
failedTests: window.fp?.signature?.failedTests || 0,
analysisLatency: window.fp?.signature?.analysisTime || 0
},
technicalFingerprint: {
canvas: window.fp?.signature?.canvas || {},
webgl: window.fp?.signature?.webgl || {},
audio: window.fp?.signature?.audio || {},
screen: window.fp?.signature?.screen || {},
fonts: window.fp?.signature?.fonts || {},
navigator: window.fp?.signature?.navigator || {}
},
privacyAnalysis: {
trackingResistance: window.fp?.signature?.trackingResistance || 0,
fingerprintEntropy: window.fp?.signature?.entropy || 0,
uniquenessRating: window.fp?.signature?.uniqueness || 0
}
};
}
''')
# 保存增强分析结果
with open('advanced_stealth_analysis.json', 'w', encoding='utf-8') as f:
json.dump(enhanced_analysis, f, indent=2, ensure_ascii=False)
print(“高级隐蔽指纹分析完成”)
print(f”信任评分: {enhanced_analysis['fingerprintSignature']['trust']}”)
print(f”隐蔽状态: {enhanced_analysis['stealthConfiguration']}”)
print(f”检测绕过: {enhanced_analysis['detectionBypass']}”)
return enhanced_analysis
finally:
browser.close()
智能体编程
7. 常见问题与解决方案
7.1 检测准确性问题
问题描述:在某些情况下,自动化工具可能被CreepJS检测为可疑环境,导致分析结果不准确。
解决方案:
使用更全面的反检测脚本
增加随机延迟和人类行为模拟
定期更新用户代理和浏览器特征
使用多重验证机制确保结果准确性
7.2 性能优化问题
问题描述:大规模分析时可能遇到内存泄漏或性能瓶颈。
解决方案:
实施资源池管理机制
使用异步处理和任务队列
定期清理浏览器缓存和资源
监控系统资源使用情况
7.3 网络稳定性问题
问题描述:网络连接不稳定可能导致分析中断或失败。
解决方案:
实施重试机制和错误恢复
使用多个网络代理轮换
设置合理的超时时间
实现断点续传功能
8. 总结
本篇文章详细介绍了将CreepJS与主流浏览器自动化工具进行集成的实际实现方法。通过Playwright、Selenium和Puppeteer的具体集成解决方案,我们展示了如何在不同场景下有效进行指纹分析。
每种自动化框架都有其独特优势和应用场景。Playwright提供出色的跨浏览器支持和现代接口设计,Selenium拥有成熟的生态系统和广泛的兼容性,Puppeteer则在Chrome环境下提供卓越的性能和全面的控制能力。
有效的集成不仅需要技术实现,还需要考虑性能优化、反检测增强以及结果准确性等多个因素。通过采用适当的最佳实践和优化策略,可以显著改善指纹分析的质量和效率。
在下一篇文章中,我们将探讨高级反检测技术、替代指纹工具以及实际应用场景,为完整理解CreepJS生态系统提供全面视角。 “