MozillaPL.org - polskie centrum Mozilli

Główne menu:

Tworzenie filtrów dla rozszerzenia Adblock Plus

Adblock Plus pozwala na blokowanie wyświetlania niechcianych elementów lub całych stron na różne sposoby. Niniejsze opracowanie wyjaśnia możliwości ich wyboru i to jak mogą być stosowane.

Podstawowe zasady tworzenia filtrów

Metody opisane w tej części są zazwyczaj wystarczające dla większości osób tworzących filtry na własne potrzeby.

Podstawowe filtry

Najprostszym filtrem jaki można zastosować jest wykorzystanie adresu np. banera, który chcemy zablokować. Niestety często elementy adresów są zmieniane losowo lub przez administratorów. Przykładowy adres może wyglądać tak: http://example.com/ads/banner123.gif, gdzie 123 jest elementem, który podlega zmianom. W takim przypadku blokowanie tego konkretnego adresu nic nie da. Trzeba utworzyć bardziej ogólny filtr np. http://example.com/ads/banner*.gif lub nawet http://example.com/ads/*

UWAGA: Należy zwrócić uwagę na to, żeby nie zablokować zbyt wiele przy użyciu symbolu wieloznacznego *. Filtr http://example.com/* zablokuje nie tylko niechciane grafiki, ale wszystkie podstrony witryny example.com.

Tworzenie wyjątków

Czasami zdarza się, że dodany filtr, choć ogólnie działa poprawnie, to blokuje także zawartość, do której chcemy mieć dostęp. Nie trzeba usuwać całego filtru żeby zobaczyć tę część. W takich sytuacjach stosuje się wyjątki do filtrów. Dla przykładu, filtr adv* zablokuje także adres http://example.com/advice.html. Aby tego uniknąć należy dodać jako wyjątek formułę @@advice. Tworzenie wyjątków nie różni się od budowy filtrów blokujących. Tu także można stosować symbol wieloznaczny * oraz wyrażenia ogólne. Przed formułą wyjątku umieszcza się @@. Należy pamiętać o tym, że wyrażenie zaczynające się od http:// lub https:// (opcjonalnie z symbolem „fajki” | na początku) spowoduje ustalenie całej witryny jako wyjątku. @@http://example.com - na tej stronie i podstronach nie będą blokowane żadne elementy.

Dopasowywanie filtra do początków i końców adresów

Adblock traktuje każdy filtr tak jakby przed lub za nim był umieszczony symbol wieloznaczny *. Z tego powodu nie ma różnicy pomiędzy ad a *ad*. Zazwyczaj nie ma to znaczenia, jednak czasami można chcieć, aby zdefiniowany filtr dotyczył tylko określonego początku lub końca adresu. Na przykład, chcąc zablokować wszystkie elementy Flash, dodanie filtra swf zablokuje adres http://example.com/swf/index.html. Rozwiązaniem tego problemu jest dodanie symbolu "fajki" | na końcu filtra. Znak ten w tym wypadku oznacza, że adres kończy się na poprzedzającym go wyrażeniu. Filtr swf| zablokuje adres http://example.com/flash.swf a nie zablokuje http://example.com/swf/index.html.

Z kolei filtr |http://baddomain.example/ zablokuje http://baddomain.example/banner.gif a pozwoli na uruchomienie strony http://gooddomain.example/analyze?http://baddomain.example.

Czasami można chcieć zablokować podobne adresy np.: http://example.com/banner.gif, https://example.com/banner.gif oraz http://www.example.com/banner.gif. Można to osiągnąć poprzez dodanie || przed filtrem, który odnosi się do początku adresu. ||example.com/banner.gif zablokuje wymienione adresy, ale umożliwi otwarcie http://gooddomain.example.com/banner.gif lub http://gooddomain.example/analyze?http://example.com/banner.gif (dotyczy Adblocka 1.1 i późniejszych).

Znaki separatorów

