124 lines
6.0 KiB
Plaintext
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);
|
|
""") |