![]() | ![]() |
![]() |
| ![]() |
| |||||||||||||||||||||||||||||||
Korišćenje Greasemonkey ekstenzije za Firefox
Uobičajeno surfovanje Webom sa odgovarajućim alatkama običnog posmatrača može pretvoriti u hakera koji tuđe stranice prilagođava sopstvenim potrebama
Bilo da je reč o umetanju ili uklanjanju elemenata strane, obavljanju računskih operacija, intervenciji na CSS atributima ili automatizaciji nekih akcija, GM će uspešno obaviti svaki postavljeni zadatak. Njegove mogućnosti ograničene su samo mogućnostima JavaScripta i znanjem korisnika da pronađe ili napiše odgovarajuću skriptu. Instalacija i organizacija
Datoteke koje sadrže delove ili kompletne programe JavaScript kôda namenjenog instalaciji u GM nazivaju se „korisničke skripte” (eng. user scripts) i završavaju se duplim nastavkom .user.js. Na Webu postoji veliki broj gotovih skripti i uglavnom se mogu pronaći na zvaničnom GM direktorijumu userscripts.
Greasemonkey API Kako bi se korisničkim skriptama dodala mogućnost pamćenja nekih podešavanja i olakšala manipulacija resursima, razvijen je skup API funkcija.
GM_log(„skf”); Set od četiri funkcije za upravljanje vrednostima GM promenljivih sadrži: GM_setValue i GM_getValue za postavljanje, odnosno čitanje određene vrednosti iz baze chrome (npr. beleženje datuma i vremena poslednjeg izvršavanja skripte). Ovim funkcijama se prosleđuju dva string parametra: naziv GM promenljive i njena vrednost za postavljanje, odnosno podrazumevana vrednost ukoliko promenljiva ne postoji u bazi za čitanje. Ovako sačuvane vrednosti nisu kratkotrajne, već se prenose između sesija. GM_deleteValue, kao što se i može pretpostaviti, uklanja vrednost iz baze. Prosleđuje se samo jedan parametar – naziv promenljive, dok GM_listValues stavlja u niz nazive svih GM promenljivih koje pripadaju skripti iz koje se izvršavaju. Primer postavljanja, čitanja i brisanja vrednosti za URL SK foruma: GM_setValue("skforum", "http://www.sk.rs/forum/"); var skf = GM_getValue("skforum","http://www.sk.rs/forum/"); GM_deleteValue("skforum"); Funkcija GM_addStyle pravi novu sekciju za ugrađeni CSS stil, dodaje CSS selektor prosleđen kao parametar funkcije i umeće sadržaj u zaglavlje strane. Primer postavljanja crvene boje svog teksta na stranici: GM_addStyle("* { color: red !important; }"); Pored rada u pozadini, korisničkim skriptama može se obezbediti i interakcija sa korisnikom. Naime, moguće je napraviti deo menija unutar kontekstnog menija „majmunčeta” koji će sadržavati stavke za upravljanje skriptom. Za ovo se koristi funkcija GM_registerMenuCommand kojoj se prosleđuju najmanje dva, a najviše pet parametara. Prvi parametar je naziv stavke u meniju, drugi je naziv funkcije ili kompletna funkcija koja će biti izvršena prilikom izbora te stavke. Slede: znak koji će predstavljati prečicu sa tastature za stavku u meniju i modifikacioni tasteri za prečicu („shift”, „alt”, „meta”, „control” ili „accel”), kojih može da nema, odnosno da ih ima jedan ili više. (Nama do sada nije pošlo za rukom da nateramo prečice da rade.) Poslednji parametar je znak za izbor stavke u meniju kada je meni otvoren (accessKey). Primer stavke menija koja prikazuje poruku „Zdravo svete” (kucati sve u jednom redu): GM_registerMenuCommand("Zdravo svete!", function() {alert("Zdravo svete!");}, "z", "shift control", "z"); API funkcija u pozadini otvara URL prosleđen kao jedini parametar u novom tabu. Funkcioniše slično JavaScript funkciji window.open(), ali je praktičnija jer nije potrebno prosleđivati dodatne parametre za otvaranje u tabu i u pozadini. Primer otvaranja SK foruma: GM_openInTab("http://www.sk.rs/forum/"); Napredniji autori kojima je potrebno baratanje rezultatima XML i HTTP upita mogu koristiti API poziv GM_xmlhttpRequest. On omogućava baratanje čak i lokacijama koje se ne nalaze u domenu za koji skripta važi, tj. na kom se izvršava. Parametri koji se prosleđuju ovoj funkciji su: vrsta HTTP upita (POST ili GET), URL adresa na koju se upit šalje, HTTP zaglavlja koja će se proslediti toj adresi (identifikacija browsera, vrsta sadržaja koja se prihvata – MIME tip, parametri za prijavljivanje na sajt ako je potrebno itd.), zaobilaženje MIME tipa, te prosleđivanje kodiranih podataka formulara. Pošto sa rezultatom upita nešto valja i uraditi, postoje tri hendlera za različite događaje, i to: onload (izvršava neki kôd kada je dobijen rezultat upita), onreadystatechange (izvršava neki kôd kada se promeni status rada upita) i onerror (izvršava neki kôd kada dođe do greške pri upitu). Primer čitanja stranice www.sk.rs i prikaz HTML kôda u dijalogu: GM_xmlhttpRequest({ method: "GET", url: "http://www.sk.rs/", headers: { "User-Agent": "Mozilla/5.0", "Accept": "text/html" }, onload: function(response) { alert(response.responseText); } }); Moj prvi user script Da biste što lakše razumeli kako GM radi ispod haube, objasnićemo jednostavnu skriptu pomoću koje je moguće prilagoditi izgled foruma „Sveta kompjutera” željama korisnika. Ovde pre svega mislimo na izbor boja za prikaz elemenata. Napravićemo dva seta boja, GM meni za ručni izbor jedne od tih boja i CSS kôd koji će biti apliciran. Nove korisničke skripte kreiraju se izborom stavke „New User Script” iz kontekstnog menija GM u statusnoj traci. Na istoimenom dijalogu treba definisati naziv skripte (Name), jedinstvenu adresu koja će identifikovati skriptu (Namespace), a koja može biti http://localhost/ za anonimne lokalne skripte, korisnički profil autora na userscripts.org direktorijumu ili neki drugi jedinstveni niz znakova, te u polje Description valja upisati kratak opis onoga što skripta radi. Polje Includes (One per line) služi za upisivanje URL adresa na kojima će se skripta izvršavati. Moguće je definisati više adresa (sajtova), pri čemu jedna linija može sadržati samo jednu adresu. Pored apsolutne putanje, može se koristiti i džoker znak ’*’ (zvezdica) koji zamenjuje ostatak adrese (npr: http://www.sk.rs/ forum/* označava sve stranice koje počinju sa http://www.sk.rs/forum/). Nasuprot tome, u polje Excludes (One per line) upisuju se adrese koje se izuzimaju, tj. na kojima se skripta neće izvršavati (npr. ako navedemo http://www.sk.rs/forum/archive/*, onda naša skripta neće imati efekta na stranice iz arhive SK foruma). Nakon pritiska na dugme OK, ako se GM koristi po prvi put, neophodno je izabrati editor teksta koji će se koristiti za pisanje i uređivanje skripti. Kako su korisničke skripte zapravo tekstualne datoteke, može se izabrati i Notepad ili bilo koji drugi napredniji uređivač teksta. // ==UserScript== // @nameSK Forum tema // @namespacehttp://userscripts.org/users/96101 // @descriptionMenja podrazumevanu temu SK foruma // @includehttp://www.sk.rs/forum/* // @excludehttp://www.sk.rs/forum/modcp/* // @excludehttp://www.sk.rs/forum/archive/* // ==/UserScript==# Zaglavlje skripte sadrži gore navedene parametre. Naša se skripta zove „SK Forum tema” i funkcionisaće na SK forumu, ali ne u arhivi i moderatorskom panelu. function skft() { var tema = GM_getValue(„tema”, „servis”); switch (tema) { case „gray”: var b1 = „#444”; var b2 = „#555”; var b3 = „#DDD”; var b4 = „#EEE”; var t1 = „#222”; var t2 = „#000”; var t3 = „#FF7400”; break; default: var b1 = „#004000”; var b2 = „#008000”; var b3 = „#D0F3B6”; var b4 = „#F9F7ED”; var t1 = „#008000”; var t2 = „#004000”; var t3 = „#800040”; } // definise selektore sa predefinisanom temom boja var css = "body, .page { color: "+t1+"; }" + "a:link, a:visited { color: "+t2+"; }" + "a:hover, a:active { color: "+t3+"; }" + ".tborder { background: white; color: "+b1+"; border: 1px solid "+b1+"; }" + ".thead { background: "+b1+"; color: "+b4+"; }" + ".tcat, .vbmenu_control, .tfoot { background: "+b2+"; color: "+b4+"; }" + ".alt1, .alt1Active, .panelsurround, .wysiwyg { background: "+b4+" !important; color: "+t1+" !important; border: none !important; }" + ".alt2, .controlbar, .imagebutton, .panel { background: "+b3+"; color: "+t1+"; border: none !important; }" + "input, textarea {color: „+t2+"}" + "div.page {width: 100% !important; padding: 0; margin: 0;}"; GM_addStyle(css); } Funkcija skft() prvo uzima iz baze chrome izabranu temu. Ukoliko korisnik nije ranije izabrao temu, postavlja se podrazumevana tema – servis. Nakon toga, radi se izbor HEX boja pojedinačnih elemenata JavaScript funkcijom switch(), u zavisnosti od izabrane teme. Pošto su boje dodeljene promenljivima, formira se CSS niz selektora sa umetanjem predefinisanih boja za elemente stranica foruma. Pored postavljanja novih boja, na kraju zadajemo da atribut stranice bude širine 100 odsto, odnosno da ispuni prozor browsera celom širinom. Poslednji korak funkcije skft() jeste primena formiranog CSS stila GM funkcijom GM_addStyle: GM_registerMenuCommand( "Servis", function() { GM_setValue( "tema", "servis"); skft(); }, "s", "alt meta", "s" ); GM_registerMenuCommand( "Siva", function() { GM_setValue( "tema", "gray"); skft(); }, "g", "alt meta", "g" ); skft(); Kako bismo omogućili izbor između ovde prikazane dve teme, dodajemo u GM meni stavke Servis i Siva. Na kraju skripte pozivamo funkciju skft() kako bi ranije izabrana ili podrazumevana tema bila primenjena kada se u browseru završi učitavanje stranice SK foruma. Prikazali smo skraćenu verziju skripte koja sadrži samo dve teme. Punu verziju sa više tema članovi foruma „Sveta kompjutera” mogu preuzeti sa adrese http://userscripts. Resursi Već smo pomenuli to da osim samostalnog pisanja korisničkih skripti, što će biti interesantno naprednijim čitaocima koji vole da uče i eksperimentišu, postoji i veliki broj gotovih skripti za popularne sajtove. Na adresi http://userscripts.org/ mogu se naći skripte za unapređivanje Googlea, Yahooa, Gmaila, Flickra, Facebooka, YouTubea, Twittera; čak su obrađene i online igre poput Traviana, validacija linkova za Rapidshare i druge filesharing sajtove i još mnogo toga. Svakako korisne adrese za sve web entuzijaste su Greasemonkey blog http://greasespot. Ako smo vam ovim tekstom zagolicali maštu i probudili želju da se oprobate u hakerskim vodama, podelite svoja dostignuća sa ostalim čitaocima na našem forumu. Aleksandar UROŠEVIĆ |
![]()
![]()
| |||||||||||||||||||||||||||||||||
![]() | |
![]() | ![]() |
Home / Novi broj | Arhiva • Opšte teme | Internet | Test drive | Test run | PD kutak | CeDeteka | WWW vodič • Svet igara Svet kompjutera Copyright © 1984-2018. Politika a.d. • Redakcija | Kontakt | Saradnja | Oglasi | Pretplata • Help • English | |
SKWeb 3.22 |