W adresach internetowych występują znaki separatorów. Aby uwzględnić taki znak w filtrze należy do niego dodać ^. Przykładowo chcemy zablokować adresy http://example.com oraz http://example.com:8000 a umożliwić otwarcie adresu http://example.com.ar. Aby to uzyskać należy stworzyć filtr, w którym znak ^ będzie oznaczał, że w adresie występuje pojedynczy separator – http://example.com^ (dotyczy Adblocka 1.1 i późniejszych). Separatorem może być litera, cyfra, lub jeden z następujących znaków : -. %. Jako separator może być także uznany koniec adresu. W adresie http://example.com:8000/foo.bar?a=12&b=%D1%82%D0%B5%D1%81%D1%82 wszystkie separatory są zaznaczone na czerwono. Aby zablokować taką stronę należy użyć filtra ^example.com^ lub ^%D1%82%D0%B5%D1%81%D1%82^, lub ^foo.bar^.

Komentarze do filtrów

Jakikolwiek filtr lub tekst poprzedzony znakiem wykrzyknika jest uznawany przez Adblocka jako komentarz. Komentarze są wyświetlane w kolorze szarym. Adblock ignoruje takie linijki, więc można w ten sposób wpisać np. dowolną uwagę do poprzedzającego lub następującego po niej filtra. Sposób ten jest często wykorzystywany do wpisania autorstwa zestawu filtrów.

Funkcje zaawansowane

Opcje opisane w następnej części są używane przez doświadczonych użytkowników oraz twórców list filtrów.

Specyfikacja dostępnych opcji

Adblock Plus pozwala na dodawanie opcji do filtrów w celu zmiany sposobu ich działania. Opcje dopisuje się na końcu filtra po znaku dolara $. Stosując więcej niż jedną opcję oddziela się je przecinkami np. */ads/*$script,match-case W podanym przykładzie */ads/* jest zastosowanym filtrem a script i match-case jego opcjami. Dostępne są następujące opcje:

  • Opcje typów: ustalają, które typy elementów ma blokować filtr (lub pomijać w blokowaniu w przypadku wyjątków). Wielokrotny wybór typów opcji ustala filtrowanie kilku typów elementów. Dopuszczalne typy:
    • script – zewnętrzne skrypty uruchamiane znacznikami HTML;
    • image – obrazki ładowane poprzez znacznik „img” w HTML;
    • background – obrazy tła, często zdefiniowane poprzez CSS;
    • stylesheet – zewnętrzne pliki stylów CSS;
    • object – treści dostarczane przez wtyczki przeglądarki np. Flash, czy Java;
    • xbl – wiązania XBL (dołączane poprzez -moz-binding CSS) - dotyczy Firefoksa od wersji 3;
    • ping – odnośniki z atrybutem ping - dotyczy Firefoksa od wersji 3;
    • xmlhttprequest – polecenia wywołane przez obiekty XMLHttpRequest - dotyczy Firefoksa od wersji 3;
    • object-subrequest – polecenia wywołane przez wtyczki np. Flash - dotyczy Firefoksa od wersji 3;
    • dtd – pliki specyfikacji DTD ładowane przez dokumenty XML - dotyczy Firefoksa od wersji 3;
    • subdocument – osadzone strony, zazwyczaj zawarte w ramkach HTML;
    • document - strona jako taka (the page itself) (do strony mogą być dodane wyłącznie reguły wyjątków);
    • other' – typy poleceń nie wymienione wcześniej (dla Firefoksa 2 zawiera także wiązania XBL oraz XMLHttpRequest).
  • Opcja odwrotna typów: określa, których typów Adblock ma nie blokować. Możliwe opcje to: ~script, ~image, ~background, ~stylesheet, ~object, ~xbl, ~ping, ~xmlhttprequest, ~object-subrequest, ~dtd, ~subdocument, ~document, ~other.
  • Ograniczenia dla poleceń obcych i własnych (third-party).

Jeśli dodana jest opcja third-party filtr jest aktywny dla poleceń ze źródeł innych niż aktualnie przeglądana strona. Odwrotna opcja ~third-party ogranicza polecenia jedynie do tych ze źródła aktualnie przeglądanej strony.

  • Ograniczenia dla domen. Opcja domain=example.com oznacza, że filtr powinien być stosowany wyłącznie w domenie example.com. Podanych może być więcej domen, ale należy rozdzielić je „fajką” np. domain=example.com|example.net. Znak tyldy ~ przed domeną wyłącza ją z użycia w niej filtra. domain=~example.com oznacza, że filtr powinien być stosowany na wszystkich stronach za wyjątkiem example.com. Z kolei domain=example.com|~foo.example.com wyłącza z działania filtra subdomenę foo.example.com.
  • match-case – dodaje opcję rozróżniania wielkości liter. Filtr */BannerAd.gif$match-case zablokuje adres http://example.com/BannerAd.gif a nie zablokuje http://example.com/bannerad.gif
  • collapse – ta opcja ustawia ukrywanie elementów. Odwrotność opcji ~collapse sprawia, że elementy nie są nigdy ukrywane. Opcje te mają pierwszeństwo przed ogólnym ustawieniem „Ukrywaj zablokowane elementy”.

