Wie blockieren Websites die Auswahl von Text und wie hebe ich die Blockierung auf?

74

Es gibt eine Website ( Beispiel ), die die Auswahl von Text blockiert. Außerdem blockiert es Ctrl+ A, um alles auszuwählen, es gibt auch kein "Kopieren" im Popup-Menü.

Was ich ausprobiert habe:

Einige Websites verwenden JavaScript, um die Auswahl zu blockieren. Also habe ich alle JavaScript-Quellen im No-Script-Addon in Firefox deaktiviert. Ich habe die gleiche Site in Google Chrome mit dem Script Safe-Addon ausprobiert. Es wurde sichergestellt, dass alles blockiert ist und immer noch kein Text ausgewählt werden kann. Mauszeiger bleibt auch auf der gesamten Site ein Pfeil und kein Textcursor.

Wird verwendet about:config, um JavaScript in Firefox vollständig zu deaktivieren. Immer noch keine Wirkung.

Ich habe gelesen, dass einige Sites DIVs mit dem Block style display: verwenden, also habe ich Inspect verwendet, um die Stile der Site zu untersuchen. Es gibt keine einzige Erwähnung von "block" auf der gesamten Website, weder in eingebettetem CSS noch in object style = -attributes.

Der Text ist kein Bild oder Flash oder ein HTML5-Canvas-Effekt. Alles befindet sich innerhalb der Tags DIV und P, es wurde jedoch kein Stil gefunden, der die Textauswahl blockieren könnte.

Wie kann die Website noch eine Auswahl von Text blockieren? Ganz zu schweigen davon, warum Browser solche Verhaltensweisen überhaupt unterstützen. Ich möchte nur ein ausgewähltes Wort oder einen ausgewählten Satz verwenden und mit der rechten Maustaste bei Google danach suchen. Es ist ziemlich ärgerlich, wenn eine Website solche Dinge tut und mich dazu zwingt, technische Begriffe und Namen von Hand in Google einzugeben. Es stört meinen Arbeitsablauf.

user6329530
quelle
8
„Wie Websites Textblock - Kennzeichnung“ - Sie setzen style.userSelectauf none.
2
@ Xen2050 Meistens ist mir das Kopieren von Text egal. Ich mag die Möglichkeit, Phrasen und Begriffe mit nur einem Mausklick auf Google zu markieren und danach zu suchen (Doppelklick auf ein Wort, Rechtsklick auf "Google durchsuchen ..."). Ich könnte in die Quelle gehen (wenn es überhaupt eine saubere Quelle ist) und nach dem Wort suchen, es kopieren, in Google einfügen, aber gut ... wie gesagt, das ist nur ärgerlich. Jemand, der Ihren Website-Text kopieren möchte, kann dies auf jeden Fall tun, aber jemand, der nur einen komfortablen Workflow wünscht, wird behindert.
user6329530
122
Können wir uns einen Moment Zeit nehmen und mit all den wahnhaften Webentwicklern sympathisieren, die dies für eine gute Sicherheitsmaßnahme halten?
MCMastery
3
Ich weiß nicht mehr, wie weit die Praxis fortgeschritten ist, aber ich erinnere mich, dass ich ein paar Male auf ein Einzelpixel-Bild gestreckt habe, um die gesamte Seite zu bedecken und das Kopieren von Text usw. zu verhindern. Einhorn-Sterne zusammen mit blinkendem Text überall ...
RIanGillis
27
@MCMastery Oder schlimmer noch, die Entwickler, die wissen, dass es schrecklich ist, aber ihnen wird gesagt, dass sie es trotzdem tun müssen. Die meiste Zeit machen sie sich Sorgen um Leute, die Inhalte stehlen. Dann haben Sie Sites wie SO, die die ganze Zeit über gestohlen werden ... aber kommerziell rentabel. Es hat sich herausgestellt, dass die Verfremdung Ihrer Nutzerbasis für das Geschäft schlecht ist. Wer hätte das gedacht?!
corsiKa

Antworten:

81

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

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

Dieser Effekt gilt also für das gesamte BODY-Tag.

Dokumentation zu diesem CSS: Mozilla Developer Site: Benutzerauswahl .

