mirror of
https://github.com/lukaszraczylo/mcp-captcharesolver.git
synced 2026-10-12 00:45:28 +00:00
- Convert assets/evasions.js to evasions.js.tmpl (Go text/template) - Placeholders: WebGLVendor, WebGLRenderer, Platform, Languages - Add navigator.platform spoof from fingerprint - ScriptParams gains OS, Browser, Locale, Seed fields (fieldalignment ordered) - ScriptResult gains Fingerprint field — returns the identity the script was rendered for - StealthScript calls GenerateFingerprint and renders template; single call gives both script and coherent fingerprint - languagesJS: locale to JS list (en-GB -> 'en-GB', 'en') - Template parsed once at init via template.Must - StealthScriptIn in tools.go gains OS, Browser, Locale, Seed pass-through - Tests: added TestStealthScriptCoherence asserting rendered values match fingerprint
28 lines
1.2 KiB
Cheetah
28 lines
1.2 KiB
Cheetah
(() => {
|
|
// navigator.webdriver
|
|
Object.defineProperty(navigator, 'webdriver', { get: () => undefined });
|
|
// languages
|
|
Object.defineProperty(navigator, 'languages', { get: () => [{{.Languages}}] });
|
|
// navigator.platform
|
|
Object.defineProperty(navigator, 'platform', { get: () => '{{.Platform}}' });
|
|
// plugins (non-empty)
|
|
Object.defineProperty(navigator, 'plugins', { get: () => [1, 2, 3, 4, 5] });
|
|
// chrome runtime stub
|
|
window.chrome = window.chrome || { runtime: {} };
|
|
// permissions query consistency
|
|
const origQuery = window.navigator.permissions && window.navigator.permissions.query;
|
|
if (origQuery) {
|
|
window.navigator.permissions.query = (params) =>
|
|
params && params.name === 'notifications'
|
|
? Promise.resolve({ state: Notification.permission })
|
|
: origQuery(params);
|
|
}
|
|
// WebGL vendor/renderer spoof
|
|
const getParam = WebGLRenderingContext.prototype.getParameter;
|
|
WebGLRenderingContext.prototype.getParameter = function (p) {
|
|
if (p === 37445) return '{{.WebGLVendor}}'; // UNMASKED_VENDOR_WEBGL
|
|
if (p === 37446) return '{{.WebGLRenderer}}'; // UNMASKED_RENDERER_WEBGL
|
|
return getParam.call(this, p);
|
|
};
|
|
})();
|