Stosowanie wzorców wyrażeń regularnych

Jeśli potrzebna jest jeszcze większa kontrola nad działaniem filtrów do pomocy przychodzą wzorce wyrażeń regularnych. Na przykład filtr /banner\d+/ będzie blokował strony z wyrażeniem banner123, banner321 a nie będzie blokował banners.

Więcej na temat wzorców wyrażeń regularnych można znaleźć na stronie: Mozilla Development Center

Do testowania poprawności wyrażeń regularnych można użyć rozszerzenia Regular Expressions Tester

UWAGA: Stosowanie wyrażeń regularnych nie powinno być stosowane jako sposób na przyspieszanie działania filtrowania. Od wersji 0.7 Adblocka filtry podstawowe (np. http://example.com/banner*.gif) są wykonywane szybciej.


Reguły ukrywania elementów

Podstawowe zasady

Czasami można spotkać się z reklamami, których nie można zablokować, gdyż są osadzone jako tekst w stronie jako takiej (web page itself). Chcąc odwiedzić stronę reklama ładuje się także. Wszystko co można zrobić to ją ukryć, jeśli nie chce się jej oglądać. To jest właśnie to, przez co rozumie się ukrywanie elementów. Gdy spojrzy się na kod źródłowy strony można odnaleźć mniej więcej coś takiego:

<div class=”textad”>
Najlepsza pizza w mieście!
<div>

Reklama przedstawiona w ramce powyżej jest zawarta wewnątrz elementu div z atrybutem klasy „textad”. Tę reklamę ukryje następująca kombinacja: ##div.textad Znaczniki ## oznaczają regułę ukrywania, podczas gdy reszta jest selektorem identyfikującym elementy do ukrycia.

<div id=”sponsorad”>
Takiej pizzy jeszcze nie jadłeś! Kliknij tu!
<div>

W podobny sposób można ukryć elementy poprzez ich atrybut id. Reguła ukrywająca tę reklamę wygląda następująco: ##div#sponsorad. W tym przypadku nie trzeba określać nazwy. elementu. Reguła ##*#sponsorad będzie równie skuteczna.


<textad>
Tylko u nas największa i najsmaczniejsza pizza!
</textad>

W tej sytuacji, aby ukryć reklamę należy zastosować ukrywanie nazwy elementu ##textad

Rozszerzenie Element Hiding Helper pomaga w wyborze elementów do ukrycia i zapisaniu odpowiedniej reguły bez przeglądania kodu źródłowego strony. Tak, czy inaczej podstawowa wiedza na temat języka HTML jest użyteczna.

UWAGA: Element Hiding Helper funkcjonuje w odmienny sposób niż tworzenie ogólnych filtrów własnoręcznie. Filtry uzyskane przy pomocy tego rozszerzenia blokują jeden, konkretny element, dlatego nigdy nie ma w nich symboli wieloznacznych.


Ograniczanie użycia reguł do konkretnych domen

Często potrzeba ukryć konkretną reklamę lub treść w jednej domenie bez potrzeby ustanawiania reguły dla innych stron. Przykładowo reguła ##*.sponsor mogłaby ukryć treść pożądaną na innych stronach. Jeśli regułę zapisze się jako example.com##*.sponsor będzie ona dotyczyła stron http://example.com i np. something.example.com, ale nie zablokuje treści na http://example.org. Reguła może dotyczyć więcej niż jednej domeny. W takim wypadku należy je wypisać po kolei, oddzielając przecinkami: domena1.example,domena2.example,domena3.example##*.sponsor

Tylda poprzedzająca nazwę domeny wyłącza ją spod ogólnej reguły np. ~example.com##*.sponsor będzie dotyczyło wszystkich domen poza example.com. Z kolei example.com|~foo.example.com##*.sponsor tworzy regułę dla domeny example.com wyłączając z niej subdomenę foo.example.com

UWAGA: Ukrywanie elementów możliwe jest wyłącznie w przypadku zastosowania pełnych nazw domen. Dzieje się tak wskutek sposobu w jaki zaimplementowane jest ukrywanie elementów. Nie można użyć jakiejkolwiek innej części adresu oraz np. samego „domena” w zastępstwie domena.example, domena.test

UWAGA 2: Reguły ukrywania elementów mogą zostać użyte również do ukrywania elementów interfejsu użytkownika. Dla przykładu reguła browser##menuitem#javascriptConsole ukryje wpis konsoli błędów w menu Narzędzi Firefoksa.

Selektory atrybutów

Niektóre z tekstowych reklam nie mają nadanego ani id, ani atrybutu klasy. W takim przypadku do ich ukrycia można użyć innych atrybutów np. ##table[width=”80%”] ukryje tabele z atrybutem szerokości ustawionym na 80%. Jeśli nie chce się określać wszystkich wartości atrybutu formuła ##div[title^=”adv”] [title$=”ert”] ukryje wszystkie elementy div z atrybutem tytułu adv i jednocześnie kończące się na ert. table[width=”80%”] [bgcolor=”white”] dotyczyć będzie tabel o białym tle z atrybutem szerokości „80%”.

Zaawansowane selektory

W zasadzie jakikolwiek selektor CSS obsługiwany przez Firefoksa może zostać użyty do ukrywania elementów. Dla przykładu formuła ##div.adheader + * ukryje cokolwiek występujące po elemencie „div” z nadaną klasą „adheader”. Pełną listę elementów stylów CSS można znaleźć na stronie W3C. Należy zwrócić uwagę na to, że nie wszystkie z selektorów są obsługiwane przez Firefoksa.

UWAGA: Przedstawiony sposób ukrywania przeznaczony jest dla zaawansowanych użytkowników. Aby korzystać z tego sposobu należy być dobrze zaznajomionym z dostępnymi selektorami CSS. Adblock Plus nie weryfikuje składni dodawanych selektorów. Użycie błędnej składni CSS może zakłócić działanie innych, poprawnie skonstruowanych reguł. Do sprawdzenia błędów CSS zaleca się użycie konsoli błędów JavaScript.

Uproszczona składnia do ukrywania elementów

Dla zachowania kompatybilności wstecznej Adblock Plus co prawda obsługuje uproszczoną składnię (np. #div(id=foo)) do ukrywania elementów, ale nie zaleca się jej stosowania. Wsparcie dla tego rodzaju składni może nie być dłużej kontynuowane. Preferuje się używanie selektorów CSS.

Tłumaczenie na podstawie: http://adblockplus.org/en/filters

Tę stronę ostatnio zmodyfikowano o 09:32, 23 sie 2009.

Osobiste:

Akcje:

:

Pomagają nam:

Przejdź do powiązanej strony

Nawigacja:

Stopka: