Mister Old
Посвященный
Всяких "невидимых кнопок подтверждения" (теоретически вполне возможных кстати);
Подключаем в любимый ЮзерСкриптМенеджер. Я лично подключу к Violentmonkey.
Итак, как работает? При заходе на любую страничку (кроме вайтлиста). Он автоматически отключает все теоретически несущие какую то угрозу разрешения. Причем делает он это, ДО загрузки любого контента.
Фактически мы....
Работаем на опережение!
Для бабушек и дедушек, ставим ОБЯЗАТЕЛЬНО. Мы моолодцы! Всем добра!
Подключаем в любимый ЮзерСкриптМенеджер. Я лично подключу к Violentmonkey.
Итак, как работает? При заходе на любую страничку (кроме вайтлиста). Он автоматически отключает все теоретически несущие какую то угрозу разрешения. Причем делает он это, ДО загрузки любого контента.
Фактически мы....
Работаем на опережение!
Для бабушек и дедушек, ставим ОБЯЗАТЕЛЬНО. Мы моолодцы! Всем добра!
JavaScript:
// ==UserScript==
// @name Disable Dangerous Web APIs (with exceptions)
// @namespace http://tampermonkey.net/
// @version 1.1
// @description Отключает File System Access, WebUSB, WebSerial, WebBluetooth, Push API и Notifications, кроме доверенных сайтов
// @match *://*/*
// @run-at document-start
// @grant none
// ==/UserScript==
(function() {
'use strict';
// Добавь сюда сайты, которым доверяешь (без https://)
const whitelist = [
'chat.openai.com',
'github.com',
'your-trusted-site.com'
];
const host = window.location.hostname;
if (whitelist.some(domain => host.endsWith(domain))) {
return; // Не отключаем ничего на этих сайтах
}
// File System Access API
try {
delete window.showOpenFilePicker;
delete window.showSaveFilePicker;
if (window.StorageManager) delete window.StorageManager.prototype.getDirectory;
} catch (e) {}
// WebUSB, WebSerial, WebBluetooth
try {
if ('usb' in navigator) Object.defineProperty(navigator, 'usb', { value: undefined });
if ('serial' in navigator) Object.defineProperty(navigator, 'serial', { value: undefined });
if ('bluetooth' in navigator) Object.defineProperty(navigator, 'bluetooth', { value: undefined });
} catch (e) {}
// Push API и Notifications
try {
if ('PushManager' in window) Object.defineProperty(window, 'PushManager', { value: undefined });
if ('Notification' in window) Object.defineProperty(window, 'Notification', { value: undefined });
} catch (e) {}
})();