Greasemonkey. Uživatelské skriptování (nejen) ve Firefoxu

Podobné dokumenty
Část 1 Moderní JavaScript

NSWI096 - INTERNET JavaScript

APS Administrator.OP

Uživatelská dokumentace

1. Úvod do Ajaxu 11. Jak Ajax funguje? 13

Formuláře. Internetové publikování. Formuláře - příklad

Další nutný soubor je laydiv.js, ve kterém jsou uloženy funkce pro zobrazování virů na ploše a funkce pro odkaz na Teachers Guide.

MBI - technologická realizace modelu

Software602 FormApps Server

DUM č. 11 v sadě. 36. Inf-12 Počítačové sítě

HLEDEJCENY.mobi. Obsah. Mobilní verze e-shopu. Důvody instalace

Nastavení klientských stanic pro webové aplikace PilsCom s.r.o.

17. července :51 z moravec@yahoo.com

Geoportál DMVS využití a další rozvoj

WNC::WebNucleatCreator

Přihlášení uživatele

Uživatelská dokumentace

Nápověda k aplikaci EA Script Engine

Návod na provedení upgrade IS Harmonik

Nastavení Internet Exploreru pro vstup do IS ARGIS

Připravil: Ing. Jiří Lýsek, Ph.D. Verze: Webové technologie

Poznámky k verzi Remote support platform 3.1

Instalace a konfigurace web serveru. WA1 Martin Klíma

MATLABLINK - VZDÁLENÉ OVLÁDÁNÍ A MONITOROVÁNÍ TECHNOLOGICKÝCH PROCESŮ

Uživatelská dokumentace

Nastavení klientských stanic pro webové aplikace PilsCom s.r.o.

1. lekce. do souboru main.c uložíme následující kód a pomocí F9 ho zkompilujeme a spustíme:

Využití aplikace SketchUp pro tvorbu jednoduchého informačního systému

Django Urls, views, templates

Specifikace. Odevzdání do

Modul Outlook2Money.

Informační systém pro e-learning manuál

Připravil: Ing. Jiří Lýsek, Ph.D. Verze: Webové aplikace

Formuláře. Internetové publikování

TACHOTel manuál 2015 AURIS CZ

Internetový prohlížeč-vyhledávání a ukládání dat z internetu do počítače

Základy HTML, URL, HTTP, druhy skriptování, formuláře

Předpoklady správného fungování formulářů

Internet. Internetový prohlížeč. Mgr. Jan Veverka Střední odborná škola sociální obor ošetřovatel

Vývojařská Plzeň AngularJS

Návod: Připojení ke školnímu FTP serveru. Návodu sloužící k přípojení k FTP serveru pomocí: Total Commander Webové rozhraní FTP Novell Client

Uživatelská příručka pro práci s Portálem VZP. Test kompatibility nastavení prohlížeče

XSLT pomocí JavaScriptu v Mozille (... Opeře a Safari)

Django. Webový framework pro Python Projekt = webová stránka Aplikace = určitá funkcionalita webu

Uživatelská příručka

Generování žádosti o certifikát Uživatelská příručka

Nastavení aplikace Internet Explorer

DATAMINING SEWEBAR CMS

UNIVERZITA PARDUBICE Fakulta elektrotechniky a informatiky Katedra softwarových technologií

Uživatelská dokumentace

POKYNY K INSTALACI JAVA PLUGINU A ELEKTRONICKÉHO PODPISU V SYSTÉMU ELZA. Stav ke dni verze 1.0

OBALKYKNIH.CZ API 3.0, IMPLEMENTACE PRO ALEPH OPAC

Studijní průvodce e-learningovými kurzy

EVROPSKÝ SOCIÁLNÍ FOND. Úvod do PHP PRAHA & EU INVESTUJEME DO VAŠÍ BUDOUCNOSTI

Připravil: Ing. Jiří Lýsek, Ph.D. Verze: Webové technologie

1 Administrace systému Moduly Skupiny atributů Atributy Hodnoty atributů... 4

Minebot manuál (v 1.2)

Internet 2 css, skriptování, dynamické prvky

Instalace pluginů pro formuláře na eportálu ČSSZ

Uživatelská příručka 6.A6. (obr.1.)

Nápověda a postupy. Instalace a aktivace PDF-XChange Viewer Pro. Instalace a aktivace software. Nápověda a postupy. 1 z

Mzdy Optimum základy ovládání

ČERV. Hra Červ je psána pomocí příkazů Javascriptu a standardních příkazů HTML.

Mapy.cz vs. amapy.cz

Automatické testování GUI

Pokud používáte prohlížeč Chrome, tak se po zadání url adresy zobrazí následující obrazovka:

Sběr informačních povinností regulovaných subjektů. Návod na instalaci certifikátů a nastavení prohlížeče. Verze: 2.1

