Rozšíření
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.
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 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 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.).
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.
Nejlepší výběry mimo AdGuard
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.
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?
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
@name
@namespace
@description
@version
@match
@include
@exclude
@grant
@connect
@require
@resource
@downloadURL
@updateURL
@homepage
,@homepageURL
,@source
,@website
@run-at
@noframes
@icon
,@iconURL
,@defaulticon
@icon64
,@icon64URL
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.
Všechny uvedené staré funkce Greasemonkey jsou zastaralé, ale stále podporované.
GM.info
,GM_info
GM.setValue
,GM_setValue
GM.getValue
,GM_getValue
GM.listValues
,GM_listValues
GM.deleteValue
,GM_deleteValue
GM.getResourceUrl
,GM_getResourceURL
GM.setClipboard
,GM_setClipboard
GM.xmlHttpRequest
,GM_xmlhttpRequest
GM.openInTab
,GM_openInTab
GM.notification
unsafeWindow
GM_getResourceText
GM_addStyle
GM_log
GM.addElement
,GM_addElement
window.onurlchange
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
ADG_policyApi.createHTML
. Pokud není podporováno, vracíinput: string
.ADG_policyApi.createScript
. Pokud není podporováno, vracíinput: string
.ADG_policyApi.createScriptURL
. Pokud není podporováno, vracíinput: string
.ADG_policyApi.getAttributeType
. Pokud není podporováno, vracínull
.ADG_policyApi.getPropertyType
. Pokud není podporováno, vracínull
.ADG_policyApi.isHTML
. Pokud není podporováno, vracífalse
.ADG_policyApi.isScript
. Pokud není podporováno, vracífalse
.ADG_policyApi.isScriptURL
. Pokud není podporováno, vracífalse
.
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
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.
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
nahttps://example.com/page2
vyvolá událost. - Navigace z
https://example.com/page1?query=1
nahttps://example.com/page1?query=2
vyvolá událost. - Navigace z
https://example.com/page1#section1
nahttps://example.com/page1#section2
NEVYVOLÁ událost.
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.
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.
Přejděte na výše uvedený odkaz a vyberte si uživatelský styl, který se vám líbí
Klikněte na Kopírovat vedle adresy uživatelského stylu
Otevřete nastavení AdGuardu → Rozšíření
Stiskněte tlačítko [+] a vložte odkaz na uživatelský styl
Hotovo!
Pokud znáte pravidla CSS, můžete si uživatelské styly vytvořit sami.
Nepodporujeme uživatelské styly, které v metadatech obsahují @var
nebo @advanced
. AdGuard také nepodporuje @preprocessor
bez hodnoty default
.
Otevřete nastavení AdGuardu → Rozšíření
Stiskněte tlačítko [+] a vyberte možnost Vytvořit uživatelský styl. Na obrazovce se zobrazí nové okno
Chcete-li vytvořit uživatelský styl, napište nejprve název s metadaty, např.
/* ==UserStyle==
@name New userstyle
@version 1.0
==/UserStyle== */Čá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;
}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;
}
}