Sie können dies möglicherweise überschreiben, indem Sie den Stil in den Entwicklertools entfernen (drücken Sie F12in Firefox oder Chrome). Möglicherweise können Sie sogar ein JavaScript-Applet erstellen, mit dem Sie den Stil nach dem Einrichten mit weniger Aufwand entfernen können Ihr Teil (was möglicherweise Zeit spart, wenn Sie die Site mehrmals besuchen möchten).

Ich möchte auch diesen Hinweis hinzufügen: Dies ist möglicherweise nicht der einzige Weg, um zumindest einen Teil dieses Effekts zu erzielen. Ein anderer möglicher Weg könnte sein, eine unsichtbare DIVAbdeckung zu haben DIV, die den Text enthält. Auf diese Weise würde sich der Mauszeiger nicht in einen I-Strahl (Textzeiger) verwandeln, da der Cursor auf dem Inhalt des obersten Elements basiert DIV. ( Ctrl- Awürde aber wahrscheinlich diesen Text abdecken.)

Es ist ziemlich ärgerlich, wenn eine Website solche Dinge tut und mich dazu zwingt, technische Begriffe und Namen von Hand in Google einzugeben. Es stört meinen Arbeitsablauf.

Amen! Nachdem ich das gesehen habe, bin ich enttäuscht über die Existenz eines solchen CSS-Stils, der von den großen Browsern implementiert wird. Solche Dinge sind in der Tat ziemlich nervig!

TOOGAM
quelle
61
Der user-selectCSS-Stil ist ziemlich hilfreich, wenn er verantwortungsbewusst angewendet wird. Wenn Sie beispielsweise möchten, dass (insbesondere ältere) Benutzer auf einem Touchscreen auf Schaltflächen in der Nähe von Beschriftungstext klicken, möchten Sie nicht, dass sie den Beschriftungstext markieren, anstatt auf die Schaltfläche zu klicken.
Phihag
14
Was meinst du mit "standardmäßig"? Diese Einstellung ist nur aktiviert, wenn die Website dies ausdrücklich aktiviert, was für mich nicht nach "Standard" klingt. Es wird immer Funktionen geben, die von schlechten Webdesignern missbraucht werden können. Es gibt nicht viel, was Sie tun können, um dies zu verhindern, ohne diejenigen zu beeinträchtigen, die einen legitimen Grund haben, diese Funktionen zu verwenden ...
Sean Burton
11
@SeanT Wenn der Browser vorhanden ist, um die Person zu bedienen, die Webseiten ansieht, besteht seine Aufgabe darin, auf das zu antworten, was der Webserver sendet, wie der Benutzer es wünscht. Wenn der Benutzer anweist, die Seite stumm zu schalten, Popups zu verbieten oder Text zu kopieren, sollte dies vom Browser durchgeführt werden.
Akkumulation
8
Kein Browserbenutzer wird sich die Mühe machen, seinen Browser so zu konfigurieren, dass eine Funktion wie diese explizit aktiviert wird. Wenn sie nicht standardmäßig aktiviert ist, ist sie im Wesentlichen nutzlos und wird möglicherweise auch gar nicht implementiert. Und wenn Sie vorschlagen, dass jede Funktion vom Benutzer explizit aktiviert werden muss, wo ziehen Sie dann die Linie? Muss der Benutzer die Funktion "Bilder" aktivieren, bevor eine Website Bilder anzeigen kann? Müssen alle Browser standardmäßig Lynx sein, bis der Benutzer alle gewünschten Funktionen aktiviert hat?
Sean Burton
13
@Akkumulation Die Funktion Benutzerauswahl: Keine wird überall verwendet, um den Stil einer Webseite beizubehalten, z. B. um einen unschönen blauen Hintergrund zu stoppen, wenn Sie eine Option aus Dropdown-Listen auswählen. Man merkt es einfach nicht, weil es korrekt implementiert wird. Das Problem hierbei ist, dass es für den Benutzer restriktiv implementiert wurde und ein Browser keine Möglichkeit hat, zwischen beiden zu unterscheiden. Daher beschuldigen die Entwickler :)
Sean T
11

