Skip to content

Latest commit

 

History

History
507 lines (371 loc) · 23.5 KB

File metadata and controls

507 lines (371 loc) · 23.5 KB
title Rozšíření
sidebar_position 6

Uživatelské skripty

Uživatelské skripty (říkáme jim také "rozšíření") jsou de facto miniprogramy napsané v jazyce JavaScript. Upravují nebo rozšiřují funkce jedné nebo více webových stránek. Mnoho uživatelů AdGuardu již možná zná uživatelské skripty jako AdGuard asistent, Blokátor vyskakovacích oken a AdGuard Extra.

:::note Podporované aplikace

AdGuard může výrazně rozšířit funkčnost webových stránek tím, že funguje jako správce uživatelských skriptů. V našich třech produktech můžete přidávat vlastní skripty nebo spravovat ty stávající: AdGuard pro Windows, AdGuard pro Android a AdGuard pro macOS.

:::

Doporučené skripty AdGuardu

Tyto uživatelské skripty pocházejí přímo od vývojářů AdGuardu a můžeme zaručit, že jsou účinné a bezpečné. Některé uživatelské skripty vyvinuté jinými uživateli, které považujeme za dobré a spolehlivé, najdete v další další sekci. Níže najdete také některé z populárních webových stránek se skripty, ale nezapomeňte, že kdykoli stahujete uživatelský skript z neznámého zdroje, vystavujete se určitému riziku, protože některé skripty mohou být pro váš počítač škodlivé.

AdGuard Extra

Rozšíření, které blokuje reklamu v obtížných případech, kdy běžný přístup založený na filtru nestačí. AdGuard Extra je předinstalován v samostatných aplikacích AdGuard, s výjimkou aplikace pro iOS, takže pro jeho aktivaci nemusíte nic dělat. Pokud jej však chcete používat společně s Rozšířením prohlížeče AdGuard nebo jiným blokátorem reklam, musíte použít další rozšíření. Více informací o tomto uživatelském skriptu a jeho instalaci najdete na GitHub.

AdGuard Extra

AdGuard blokátor vyskakovacích oken

Název mluví sám za sebe: blokuje vyskakovací okna — jeden z nejotravnějších typů reklam na webových stránkách. Více informací o tomto uživatelském skriptu, jeho klíčových funkcích a instalaci najdete na GitHubu.

AdGuard Popup Blocker

AdGuard asistent (starší verze)

Toto vlastní rozšíření je určeno k ovládání filtrování přímo ze stránky prohlížeče (ruční blokování, vyloučení webu atd.).

:::note

Tato verze Asistenta je starší a nemá smysl ji používat v nových systémech, protože byla nahrazena plnohodnotným Asistentem prohlížeče. Starší asistent však může být užitečný, pokud pro váš prohlížeč není k dispozici asistent prohlížeče. Pokud je to váš případ, můžete se dozvědět, jak nainstalovat Asistenta AdGuard na GitHubu.

:::

Zakázat AMP

Skript, který je předinstalován pouze v aplikaci AdGuard pro Android. Zakáže AMP (Accelerated Mobile Pages) na stránce s výsledky vyhledávání Google. Více informací o tomto uživatelském skriptu a jeho instalaci najdete na GitHubu.

Disable AMP

