Files
2026-05-14 16:15:58 +07:00

124 lines
6.0 KiB
Plaintext

await page.add_init_script("""
// === Собираем перехваченные данные (пассивно, только копирование) ===
window._interceptedData = {
logs: [],
submitRealCalls: [],
fetchCalls: [],
};
// === Отключаем ANTI_FRAUD_ENABLED ===
const _origDefineProperty = Object.defineProperty;
Object.defineProperty = function(obj, prop, descriptor) {
if (prop === 'ANTI_FRAUD_ENABLED') {
descriptor.value = false;
}
return _origDefineProperty.call(this, obj, prop, descriptor);
};
if (typeof window.ANTI_FRAUD_ENABLED !== 'undefined') {
window.ANTI_FRAUD_ENABLED = false;
}
// === Перехват loggerService.log — только копирование ===
const _patchLoggerService = (logger) => {
if (logger && typeof logger.log === 'function' && !logger._intercepted) {
const _origLog = logger.log;
logger.log = function(...args) {
window._interceptedData.logs.push({ args: [...args], ts: Date.now() });
return _origLog.apply(this, args);
};
logger._intercepted = true;
}
};
let _currentLoggerService = window.loggerService;
Object.defineProperty(window, 'loggerService', {
set: function(val) {
_currentLoggerService = val;
_patchLoggerService(val);
},
get: function() {
return _currentLoggerService;
},
configurable: true
});
if (window.loggerService) _patchLoggerService(window.loggerService);
// === Перехват fetch — только копирование ===
const _origFetch = window.fetch;
window.fetch = async function(...fetchArgs) {
const url = fetchArgs[0];
const options = fetchArgs[1] || {};
const urlStr = typeof url === 'string' ? url : (url && url.url) || '';
const callData = {
url: urlStr,
method: options.method || 'GET',
ts: Date.now(),
};
if (options.body) {
try {
callData.body = typeof options.body === 'string'
? JSON.parse(options.body)
: options.body;
} catch(e) {
callData.bodyRaw = String(options.body);
}
}
if (urlStr.includes('webhook') || urlStr.includes('real') || urlStr.includes('n8n.uplify')) {
window._interceptedData.fetchCalls.push(callData);
}
const response = await _origFetch.apply(this, fetchArgs);
if (urlStr.includes('webhook') || urlStr.includes('real') || urlStr.includes('n8n.uplify')) {
try {
const cloned = response.clone();
const body = await cloned.text();
callData.response = body.substring(0, 2000);
callData.status = response.status;
} catch(e) {}
}
return response;
};
// === Перехват submitReal — только копирование ===
const _checkSubmitReal = setInterval(() => {
const searchIn = [window];
for (const key of Object.getOwnPropertyNames(window)) {
try {
const val = window[key];
if (val && typeof val === 'object') searchIn.push(val);
} catch(e) {}
}
for (const obj of searchIn) {
if (obj && typeof obj.submitReal === 'function' && !obj._intercepted) {
const _origSubmitReal = obj.submitReal;
obj.submitReal = async function(...args) {
window._interceptedData.submitRealCalls.push({
ts: Date.now(),
visitId: obj.appModel?.visitId,
visitorId: obj.fingerprintModel?.visitorId,
platform: obj.configModel?.platform,
realUrl: obj.configModel?.realUrl,
snapshot: obj.securityModel?.snapshot,
gaInit: obj.validationModel?.gaInit,
ymInit: obj.validationModel?.ymInit,
adblockEnabled: obj.validationModel?.adblockEnabled,
pageSource: obj.configModel?.pageSource,
redirectAllowed: obj.securityModel?.redirectAllowed,
fpBotType: obj.securityModel?.fpBotType,
country: obj.userModel?.geo?.country_code,
});
return _origSubmitReal.apply(this, args);
};
obj._intercepted = true;
}
}
}, 300);
setTimeout(() => clearInterval(_checkSubmitReal), 30000);
""")