Greasy Fork is available in English.

Change User-Agent

Change user-agent for navigator object after receiving script packets

// ==UserScript==
// @name         Change User-Agent
// @namespace    http://tampermonkey.net/
// @version      6
// @description  Change user-agent for navigator object after receiving script packets
// @author       Your Name
// @match        *://*/*
// @grant        none
// ==/UserScript==

(function() {
    "use strict";

    // Сохраняем оригинальный метод send()
    var originalSend = XMLHttpRequest.prototype.send;

    // Переопределяем метод send()
    XMLHttpRequest.prototype.send = function(body) {
        // Проверяем URL, чтобы перехватывать только нужные запросы
        if (this._url && this._url.includes("/events/analytics/public/v4/events/logs")) {
            try {
                // Если тело запроса — JSON, парсим его
                let requestBody = JSON.parse(body);

                // Проверяем, содержит ли запрос данные о "browserRes" и изменяем их
                if (requestBody && Array.isArray(requestBody.events)) {
                    requestBody.events.forEach(event => {
                        if (event.device && event.device.browserRes) {
                            event.device.browserRes = "1920x1080"; // Меняем разрешение браузера
                        }
                        if (event.device && event.device.screenResolutionNumber) {
                            event.device.screenResolutionNumber = "1920x1080"; // Меняем разрешение экрана
                        }
                    });

                    // Преобразуем объект обратно в строку
                    body = JSON.stringify(requestBody);
                }
            } catch (error) {
                console.error("Ошибка при изменении данных в запросе:", error);
            }
        }

        // Вызываем оригинальный метод send() с изменённым или оригинальным телом
        return originalSend.call(this, body);
    };

    // Перехватываем URL запросов
    var originalOpen = XMLHttpRequest.prototype.open;
    XMLHttpRequest.prototype.open = function(method, url) {
        this._url = url; // Сохраняем URL для проверки в send()
        return originalOpen.apply(this, arguments);
    };

    console.log("Скрипт для перехвата и изменения запросов активирован.");
})();