W jaki sposób strony internetowe blokują zaznaczanie tekstu i jak go odblokować?

74

Istnieje strona internetowa ( przykład ), która w jakiś sposób blokuje zaznaczanie tekstu. Również blokuje Ctrl+, Aaby zaznaczyć wszystko, nie ma również „Kopiuj” w menu podręcznym.

Co próbowałem:

Niektóre witryny używają JavaScript do blokowania wyboru. Więc wyłączyłem wszystkie źródła JavaScript w dodatku bez skryptu w Firefoksie. Próbowałem tej samej strony w Google Chrome z dodatkiem Script Safe. Upewnij się, że wszystko jest zablokowane, nadal nie można wybrać tekstu. Wskaźnik myszy pozostaje strzałką, a nie kursorem tekstowym również na całej stronie.

Służy about:configdo całkowitego wyłączenia JavaScript w przeglądarce Firefox. Wciąż brak efektu.

Czytałem, że niektóre witryny używają DIV z wyświetlaniem stylu: blok, więc użyłem Inspect do zbadania stylów witryny. Nie ma żadnej wzmianki o „bloku” na całej stronie internetowej, ani we wbudowanym CSS, ani w atrybucie style = atrybuty.

Tekst nie jest obrazem, flashem ani innym efektem HTML5 canvas. Wszystko mieści się w znacznikach DIV i P, ale nie znaleziono stylu, który mógłby zablokować zaznaczenie tekstu.

W jaki sposób strona internetowa może nadal blokować zaznaczanie tekstu? Nie wspominając już o tym, dlaczego przeglądarki w ogóle obsługują takie zachowania. Chcę tylko użyć wybranego słowa lub zdania i wyszukać je w Google za pomocą kliknięcia prawym przyciskiem myszy. To dość denerwujące, gdy witryna robi takie rzeczy i zmusza mnie do ręcznego wpisywania terminów technicznych i nazw w Google. To zakłóca mój przepływ pracy.

użytkownik6329530
źródło
8
„W jaki sposób strony internetowe blokują oznaczanie tekstu” - ustawiono style.userSelectna none.
2
@ Xen2050 Przeważnie nie obchodzi mnie kopiowanie tekstu. Uwielbiam możliwość oznaczania fraz i terminów oraz wyszukiwania ich w Google za pomocą jednego kliknięcia myszy (dwukrotne kliknięcie słowa, kliknięcie prawym przyciskiem myszy „Wyszukaj w Google ...”). Mógłbym wejść do źródła (jeśli w ogóle jest to czyste źródło) i wyszukać słowo, skopiować je, wkleić do Google, ale cóż ... jak powiedziałem, to tylko irytacja. Ktoś1, kto chce skopiować tekst witryny, może to zrobić tak czy inaczej, ale ktoś, kto chce tylko wygodnego przepływu pracy, zostaje utrudniony.
user6329530
122
Czy możemy poświęcić chwilę i współczuć wszystkim urojeniom programistów, którzy uważają, że to dobry środek bezpieczeństwa?
MCMastery
3
Nie wiem już, jak powszechna jest ta praktyka, ale pamiętam, że natrafiłem na kilka przypadków rozciągnięcia obrazu o jednym pikselu, aby pokrył całą stronę, aby zapobiec kopiowaniu tekstu itp. To i zmiana wskaźnika myszy na błyszczącą tęczę- gwiazdy jednorożca i wszędzie migający tekst ...
RIanGillis
27
@MCMastery Lub gorzej, programiści, którzy wiedzą, że to okropne, ale powiedziano im, że i tak muszą to zrobić. Przez większość czasu martwią się, że ludzie kradną treści. Następnie masz witryny takie jak SO, które są ciągle kradzione / kradzione ... ale opłacalne komercyjnie. Okazuje się, że wyobcowanie bazy użytkowników jest szkodliwe dla biznesu. Kto by pomyślał?!
corsiKa

Odpowiedzi:

81

https://www.angst-panik-hilfe.de/angst-panik.css pokazuje:

body{-webkit-user-select:none;-moz-user-select:-moz-none;
-ms-user-select:none;user-select:none}

