mirror of
https://github.com/lukaszraczylo/mcp-captcharesolver.git
synced 2026-10-20 01:27:53 +00:00
feat(stealth): make evasion script coherent with generated fingerprint
- 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
This commit is contained in:
@@ -0,0 +1,27 @@
|
||||
(() => {
|
||||
// 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);
|
||||
};
|
||||
})();
|
||||
Reference in New Issue
Block a user