Využití chemie v procesu testování webových aplikací vytvořených pomocí technologií PHP a Java

Webová aplikace Znalostní testy online UŽIVATELSKÁ PŘÍRUČKA

HTML - Úvod. Zpracoval: Petr Lasák

Uživatelská příručka Autor: Martin Fiala

Pro využití aktivního odkazu (modrý a podtržený) použijte klávesu Ctrl + kliknutí myší.

Obsah. Úvodem 9 Zpětná vazba od čtenářů 10 Zdrojové kódy ke knize 10 Errata 10

Uživatelské příkazy: false - dialog ukončen IDCANCEL. Vytvoří nové okno. title - titulek okna

Zabezpečení proti SQL injection

Nový design ESO9. E S O 9 i n t e r n a t i o n a l a. s. U M l ý n a , P r a h a. Strana 1 z 9

3 MOŽNÉ PŘÍSTUPY K TVORBĚ APLIKACÍ NAD SVG DOKUMENTY

Po stisku Next se nám objeví seznam dostupných tříd (naše zkompilovaná třída User.KBI), viz následující obrázek.

Printris. Hra Printris je psána pomocí příkazů Javascriptu a standardních příkazů HTML.

Tvorba WWW stránek. přehled technologií používaných na webu principy jednotlivých technologií a možnosti jejich vzájemného kombinování

Možnosti programu. KAPITOLA 5 Možnosti

Nastavení provozního prostředí webového prohlížeče pro aplikaci

MODERNÍ WEB SNADNO A RYCHLE

Historie Internetu instalace prvního uzlu společností ARPA

Zabezpečení proti SQL injection

Tvorba webových stránek

NÁVOD K POUŽITÍ. IP kamerový systém.

Jazz Server osobní nastavení uživatele

Programování v jazyce JavaScript

Javascript. Javascript - jazyk

Software602 Form Designer

Objednávkový systém Beskyd Fryčovice a.s. objednavky.beskyd.cz. OBJEDNÁVKOVÝ SYSTÉM BESKYD FRYČOVICE a.s.

Mediareference Vojtěch

1 Návod na instalaci prostředí LeJOS-NXJ a přehrání firmwaru NXT kostky

5a. Makra Visual Basic pro Microsoft Escel. Vytvořil Institut biostatistiky a analýz, Masarykova univerzita J. Kalina

Postup instalace síťové verze Mount Blue

Instalační manuál. HelpDesk

MS Excel makra a VBA

APS Web Panel. Rozšiřující webový modul pro APS Administrator. Webové rozhraní pro vybrané funkce programového balíku APS Administrator

Transkript:

Greasemonkey Uživatelské skriptování (nejen) ve Firefoxu

Úvod Co jsou uživatelské skripty? Umožňují spouštět uživatelem definované skripty na(cizích) webových stránkách Typicky v JavaScriptu K čemu je to dobré? Přidání funkčnosti, změna vzhledu,... Co je Greasemonkey? Rozšíření do Firefoxu, které toto umožňuje Sám od sebe nedělá nic, jen zprostředkovává spouštění skriptů

Motivace Čeho se dá s Greasemonkey dosáhnout? Book Burro

Hello World skript v Greasemonkey helloworld.user.js // ==UserScript== // @name Hello World // @description display "Hello World" on every page // @include * // ==/UserScript== alert('hello, world!');

Instalace a spuštění skriptu Instalace se spustí automaticky při otevření libovolného souboru *.user.js ve Firefoxu (pokud je nainstalován Greasemonkey plugin)

Metadata U každého skriptu jsou metainformace, které určují název skriptu, kdy se má spouštět, // ==UserScript== // @name Hello World // @namespace http://www.example.com/ // @description "Hello World" on every page // @include * // @exclude http://google.com/* // @exclude http://www.google.com/* // ==/UserScript== @exclude má přednost před @include

Příklad využití Greasemonkey Google Image Search Odkazy z obrázků vedou na frameset, kde je thumbnail a až po kliknutí na něj se zobrazí žádáný obrázek Chceme změnit toto chování, aby odkaz vedl rovnou na cílový obrázek

Podrobnosti o Google Image Search Obrázky mají link na takovouto URL: /imgres?imgurl=http://ex.com/image.gif&imgrefurl=http://ex.com/index.html Stačí najít všechny elementy <a>, které mají odkaz na URL tohoto formátu, a změnit jim atribut href Pro nalezení elementů lze použít document.getelementsbytagname('a'), nebo document.evaluate document.evaluateje k dispozici pouze ve Firefoxu a vyhodnocuje Xpath výrazy

Uživatelský skript pro Google Image Search // ==UserScript== // @name Google Image Search Upgrade // @include http://images.google.*/* // ==/UserScript== nodes = document.getelementsbytagname('a'); for (var i = 0; i < nodes.length; i++) for (var i = 0; i < nodes.length; i++) { var linkelement = nodes[i]; var match = linkelement.href.match( /\/imgres\?imgurl\=(.*?)\&imgrefurl\=/ ); if (match) linkelement.href = decodeuri(match[1]); }