Nejlepší výběry mimo AdGuard{#top-picks}

Tyto uživatelské skripty nebyly vyvinuty AdGuardem, a proto nemůžeme poskytnout 100% záruku, že jsou bezpečné a/nebo vždy fungují. Podle našich zkušeností si však doporučení zaslouží, protože všechny si svou dobrou pověst zaslouží.

Don't track me Google

Tento skript odstraní z odkazů ve výsledcích vyhledávání Google funkci sledování. Urychluje načítání výsledků vyhledávání a umožňuje kliknutím pravým tlačítkem myši nebo klepnutím zkopírovat adresu URL odkazu.

Jeho zdrojový kód je k dispozici na GitHubu. Tento uživatelský skript lze stáhnout ze stránek GreasyFork a nainstalovat do libovolné aplikace založené na AdGuard CoreLibs.

SponsorBlock

SponsorBlock přeskakuje sponzorované segmenty ve videích na YouTube. Šetří čas tím, že přechází přímo k hlavnímu obsahu a odstraňuje přerušení způsobená reklamami a vlastní propagací.

:::info

Tento uživatelský skript běží výhradně v našich desktopových aplikacích AdGuard pro Windows a AdGuard pro Mac.

:::

Vyzkoušejte to:

  1. Přejděte na https://mchangrh.github.io/sb.js/.
  2. Klikněte na Generovat odkaz.
  3. Zkopírujte zobrazený odkaz.
  4. Otevřete AdGuard a přejděte do Rozšíření → Přidat rozšíření → Importovat ze souboru nebo URL.
  5. Vložte zkopírovaný odkaz a potvrďte.

tinyShield

Uživatelský skript pro lidi, kteří navštěvují korejské a některé mezinárodní webové stránky. Uživatelský skript tinyShield blokuje Ad-Shield a anti-adblock. Tento uživatelský skript lze nainstalovat v AdGuard CoreLibs, Violentmonkey, Tampermonkey a quoid/userscripts. Více informací o skriptu microShield a jeho instalaci najdete na GitHubu.

Kde můžete získat další uživatelské skripty?{#more-userscripts}

Protože uživatelské skripty vytvářejí především nadšenci, měli byste být při jejich instalaci opatrní. Každý skript z neznámého zdroje představuje potenciální riziko. Přesto existuje celá řada zajímavých skriptů, které při pečlivé a zodpovědné instalaci mohou skutečně zpříjemnit používání některých webových stránek.

Zde popíšeme některé z nejoblíbenějších katalogů uživatelských skriptů.

Userscript.Zone

Userscript.Zone je webová stránka, která umožňuje vyhledávat uživatelské skripty zadáním odpovídající adresy URL nebo domény. Webové stránky se snadno používají a mají vysokou úroveň důvěryhodnosti, protože se na nich zobrazují pouze skripty z moderovaných stránek.

Greasy Fork

Greasy Fork je katalog uživatelských skriptů tvůrců Stylish. Skripty v tomto katalogu jsou moderovany, takže jejich důvěryhodnost je mnohem vyšší.

OpenUserJS.org

OpenUserJS.org je open-source katalog uživatelských skriptů napsaný v nodeJS. Není moderován, takže si dávejte pozor na podezřelé skripty.

Komunita

Pokud se vám líbí myšlenka přizpůsobení prohlížeče pomocí uživatelských skriptů a máte dotazy, můžete je položit na jedné z těchto webových stránek:

Vývoj

Žádost o licenci

Pokud vyvíjíte vlastní uživatelský skript a chcete si vyzkoušet, jak funguje s AdGuardem, můžete požádat o licenci vyplněním formuláře.

Kompatibilita

Blokování metadat
Podporované vlastnosti
Nepodporované vlastnosti

Tyto vlastnosti bude AdGuard jednoduše ignorovat.

Podporované funkce GM

AdGuard podporuje jak staré funkce GM_, tak nové rozhraní GM4 API, které používá objekt GM.

:::note

Všechny uvedené staré funkce Greasemonkey jsou zastaralé, ale stále podporované.

:::

Další informace o Greasemonkey API najdete v jeho příručce.

Příklad

// ==UserScript==
// @name            Name as shown to the user when locale is english or unknown
// @name:ru         Name as shown to the user when locale is russian
// @description     Description as shown to the user when locale is english or unknown
// @description:ru  Description as shown to the user when locale is russian
// @icon            https://myhomepage.com/myuserscript.png
// @version         1.0.0.0
// @downloadURL     https://dl.myhomepage.org/myuserscript.user.js
// @updateURL       https://dl.myhomepage.org/myuserscript.meta.js
// @homepageURL     https://myhomepage.com/myuserscript
// @include         *
// @exclude         *://website.com/*
// @resource        https://myhomepage.com/myuserscript.css
// @require         https://myhomepage.com/mylibrary.js
// @grant           property:settings
// @grant           GM_getValue
// @grant           GM_setValue
// @grant           GM_deleteValue
// @grant           GM_listValues
// @grant           GM_getResourceText
// @grant           GM_getResourceURL
// @grant           GM_addStyle
// @grant           GM_log
// @grant           GM_setClipboard
// @grant           GM_xmlhttpRequest
// @grant           unsafeWindow
// @grant           GM_info
// @grant           GM_openInTab
// @grant           GM_registerMenuCommand
// @grant           GM_addElement
// @grant           window.onurlchange
// @run-at          document-start
// ==/UserScript==
!function(){(
    console.log("I am loaded!");
)}();

Důvěryhodné typy API

AdGuard poskytuje instanci třídu PolicyApi, která umožňuje spravovat důvěryhodné typy v uživatelských skriptech.

K instanci této třídy můžete přistupovat pomocí proměnné ADG_policyApi v uživatelském skriptu.

Vlastnosti
  • name: string — název zásady (výchozí je "AGPolicy").
  • isSupported: boolean — příznak určující, zda je rozhraní API důvěryhodných typů podporováno aktuálním prohlížečem.
Metody s vícenásobným plněním
Další typy
/**
 * Enum representation of the return values of the `getAttributeType` and
 * `getPropertyType` methods of the native Trusted Types API.
 *
 * @see {@link https://developer.mozilla.org/en-US/docs/Web/API/TrustedTypePolicyFactory/getAttributeType}
 * @see {@link https://developer.mozilla.org/en-US/docs/Web/API/TrustedTypePolicyFactory/getPropertyType}
 */
enum TrustedType {
    HTML = 'TrustedHTML',
    Script = 'TrustedScript',
    ScriptURL = 'TrustedScriptURL',
}

// You can access it like that inside of userscript
ADG_TrustedType.HTML // "TrustedHTML"

/**
 * Isomorphic trusted value type. If a browser supports the Trusted Types API, it will be one of the enum Trusted Types
 * (`TrustedHTML`, `TrustedScript` or `TrustedScriptURL`); otherwise, it will be regular `string`.
 *
 * @see {@link https://developer.mozilla.org/en-US/docs/Web/API/TrustedHTML}
 * @see {@link https://developer.mozilla.org/en-US/docs/Web/API/TrustedScript}
 * @see {@link https://developer.mozilla.org/en-US/docs/Web/API/TrustedScriptURL}
 */
type TrustedValue = string | TrustedHTML | TrustedScript | TrustedScriptURL;
Další metody
/**
 * Creates a Trusted Type depending on `type`:
 * - `TrustedHTML`
 * - `TrustedScript`
 * - `TrustedScriptURL`
 * - or returns `value` if none of them is applicable.
 *
 * @param type          Trusted Type.
 * @param value         Value from which a Trusted Type is created.
 * @param createArgs    Additional arguments to be passed to the function represented by `TrustedTypePolicy`.
 * @returns             Created value.
 */
function create(
    type: TrustedType,
    value: string,
    ...createArgs: unknown[]
): TrustedValue


// Example: Creates TrustedHTML
const trustedHTML = ADG_policyApi.create(ADG_TrustedType.HTML, '<div></div>');

/**
 * Converts `value` of `attribute` into one of the Trusted Types:
 * - `TrustedHTML`
 * - `TrustedScript`
 * - `TrustedScriptURL`
 * - or returns `value` if none of them is applicable.
 *
 * @param tagName       Name of an HTML tag.
 * @param attribute     Attribute.
 * @param value         Value of an attribute to be converted.
 * @param elementNS     Element namespace. If empty, defaults to the HTML namespace.
 * @param attrNS        Attribute namespace. If empty, defaults to null.
 * @param createArgs    Additional arguments to be passed to the function represented by `TrustedTypePolicy`.
 * @returns             Converted value.
 */
function convertAttributeToTrusted(
    tagName: string,
    attribute: string,
    value: string,
    elementNS?: string,
    attrNS?: string,
    ...createArgs: unknown[]
): TrustedValue

// Example: Converts to TrustedScriptURL
const trustedScriptURL = ADG_policyApi.convertAttributeToTrusted("script", "src", 'SOME_URL');
scriptElement.setAttribute("src", trustedScriptURL);

/**
 * Converts `value` of `property` into one of the Trusted Types:
 * - `TrustedHTML`
 * - `TrustedScript`
 * - `TrustedScriptURL`
 * - or returns `value` if none of them is applicable.
 *
 * @param tagName       Name of an HTML tag.
 * @param property      Property.
 * @param value         Value of a property to be converted.
 * @param elementNS     Element namespace. If empty, defaults to the HTML namespace.
 * @param createArgs    Additional arguments to be passed to the function represented by `TrustedTypePolicy`.
 * @returns             Converted value.
 */
function convertPropertyToTrusted(
    tagName: string,
    property: string,
    value: string,
    elementNS?: string,
    ...createArgs: unknown[]
): TrustedValue

// Example: Converts to TrustedHTML
divElement.innerHTML = ADG_policyApi.convertPropertyToTrusted("div", "innerHTML", "<div></div>");

Shodné stránky SPA

:::info Kompatibilita

Tato část platí pouze pro AdGuard pro Windows, AdGuard pro Mac, AdGuard pro Android a Adguardem pro Linux s CoreLibs v1.19 nebo novější.

:::

Mnoho moderních webových stránek, například YouTube, využívá možnosti Single Page Application (SPA). Na rozdíl od tradičních webových aplikací se stránka při přecházení mezi stránkami znovu nenačítá. Místo toho se obsah aktualizuje dynamicky pomocí JavaScriptu, což umožňuje plynulejší uživatelské prostředí.

Na takových webových stránkách je uživatelský skript vyvolán pouze jednou, když jsou splněny direktivy @match nebo @include (pokud není splněna direktiva @exclude). Vzhledem k povaze SPA nelze uživatelský skript znovu vyvolat při následných změnách stránky, protože globální kontext JavaScriptu zůstává stejný. Pro řešení tohoto problému mohou uživatelské skripty použít direktivu @grant window.onurlchange.

// ==UserScript==
// @name SPA
// @namespace spa
// @version 1.0.0
// @match https://*/*
// @grant window.onurlchange
// @run-at document-start
// ==/UserScript==

// via window.onurlchange
window.onurlchange = (event) => {
    console.log('URL changed to:', event.url);
};

// via window.addEventListener('urlchange')
window.addEventListener('urlchange', (event) => {
    console.log('URL changed to:', event.url);
});

To umožní uživatelským skriptům naslouchat změnám adresy URL a podle toho je zpracovávat.

:::note

Událost urlchange se spouští pouze při úplných změnách adresy URL, například při změně cesty nebo dotazu, nikoli však při změnách fragmentů (hash). Příklady:

  • Navigace z https://example.com/page1 na https://example.com/page2 vyvolá událost.
  • Navigace z https://example.com/page1?query=1 na https://example.com/page1?query=2 vyvolá událost.
  • Navigace z https://example.com/page1#section1 na https://example.com/page1#section2 NEVYVOLÁ událost.

:::

:::note

API window.onurlchange a window.addEventListener('urlchange', ...) jsou nestandardní. Chcete-li je použít, musíte je explicitně přidělit ve svém uživatelském skriptu pomocí příkazu @grant window.onurlchange.

:::

Pokud webová stránka používá směrování hash, mohou uživatelské skripty používat nativní událost DOM hashchange:

// ==UserScript==
// @name SPA
// @namespace spa
// @version 1.0.0
// @match https://*/*
// @run-at document-start
// ==/UserScript==

// via window.onhashchange
window.onhashchange = (event) => {
    console.log(`Hash changed from "${event.oldURL}" to "${event.newURL}"`);
};

// via window.addEventListener('hashchange')
window.addEventListener('hashchange', (event) => {
    console.log(`Hash changed from "${event.oldURL}" to "${event.newURL}"`);
});

Uživatelské styly

Uživatelské styly umožňují uživatelům změnit vzhled oblíbených webových stránek.

AdGuard má možnost nahrát nebo vytvořit vlastní uživatelské styly. Jedná se o pokročilou funkci, takže budete potřebovat určité znalosti HTML a CSS.

:::info Podporované aplikace

V současné době umožňují vytvářet a spravovat uživatelské styly dvě aplikace AdGuard: AdGuard pro Windows (verze 7.19 nebo novější) a AdGuard pro macOS (verze 2.16 nebo novější). Tuto novou funkci plánujeme v nejbližší době implementovat také do AdGuardu pro Android v4.8.

:::

Jedná se o experimentální funkci, takže pokud se při přidávání nebo vytváření uživatelského stylu setkáte s jakýmikoli problémy, kontaktujte prosím náš tým podpory na support@adguard.com.

Jak nastavit uživatelský styl v AdGuardu

Uživatelské styly si můžete stáhnout z různých webových stránek. Jednou z nejoblíbenějších webových stránek s uživatelskými styly je https://userstyles.world/, kterou použijeme jako příklad pro následující pokyny, jak nastavit uživatelský styl v AdGuardu.

  1. Přejděte na výše uvedený odkaz a vyberte si uživatelský styl, který se vám líbí

  2. Klikněte na Kopírovat vedle adresy uživatelského stylu

  3. Otevřete nastavení AdGuardu → Rozšíření

  4. Stiskněte tlačítko [+] a vložte odkaz na uživatelský styl

  5. Hotovo!

Pokud znáte pravidla CSS, můžete si uživatelské styly vytvořit sami.

:::note

Nepodporujeme uživatelské styly, které v metadatech obsahují @var nebo @advanced. AdGuard také nepodporuje @preprocessor bez hodnoty default.

:::

  1. Otevřete nastavení AdGuardu → Rozšíření

  2. Stiskněte tlačítko [+] a vyberte možnost Vytvořit uživatelský styl. Na obrazovce se zobrazí nové okno

  3. Chcete-li vytvořit uživatelský styl, napište nejprve název s metadaty, např.

    /* ==UserStyle==
    @name New userstyle
    @version 1.0
    ==/UserStyle== */
  4. Část CSS zapište až za metadata. AdGuard podporuje porovnávání názvů domén webových stránek (@-moz-document domain(…), …). Např:

    body {
      background: gray;
      }

    nebo:

    @-moz-document domain('example.org'),
    domain('example.net'),
    domain('example.com') body {
      background: gray;
      }
  5. Po dokončení stiskněte tlačítko Uložit a zavřít. Váš nový uživatelský styl byl úspěšně přidán do AdGuardu

Příklad

/* ==UserStyle==
@name         Example userstyle
@namespace    https://example.org/userstyle
@homepageURL  https://example.org/userstyle
@version      1.0.0
@license      Other
@description  This is an example
@author       example
@preprocessor default
==/UserStyle== */
@-moz-document regexp("https?\:\/\/(www\.)?example\.(org|com).*") {
    body {
        background-color: #000000 !important;
    }
}