Wie bereits erwähnt, user-select: nonedeaktiviert die Einstellung im CSS der Seite die Auswahl von Text auf einer Seite. Der einfachste Weg, diesen Textauswahlblock zu entfernen, ist ein Benutzerskript wie das folgende, das die Einstellung überschreibt:

// ==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);
})();

Hinweis: Dies gilt für jede Seite, wenn diese aktiviert bleibt. Dies ist möglicherweise nicht in allen Situationen wünschenswert.

Das Skript kann mit einem Benutzerskript-Manager wie Violentmonkey , Tampermonkey oder Greasemonkey installiert und problemlos ein- und ausgeschaltet werden .

Herohtar
quelle
9
Erwähnenswert ist, dass Sie möglicherweise eine Erweiterung wie 'greasemonkey' benötigen, um Benutzerskripte hinzuzufügen.
Stilez
1
This will apply to every page if left enabled, which might not be desirable in all situations.Könnten Sie die Funktion nicht einfach in eine if-Anweisung einbetten, die das Skript nur ausführt, wenn die URL mit einer bestimmten Site oder einem Array von Sites übereinstimmt?
Hashim
1
@Hashim Das ist nicht nötig; Sie können mit einer oder mehreren @matchAnweisungen angeben, auf welche Seiten sie angewendet werden sollen. Dies erfordert jedoch eine Änderung des Skripts, wenn es auf eine bestimmte Seite angewendet werden soll, es sei denn, Sie besuchen nur eine bestimmte Site oder eine Gruppe von Sites, die Sie immer ändern möchten. Für das Beispielskript habe ich es generisch gemacht, indem ich es *://*/*als übereinstimmende URL verwendet habe, damit es überall angewendet wird. Sie kann im Menü des Benutzerskript-Managers ein- und ausgeschaltet werden.
Herohtar
10

Öffnen Sie die Entwicklertools (F12), wechseln Sie zur Registerkarte Elemente und deaktivieren Sie die folgenden CSS-Regeln unter body :

  • Benutzerauswahl: keine;
  • Webkit-Benutzerauswahl: keine;

Demo Image

JMK
quelle
7

Mit Firefox gibt es einen ganz einfachen Weg:

View > Page Style > No Style

Auf Deutsch:

Ansich > Webseiten-Stil > Kein Stil

Bildbeschreibung hier eingeben

Es funktioniert auch hervorragend, eingebettete Bilder herunterzuladen, auf die der Rechtsklick deaktiviert wurde.

Eric Duminil
quelle
1
Ja, es funktioniert auch mit IE11.
Marco Demaio
4

Sie können Ctrl+ Pdrücken und in der Druckvorschau auswählen, was Sie benötigen.

Bildbeschreibung hier eingeben

Der Hochstapler
quelle
3