Greasemonkey API GM_log(message); Zapíše zprávu do JavaScriptové konzole, ladící účely GM_getValue(key, defaultvalue); GM_setValue(key, value); Uloží nebo načte konfigurační hodnotu, ukládají se trvale, specifické pro jednotlivé skripty, k dispozici v přehledu konfigurace about:config GM_registerMenuCommand(menuText, callbackfunction); Umožňuje přidat do menu Nástroje GreaseMonkey Příkazy uživatelských skriptůpoložku, která spustí zadanou funkci GM_xmlhttpRequest(details); Provede HTTP požadavek (GET nebo POST) na libovolné URL (bez bezpečnostních omezení!)

Použití API Chceme za každý odkaz připsat velikost dokumentu, na který odkaz směřuje (GM_xmlhttpRequest) Možnost vypnout a zapnout (GM_registerMenuCommand), toto nastavení aby se ukládalo (GM_setValue, GM_getValue) Logovat všechny tyto odkazy (GM_log)

Použití API řešení // ==UserScript== // @name Linker // @include http://www.google.com/ // ==/UserScript== GM_registerMenuCommand("Enable Linker", function() { GM_setValue("enabled", true); }); GM_registerMenuCommand("Disable Linker", function() { GM_setValue("enabled", false); }); function MakeRequest(linkElement) { GM_xmlhttpRequest({ method: 'GET', url: linkelement.href, onload: function(responsedetails) { GM_log(linkElement.href + ": " + responsedetails.responsetext.length); linkelement.innerhtml += " (" + responsedetails.responsetext.length + " bytes)"; } }); } if (GM_getValue("enabled", false)) { GM_log("Linker is enabled, processing all links."); nodes = document.getelementsbytagname('a'); for (var i = 0; i < nodes.length; i++) MakeRequest(nodes[i]); }

Bezpečnost uživatelských skriptů Greasemonkey spouští skripty v sandboxu, cílový web k nim nemá přístup Všechny API funkce jsou přístupné pouze z tohoto sandboxu Je zakázáno přepisování metod a vlastností objektů document a window Kvůli sandboxu je prostředí uživatelských skriptů mírně pozměněno

Drobné rozdíly v DOM/JavaScriptu Nefunguje string eval na funkce window.settimeout("func", 1000); window.settimeout(func, 1000); Nelze přistupovast přímo k event-handlerům e.onclick = 'func(this)'; e.onclick = func; e.addeventlistener("click", func, true); K vlastním atributům elementů lze přistupovat pouze pomocí.setattribute a.getattribute Nelze iterovat pomocí for (var e in elements)

Drobné rozdíly v DOM/JavaScriptu, #2 K formulářům a jejich prvkům je nutné přistupovat přes document.forms.nameditem("form1")a f.elements.nameditem("input1") Nefunguje window.location = "...", používat window.location.href = "..." Proměnné unsafewindow, unsafedocument Nefunguje e.setattribute("style", "color: blue;"), používat e.style.color = 'blue'

Kompilace skriptů Greasemonkey Compiler Webová aplikace, z uživatelského skriptu (*.user.js) vytvoří samostatné rozšíření do Firefoxu (*.xpi)

Neocenitelní pomocníci při vývoji uživatelských skriptů DOM Inspector Pro procházení DOM stromu dokumentu Firebug Inspect Elementnajde element v DOM stromu, živé editování JavaScript Shell Bookmarklet, umožňuje vyhodnocovat JavaScriptové příkazy v kontextu aktuálního dokumentu, umí zobrazit všechny metody a vlastnosti nějakého objektu Web Developer Toolbar View Generated Sourcezobrazí HTML obsah dokumentu po vykonání JavaScriptu

Uživatelské skriptování v jiných prohlížečích Opera Od verze 8 má vestavěnou podporu uživatelských skriptů, nemá GM API Internet Explorer Greasemonkey for IE, Trixie, Turnabout (včetně GM API) Safari GreaseKit Konqueror Konqueror Userscript

Možné problémy Některé služby zakazují používání uživatelských skriptů Např. webové hry, internetové obchody Změny na webu způsobí nefunkčnost GM skriptů Bezpečnostní riziko Špatně napsané uživatelské skripty mohou webové stránce zpřístupnit nepovolené údaje nebo funkce (GM_xmlhttpRequest)

Odkazy GM Homepage http://www.greasespot.net/ GM Wiki http://wiki.greasespot.net/ Kniha/manuál ke Greasemonkey http://diveintogreasemonkey.org/ Kniha Greasemonkey Hacks (O'Reilly 2005) Databáze uživatelských skriptů http://userscripts.org/, http://userjs.org/

Otázky?