Разблокируйте копирование, выделение и правый клик на любой странице
Удивительное число сайтов всё ещё пытаются «защитить» свой контент, отключая выделение текста, команду копирования и меню правого клика. Это редко останавливает решительного человека, но постоянно раздражает тех, кто просто хочет ухватить цитату или номер телефона. С JustZix вы можете снова включить всё это за секунды.
Почему страницы блокируют копирование
Сайты отключают копирование и выделение тремя распространёнными способами: CSS-правилом (user-select: none), слушателями событий JavaScript, вызывающими preventDefault() на copy, selectstart и contextmenu, а иногда прозрачным оверлеем поверх текста. JustZix позволяет обезвредить каждый слой, потому что ваше правило работает в странице, и вы контролируете и CSS, и JS.
Шаг 1: принудительно вернуть выделение через CSS
Создайте CSS-правило в JustZix, сопоставленное с сайтом (или с * для всего), и вставьте это. Флаг !important переопределяет собственную таблицу стилей сайта.
* {
-webkit-user-select: text !important;
-moz-user-select: text !important;
user-select: text !important;
cursor: auto !important;
}
Уже это одно чинит большинство случаев «не могу выделить текст». Если страница всё ещё сопротивляется, блокировка идёт от JavaScript.
Шаг 2: остановите обработчики JavaScript
Добавьте JS-правило для того же URL. Хитрость в том, чтобы регистрировать ваши слушатели в фазе захвата (третий аргумент true), чтобы они срабатывали раньше обработчиков сайта, затем вызывать stopImmediatePropagation(), чтобы блокирующий код сайта вообще не запускался.
['copy', 'cut', 'paste', 'selectstart', 'contextmenu', 'mousedown'].forEach(function (type) {
document.addEventListener(type, function (e) {
e.stopImmediatePropagation();
}, true);
});
JustZix запускает ваш JS один раз за загрузку страницы, так что это привязывается рано и покрывает весь документ. Поскольку вы только останавливаете распространение, поведение браузера по умолчанию (собственно копирование, собственно показ меню) по-прежнему работает.
Шаг 3: очистите встроенные обработчики
Некоторые страницы задают oncontextmenu="return false" прямо на элементе <body>. Слушатели фазы захвата не всегда бьют встроенные атрибуты, так что сотрите и их. Этот сниппет защитный: он проверяет существование элемента, прежде чем его трогать.
var targets = [document.body, document.documentElement];
targets.forEach(function (el) {
if (!el) return;
el.oncontextmenu = null;
el.oncopy = null;
el.onselectstart = null;
el.ondragstart = null;
});
Собираем всё вместе
Для упрямого сайта используйте все три: CSS-правило плюс одно JS-правило, объединяющее шаги 2 и 3. Объединённое JS-правило выглядит так:
['copy', 'cut', 'paste', 'selectstart', 'contextmenu', 'mousedown', 'dragstart'].forEach(function (type) {
document.addEventListener(type, function (e) {
e.stopImmediatePropagation();
}, true);
});
var el = document.body;
if (el) {
el.oncontextmenu = null;
el.oncopy = null;
el.onselectstart = null;
}
Когда текст внутри оверлея
Если вы видите текст, но выделение хватает пустую коробку, сверху сидит невидимый элемент. Найдите его в DevTools и отключите события указателя через CSS:
.paywall-overlay,
.copy-guard,
[class*="overlay"] {
pointer-events: none !important;
}
Будьте осторожны с широкими селекторами вроде [class*="overlay"] — они могут отключить нужные вам кнопки. Предпочтите точное имя класса, когда вы его определили.
Советы для надёжных правил
- Сопоставляйте правило настолько узко, насколько можете. Шаблон для конкретного сайта безопаснее, чем
*. - Держите CSS-правило и JS-правило отдельно, чтобы переключать каждое независимо при тестировании.
- Если страница загружает контент динамически, слушатели фазы захвата всё равно работают, потому что они живут на
document, а не на отдельных элементах. - Ничто здесь никуда не отправляет данные — это только меняет поведение событий в вашем собственном браузере.
Просмотрите готовые примеры ради версии этого правила в один клик, а если вы ещё не установили его, скачайте JustZix для Chrome, Firefox, Edge или Opera. Когда копирование снова заработает, вы, возможно, захотите прочесть нашу сопутствующую статью об автоматическом принятии cookie-баннеров.
Оцени эту статью
Оценок пока нет — оцени первым.