Odblokuj kopiowanie, zaznaczanie i prawy klik na każdej stronie
Trafiasz na artykuł, chcesz skopiować jeden akapit do notatek — a strona nie pozwala zaznaczyć tekstu. Prawy klik nic nie robi. To nie błąd przeglądarki, to celowa blokada w JavaScript strony. Ten artykuł pokazuje, jak ją zdjąć jedną regułą JustZix.
Jak strony blokują kopiowanie
Nie ma żadnego „trybu tylko do odczytu" w HTML. Strona, która blokuje zaznaczanie, robi to na dwa sposoby:
- CSS —
user-select: nonena elementach z tekstem. - JavaScript — handlery zdarzeń
copy,selectstart,contextmenu, które wołająpreventDefault().
Oba da się obejść, bo oba działają w przeglądarce — a Ty masz nad swoją przeglądarką pełną kontrolę.
Czy to legalne?
Tak. Tekst jest już na Twoim ekranie — strona Ci go wysłała. Zdjęcie blokady kopiowania nie obchodzi żadnego zabezpieczenia treści, bo żadnego nie ma; to tylko utrudnienie UX. Co innego prawa autorskie do samego tekstu — to, co zrobisz ze skopiowanym fragmentem, to osobna sprawa.
Reguła — CSS plus JS
Wzorzec URL ustaw na stronę, która Ci przeszkadza (albo * globalnie). W zakładce JavaScript reguły wklej:
['copy', 'cut', 'contextmenu', 'selectstart', 'dragstart']
.forEach(evt =>
document.addEventListener(evt, e => e.stopPropagation(), true)
);
const s = document.createElement('style');
s.textContent =
'*{user-select:text!important;-webkit-user-select:text!important}';
document.documentElement.appendChild(s);
Jak to działa
stopPropagation w fazie capture
Trzeci argument addEventListener ustawiony na true oznacza fazę capture. Nasz listener łapie zdarzenie zanim dotrze ono do handlera strony i wywołuje stopPropagation() — propagacja się zatrzymuje, handler strony (ten z preventDefault()) nigdy nie dostaje zdarzenia.
Wstrzyknięty style
Drugi blok dorzuca regułę CSS z user-select: text !important. !important wygrywa z dowolnym user-select: none ze strony. Wstrzykujemy to z JS (a nie jako CSS reguły), żeby trafiło na sam koniec kaskady i miało pewność wygranej.
Wariant tylko-CSS
Jeśli blokada jest wyłącznie CSS-owa, sam JS jest zbędny — wystarczy w zakładce CSS reguły:
* { user-select: text !important; -webkit-user-select: text !important; }
Spróbuj najpierw tego. Jeśli zaznaczanie nadal nie działa — strona blokuje też w JS i potrzebujesz pełnej wersji.
Pułapki
- Pola haseł. Niektóre strony blokują kopiowanie pól
passwordcelowo — taka blokada bywa sensowna, zostaw ją. - Treść doładowywana później. Wstrzyknięty
<style>obejmuje też elementy dodane do DOM-u po starcie — działa na SPA. - To nie omija paywalla. Odblokowanie zaznaczania pokazuje tekst, który już masz. Treści ukrytej za loginem to nie odsłoni.
Zobacz też
- Przykłady — ten i inne gotowe snippety
- Własne skróty klawiszowe — kolejny wzorzec event listenerów
- Ukryj cookie bannery — CSS na natrętne elementy
Zainstaluj JustZix — i kopiuj z każdej strony, która próbuje Ci tego zabronić.
Oceń ten wpis
Brak ocen — oceń jako pierwszy.