Ich verwende Stylus ( https://add0n.com/stylus.html ) und habe einen Stil erstellt, der auf alle Websites angewendet werden kann. Auf diese Weise stelle ich sicher, dass alles auswählbar ist:

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

Das Sternchen soll sicherstellen, dass der Stil nicht nur auf ein bestimmtes CSS-Element (wie <body>), sondern auf alle Elemente angewendet wird . Ich bin auf Fälle gestoßen, in denen die Auswahlblockierung nur auf einen Schaltflächentext angewendet wurde, sodass das Erstellen einer CSS für <body>nicht hilfreich war.

Ich verwende die Auswahl für die sofortige Übersetzung auf fremdsprachigen Websites.

derei
quelle
Ich habe die Formatierung und die Sichtbarkeit des Inline- <body>Tags korrigiert. Siehe superuser.com/help/formatting
Arjan
0

Ich bevorzuge die Verwendung von " Lesezeichen " gegenüber Benutzerskripten oder Browsererweiterungen. Versuchen Sie, eines der vielen Bookmarklets zu verwenden, um CSS zu deaktivieren und den erforderlichen Text zu erhalten

Da dies die Lesbarkeit der Webseite beeinträchtigen kann, öffne ich die Seite manchmal auf einer anderen Registerkarte (klicken Sie mit der rechten Maustaste auf die Registerkarte, wählen Sie "Duplizieren"), bevor Sie das Styling mit dem Lesezeichen entfernen

Sie können auch das Google Mobilizer-Lesezeichen verwenden, um nur den Text von Webseiten anzuzeigen

mvark
quelle
0

Wie bereits in anderen Antworten erwähnt, hat dies mit dem CSS auf dem Hauptteil der Seiten zu tun. Sie können dies zwar jedes Mal von Hand bearbeiten, aber wenn Sie diese Site häufig verwenden, würde ich vorschlagen, dass Sie die Stylish- Erweiterung installieren, wenn Sie Chrome verwenden .

Mit Stylish können Sie zusätzliches CSS erstellen, das auf Seiten angewendet werden soll. Es kann im gesamten Web verwendet werden. Es hat den Vorteil, dass es automatisch angewendet wird, wenn Sie die Website besuchen (damit Sie es nicht bei jedem Laden der Seite über die Entwickler-Tools hinzufügen müssen).

Klicken Sie nach der Installation auf das Symbol in der Symbolleiste und wählen Sie "Neuen Stil erstellen". Es wird automatisch der Eintrag für die Website erstellt, die Sie gerade besuchen. Anschließend können Sie der Seite ein beliebiges CSS hinzufügen. Aber seien Sie gewarnt: Einige Stile können möglicherweise nicht überschrieben werden (insbesondere, wenn sie auf dem Element selbst und nicht auf einer CSS-Klasse geschrieben sind).

In diesem Fall können Sie die Importfunktion verwenden und den folgenden Code hinzufügen. Auf diese Weise können Sie den Text auf der Website auswählen, mit der Sie verlinkt sind.

@-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
quelle
Das Hinzufügen von Webkits und MS-Präfixen für etwas, das nur auf Firefox ausgeführt wird, ist ein bisschen ... überflüssig.
Stephan Bijzitter
@StephanBijzitter Stimmt, ich habe gerade alle Stile für die Benutzerauswahl überschrieben, die sich bereits auf der Seite befinden. Andererseits bedeutet dies, dass jemand, der kein Chrome verwendet, aber eine ähnliche Erweiterung hat, diese Klasse ziemlich leicht kopieren und denselben Nutzen ohne Arbeit erzielen kann - und das schadet der Lösung nicht wirklich.
Obsidian Phoenix
0

Einige der vorgeschlagenen Lösungen sind möglicherweise browserspezifisch. Es empfiehlt sich daher, einige Alternativen vorzuschlagen:

  1. Verwenden Sie einen Broswer, der Sie mehr respektiert.

    ein. Emacs hat Browser emacs-w3mund ewwdas wird immer erlauben einen Text zu markieren.

    b. Andere textbasierten Browser wie lynx, elinksund w3mkönnten damit ein Text markieren, aber selbst wenn nicht, wenn diese Programme in einem Terminal - Fenstern ausgeführt wird , kann man wählen Text jemandes Maus. Und wenn man diese Programme von innen benutzt tmux, kann man tmuxauch ohne Maus Text kopieren.

  2. Verwenden Sie ein Befehlszeilentool, um die gesamte URL in einem lesbaren Textformat herunterzuladen.

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

    b. lynx -dump [your_url] > your_file.txt. Normalerweise bevorzuge ich diesen, weil er Hyperlinks als lesbare Fußnoten kennzeichnet!

user1404316
quelle
0

Installieren Sie das AddOn "Absolute Enable Right Click & Copy", das alles aktiviert, was die anderen No Script AddOns nicht können.

Chris
quelle
0

Erstellen Sie einfach den folgenden CSS-Stil :

html, body {
    user-select: text;
}

Es gibt eine Erweiterung namens Stylish , mit der Sie diesen (oder einen anderen) CSS-Code auf einer Website Ihrer Wahl installieren können. Geben Sie einfach den obigen CSS-Code ein und sagen Sie, auf welche Website (n) Sie ihn anwenden möchten und Sie können loslegen. Diese Erweiterung funktioniert unter Chrome, Baidu, Firefox und Opera. Wenn Sie zufällig im IE sind, haben Sie Pech. Aber das weißt du doch schon, oder?

Agcala
quelle