Ten efekt dotyczy całego tagu BODY.

Dokumentacja tego CSS: Mozilla Developer Site: wybierz użytkownika .

Prawdopodobnie możesz to zmienić, usuwając styl w Narzędziach programisty (naciśnij F12w przeglądarce Firefox lub Chrome) - możesz nawet utworzyć aplet JavaScript, który po zainwestowaniu czasu w konfigurację może usunąć ten styl przy mniejszym wysiłku Twoja część (co może być oszczędnością czasu, jeśli planujesz odwiedzić witrynę wiele razy).

Chciałbym również dodać tę notatkę: To może nie być jedyny sposób, aby uzyskać przynajmniej część tego efektu. Innym możliwym sposobem może być niewidzialna DIVokładka DIVz tekstem. W ten sposób kursor myszy nie zamieniłby się w belkę dwuteową (kursor tekstowy), ponieważ kursor byłby oparty na zawartości najwyższego poziomu DIV. ( Ctrl- Aprawdopodobnie jednak obejmowałby ten tekst.)

To dość denerwujące, gdy witryna robi takie rzeczy i zmusza mnie do ręcznego wpisywania terminów technicznych i nazw w Google. To zakłóca mój przepływ pracy.

Amen! Widząc to, jestem rozczarowany faktem, że taki styl CSS jest wdrażany przez główne przeglądarki. Takie rzeczy są naprawdę denerwujące!

TOOGAM
źródło
61
Styl user-selectCSS jest bardzo pomocny, jeśli jest stosowany odpowiedzialnie. Na przykład, jeśli chcesz (zwłaszcza starszych) użytkowników na ekranie dotykowym, klikając przyciski w pobliżu tekstu etykiety, nie chcesz, aby zaznaczali tekst etykiety zamiast klikać przycisk.
phihag
14
Co masz na myśli mówiąc „domyślnie”? To ustawienie jest włączone tylko wtedy, gdy specjalnie je włącza strona internetowa, co nie brzmi dla mnie jak „domyślnie”. Zawsze będą funkcje, które mogą być niewłaściwie wykorzystywane przez złych projektantów stron internetowych, niewiele można zrobić, aby temu zapobiec bez negatywnego wpływu na tych, którzy mają uzasadniony powód, aby korzystać z tych funkcji ...
Sean Burton
11
@SeanT Znowu, jeśli przeglądarka istnieje, aby obsługiwać osobę przeglądającą strony internetowe, jej zadaniem jest odpowiadanie na to, co serwer sieciowy wysyła, jednak użytkownik tak mówi. Jeśli użytkownik każe wyciszyć stronę, wyłączyć wyskakujące okienka lub skopiować tekst, przeglądarka powinna to zrobić.
Accumumulation
8
Żaden użytkownik przeglądarki nie zadaje sobie trudu skonfigurowania swojej przeglądarki, aby wyraźnie włączyć funkcję taką jak ta, jeśli nie jest włączona domyślnie, jest zasadniczo bezużyteczna i może nie być wcale zaimplementowana. A jeśli sugerujesz, że każda funkcja musi być wyraźnie włączona przez użytkownika, to gdzie narysujesz linię? Czy użytkownik musi włączyć funkcję „obrazy”, aby witryna mogła wyświetlać obrazy? Czy wszystkie przeglądarki muszą być domyślnie Lynxem, dopóki użytkownik nie włączy wszystkich wymaganych funkcji?
Sean Burton
13
@Acccumulation Funkcja wybierania przez użytkownika: brak jest używana w całym miejscu, aby zachować styl strony internetowej, np. Zatrzymać brzydkie niebieskie tło podczas wybierania opcji z rozwijanych list. Po prostu tego nie zauważasz, ponieważ jest poprawnie wdrażany. Problem polega na tym, że został zaimplementowany w sposób restrykcyjny dla użytkownika, a przeglądarka nie ma możliwości rozróżnienia między nimi. Dlatego obwiniaj deweloperów :)
Sean T
11

