SERPINFO
SERPINFO ist der Mechanismus, der es uBlacklist ermöglicht, in Suchmaschinen wie Google, Bing und DuckDuckGo zu funktionieren. Jede SERPINFO-Datei ist eine YAML-Datei, die beschreibt, wie Suchergebnisse auf der Ergebnisseite einer bestimmten Suchmaschine zu finden sind, damit uBlacklist diese blockieren, hervorheben oder mit Schaltflächen versehen kann.
uBlacklist enthält bereits integrierte SERPINFO-Definitionen für die unterstützten Suchmaschinen. Sie können auch von anderen veröffentlichte SERPINFO-Dateien abonnieren oder eigene erstellen, um eine Suchmaschine zu unterstützen, die noch nicht abgedeckt ist.
Die SERPINFO-Einstellungsseite wird über den Menüpunkt Andere Suchmaschinen auf der Einstellungsseite der Erweiterung aufgerufen. Dort können Sie einzelne SERPINFO aktivieren oder deaktivieren, von anderen veröffentlichte SERPINFO abonnieren und unter Meine SERPINFO eigene SERPINFO erstellen.
Dateiformat
SERPINFO-Dateien verwenden das YAML-Format mit der folgenden Struktur:
name: SearchEngineName
version: 1.0.0
homepage: https://example.com/
lastModified: 2023-09-01T00:00:00Z
pages:
- name: PageType
matches:
- https://search.example.com/search?*
results:
- root: .result-selector
url: a.link
props:
title: .title
commonProps:
$site: example
$category: web
Top-Level-Eigenschaften
| Erforderlich | Eigenschaft | Typ | Beschreibung |
|---|---|---|---|
| ✓ | name | string | Name des SERPINFO |
| ✓ | pages | array | Array der Seitendefinitionen |
version | string | Version des SERPINFO | |
description | string | Beschreibung des SERPINFO | |
homepage | string | Homepage-URL des SERPINFO | |
lastModified | string | Letzte Änderungszeit im ISO-Format |
Seitendefinition
Jedes Element im Array pages repräsentiert einen bestimmten Typ der Suchergebnisseite (Web, Bilder, Nachrichten usw.):
| Erforderlich | Eigenschaft | Typ | Beschreibung |
|---|---|---|---|
| ✓ | name | string | Name der Seitendefinition |
| ✓ | matches | array | Array von übereinstimmenden Mustern zum Einbeziehen von Seiten |
| ✓ | results | array | Array der Ergebnisdefinitionen |
excludeMatches | array | Array von übereinstimmenden Mustern zum Ausschließen von Seiten | |
includeRegex | string | Reguläres Ausdrucksmuster zum Einschließen von Seiten | |
excludeRegex | string | Reguläres Ausdrucksmuster zum Ausschließen von Seiten | |
userAgent | string | Kann "any", "desktop" oder "mobile" sein | |
commonProps | object | Allgemeine Eigenschaften, die für alle Ergebnisse auf dieser Seite gelten | |
delay | number or boolean | Verzögerung in Millisekunden nach dem Laden der Seite oder boolescher Wert zum Aktivieren/Deaktivieren der Verzögerung |
Ergebnisdefinition
Jeder Eintrag im Array results definiert, wie Daten aus einem einzelnen Suchergebnis extrahiert werden sollen:
| Erforderlich | Eigenschaft | Typ | Beschreibung |
|---|---|---|---|
| ✓ | root | string or array | Root-Befehl zum Auffinden von Ergebniselementen |
| ✓ | url | string or array | Eigenschaftsbefehl zum Extrahieren der URL aus dem Ergebnis |
name | string | Name der Ergebnisdefinition | |
props | object | Schlüssel-Wert-Paare, bei denen die Schlüssel Eigenschaftsnamen und die Werte Eigenschaftsbefehle für die Extraktion sind | |
button | array | Schaltflächenbefehl zum Hinzufügen von Block-Schaltflächen zu den Ergebnissen | |
preserveSpace | boolean | Legt fest, ob der Layoutbereich blockierter Ergebnisse beibehalten werden soll, um Layoutverschiebungen zu verhindern |
Befehle
SERPINFO unterstützt verschiedene Befehle für komplexe Extraktionsszenarien, die in drei Kategorien unterteilt sind:
Root-Befehle
<css-selector>oder[selector, <css-selector>]: Elemente finden, die dem CSS-Selektor entsprechen[upward, <level>, <root-command>]: Navigieren Sie in der DOM-Struktur um<level>Schritte von jedem Element nach oben, das mit dem Root-Befehl gefunden wurde
Elementbefehle
<css-selector>oder[selector, <css-selector>, <element-command>?]: Element über CSS-Selektor abrufen[upward, <level>, <element-command>?]: Navigieren Sie in der DOM-Struktur um<level>Schritte nach oben
Hinweis: Wenn <element-command> in einem der oben genannten Befehle weggelassen wird, wird implizit das aktuelle Hauptelement verwendet.
Eigenschaftsbefehle
<css-selector>: Die EigenschafttextContent(Standard) oder das Attributhref(bei Verwendung in der URL-Extraktion) des Elements abrufen, das dem CSS-Selektor entspricht[attribute, <name>, <element-command>?]: Attributwert abrufen[property, <name>, <element-command>?]: Eigenschaftswert abrufen[const, <value>]: Eine konstante Zeichenkette zurückgeben[domainToURL, <property-command>]: Domain in eine URL konvertieren[regexInclude, <pattern>, <property-command>]: Nur einschließen, wenn es mit dem regulären Ausdruck übereinstimmt[regexExclude, <pattern>, <property-command>]: Ausschließen, wenn es mit dem regulären Ausdruck übereinstimmt[regexSubstitute, <pattern>, <replacement>, <property-command>]: Durch regulären Ausdruck ersetzen[or, [<property-command>*], <element-command>?]: Mehrere Befehle nacheinander ausprobieren
Hinweis: Wenn <element-command> in einem der oben genannten Befehle weggelassen wird, wird implizit das aktuelle Hauptelement verwendet.
Schaltflächenbefehle
-
[icon, <options>?, <element-command>?]: Eine Symbolschaltfläche mit einem bestimmten Stil hinzufügen. Die Optionen umfassen:style: Inline-Stil (z. B."top: 16px; right: 32px; --ub-icon-size: 16px;")
-
[text, <options>?, <element-command>?]: Eine Text-Schaltfläche mit einer bestimmten Position und einem bestimmten Stil hinzufügen. Die Optionen umfassen:position:"beforebegin","afterbegin","beforeend"oder"afterend"(Standard:"beforeend")style: Inline-Stil (z. B."color: var(--fg-color); font-size: 14px;")
-
[inset, <options>?, <element-command>?]: Eine Schaltfläche an einer bestimmten Position innerhalb des Elements hinzufügen. Die Optionen umfassen:top: CSS-Länge oder -Prozentsatzright: CSS-Länge oder -Prozentsatzbottom: CSS-Länge oder -Prozentsatzleft: CSS-Länge oder -ProzentsatzzIndex: z-Index-Wert (Standard: 1)
Hinweis: Wenn <element-command> weggelassen wird, wird das aktuelle Hauptelement verwendet.
Beispiel
Hier ist ein Beispiel für Bing-Bildsuche:
name: Bing
version: 0.1.0
homepage: https://github.com/ublacklist/builtin#readme
license: MIT
lastModified: 2023-04-05T11:11:20Z
pages:
- name: Images (desktop)
matches:
- https://www.bing.com/images/search?*
userAgent: desktop
results:
- root: [upward, 1, ".iuscp"]
url:
- regexSubstitute
- '"purl":"([^"]+)'
- "\\1"
- [attribute, "m", ".iusc"]
props:
title: [attribute, "title", "li > a"]
button: [inset, { top: "32px", right: 0 }, ".iuscp"]
commonProps:
$site: bing
$category: images
Abonnement
Ihre SERPINFO veröffentlichen
Sie können Ihre SERPINFO-Definitionen mit anderen teilen, indem Sie Ihre YAML-Datei hosten und einen Abonnement-Link bereitstellen.
- Erstellen Sie Ihre SERPINFO-YAML-Datei gemäß dem oben beschriebenen Format
- Hosten Sie die Datei unter einer öffentlich zugänglichen URL (z. B. GitHub, Ihre eigene Website)
- Teilen Sie den Abonnement-Link mit Benutzern in diesem Format:
https://ublacklist.github.io/serpinfo/subscribe?url=<url-encoded-url>
<url-encoded-url> ist die URL Ihrer gehosteten YAML-Datei, die mit URL-Codierung codiert wurde.
SERPINFO abonnieren
So abonnieren Sie eine SERPINFO-Definition:
- Klicken Sie auf einen vom Herausgeber bereitgestellten Abonnement-Link
- Die Erweiterung öffnet ihre Optionsseite und fordert Sie auf, das Abonnement hinzuzufügen
- Bestätigen Sie, dass Sie SERPINFO zu Ihrer Erweiterung hinzufügen möchten
Um Abonnement-Links zu verwenden, müssen Sie diese manuell aktivieren. Gehen Sie zur Optionsseite der Erweiterung und aktivieren Sie "SERPINFO-Abonnement-Links aktivieren".