Jak już wspomniano, ustawienie user-select: nonew CSS strony wyłącza zaznaczanie tekstu na stronie. Najłatwiejszym sposobem na usunięcie tego bloku zaznaczania tekstu jest skrypt użytkownika, taki jak ten, który zastępuje ustawienie:

// ==UserScript==
// @name         Force Select
// @version      1.0
// @description  Stop sites from disabling selection of text
// @author       You
// @match        *://*/*
// @grant        none
// ==/UserScript==

(function() {
  'use strict';

  let style = document.createElement('style');
  style.innerHTML = '*{ user-select: auto !important; }';

  document.body.appendChild(style);
})();

Uwaga: będzie to dotyczyć każdej strony, jeśli pozostanie włączone, co może nie być pożądane we wszystkich sytuacjach.

Skrypt można zainstalować i łatwo włączać / wyłączać za pomocą menedżera skryptów użytkownika, takiego jak Violentmonkey , Tampermonkey lub Greasemonkey .

Herohtar
źródło
9
Warto wspomnieć, że możesz potrzebować rozszerzenia, takiego jak „greasemonkey”, aby dodać skrypty użytkownika.
Stilez
1
This will apply to every page if left enabled, which might not be desirable in all situations.Czy nie możesz po prostu zagnieździć funkcji w instrukcji if, która wykonuje skrypt tylko wtedy, gdy adres URL pasuje do określonej witryny lub tablicy witryn?
Hashim,
1
@Hashim To nie jest konieczne; możesz określić strony, których dotyczy, za pomocą jednej lub więcej @matchinstrukcji, ale wymagałoby to modyfikacji skryptu, gdy chcesz, aby dotyczył określonej strony, chyba że odwiedzasz tylko określoną witrynę lub zestaw witryn, które zawsze chcesz modyfikować. Dla przykładu skryptu Zrobiłem to generic stosując *://*/*jako adres URL do meczu, więc będzie stosować wszędzie. Można go włączać i wyłączać z menu menedżera skryptów użytkownika.
Herohtar
10

Otwórz narzędzia programistyczne (F12), przejdź na kartę Elementy i odznacz następujące reguły CSS w treści :

  • wybór użytkownika: brak;
  • webkit-user-select: brak;

Obraz demonstracyjny

JMK
źródło
7

W przeglądarce Firefox istnieje naprawdę prosty sposób:

View > Page Style > No Style

Po niemiecku:

Ansich > Webseiten-Stil > Kein Stil

wprowadź opis zdjęcia tutaj

Świetnie sprawdza się także pobieranie obrazów osadzonych, na których kliknięcie prawym przyciskiem zostało wyłączone.

Eric Duminil
źródło
1
Tak, działa również na IE11.
Marco Demaio
4

Możesz nacisnąć Ctrl+ Pi pobrać potrzebne informacje z podglądu wydruku.

wprowadź opis zdjęcia tutaj

Der Hochstapler
źródło
3

Używam Stylusa ( https://add0n.com/stylus.html ) i stworzyłem styl, który można zastosować do wszystkich stron internetowych, dlatego zapewniam, że wszystko można wybrać:

* {
  -webkit-user-select: auto !important;
  -moz-user-select: inherit  !important;
  -ms-user-select: inherit  !important;
  user-select: auto  !important;
}

Gwiazdka ma zapewnić, że styl zostanie zastosowany nie tylko do określonego elementu css (jak <body>), ale do wszystkich elementów. Napotkałem przypadki, w których blokowanie zaznaczenia zastosowano tylko do tekstu przycisku, więc utworzenie css dla <body>nie pomogłoby.

Wyboru używam do natychmiastowego tłumaczenia na stronach internetowych w języku obcym.

derei
źródło
Poprawiłem formatowanie i widoczność <body>tagu wbudowanego ; patrz superuser.com/help/formatting
Arjan
0

Wolę używać „ bookmarkletów ” niż skryptów użytkownika lub rozszerzeń przeglądarki. Spróbuj użyć jednej z wielu zakładek, aby wyłączyć CSS i pobrać wymagany tekst

Ponieważ może to zepsuć czytelność strony internetowej, czasami otwieram stronę w innej zakładce (kliknij kartę prawym przyciskiem myszy, wybierz Duplikuj) przed usunięciem stylu za pomocą bookmarkletu

Możesz także wypróbować Zakładkę Google Mobilizer, aby wyświetlić tylko tekst stron internetowych

mvark
źródło
0

Jak podają inne odpowiedzi, ma to związek z CSS na treści stron. Chociaż możesz to edytować ręcznie za każdym razem, jeśli często korzystasz z tej witryny, sugeruję, że jeśli używasz Chrome, zainstaluj rozszerzenie Stylish .

Stylowy pozwala tworzyć dodatkowe CSS do zastosowania na stronach. Można go używać w całej sieci. Ma tę zaletę, że automatycznie aplikuje się za każdym razem, gdy odwiedzasz witrynę (więc nie musisz dodawać jej za pomocą narzędzi programistycznych przy każdym ładowaniu strony).

Po zainstalowaniu kliknij ikonę na pasku narzędzi i wybierz „Utwórz nowy styl”. Automatycznie utworzy wpis dla witryny, którą aktualnie odwiedzasz. Następnie możesz dodać dowolny styl CSS do strony. Ale uwaga: niektóre style mogą nie zostać zastąpione (szczególnie jeśli są napisane na samym elemencie, a nie na klasie CSS).

W takim przypadku możesz skorzystać z funkcji importu i dodać poniższy kod, co powinno pozwolić Ci wybrać tekst w witrynie, do której linkujesz.

@-moz-document domain("www.angst-panik-hilfe.de") {
  body {
    -webkit-user-select: auto !important;
    -moz-user-select: inherit  !important;
    -ms-user-select: inherit  !important;
    user-select: auto  !important;
  }
}
Obsidian Phoenix
źródło
Dodanie prefiksów webkit i ms dla czegoś, co będzie działało tylko w Firefox, jest trochę ... zbędne.
Stephan Bijzitter
@StephanBijzitter Prawda, właśnie nadpisałem wszystkie style związane z wyborem użytkownika już na stronie. Ale z drugiej strony oznacza to, że ktoś, kto nie używa Chrome, ale z podobnym rozszerzeniem, może dość łatwo skopiować tę klasę i uzyskać te same korzyści bez pracy - i tak naprawdę nie szkodzi to rozwiązaniu.
Obsidian Phoenix
0

Kilka proponowanych rozwiązań może być specyficznych dla przeglądarki, dlatego warto zasugerować kilka alternatyw:

  1. Użyj broswer, który bardziej cię szanuje.

    za. Emacs ma przeglądarek emacs-w3mi ewwże zawsze pozwalają, aby zaznaczyć tekst.

    b. Inne przeglądarki tekstowe, takie jak lynx, elinksi w3m, mogą pozwalać na zaznaczanie tekstu, ale nawet jeśli nie, jeśli uruchomisz te programy w oknie terminala, możesz zaznaczyć tekst za pomocą myszy. A jeśli używasz tych programów od wewnątrz tmux, możesz użyć tmuxumiejętności kopiowania tekstu nawet bez myszy.

  2. Użyj narzędzia wiersza polecenia, aby pobrać cały adres URL w czytelnym formacie tekstowym.

    za. w3m -dump [your_url] > your_file.txt

    b. lynx -dump [your_url] > your_file.txt. Zwykle wolę ten, ponieważ oznacza on hiperłącza jako czytelne przypisy!

użytkownik1404316
źródło
0

Zainstaluj dodatek „Absolute Enable Right Click & Copy”, który umożliwia wszystko, czego nie mogą uzyskać inne dodatki bez skryptów.

Chris
źródło
0

Wystarczy utworzyć następujący styl css :

html, body {
    user-select: text;
}

Istnieje rozszerzenie o nazwie Stylish, które pozwala zainstalować ten (lub inny) kod css na dowolnej stronie internetowej. Po prostu wpisz powyższy kod css i powiedz, do których stron internetowych chcesz go zastosować, i jesteś gotowy. To rozszerzenie działa w Chrome, Baidu, Firefox i Opera. Jeśli zdarzyło ci się być w IE, nie masz szczęścia. Ale już to wiesz, prawda?

agcala
źródło