Jakiś czas temu koleżanka zasygnalizowała mi, że na jej firmowym laptopie, w przeglądarce Chrome w przypadku niektórych (!) artykułów nie wyświetla się treść – widzi nagłówek (logo i menu), a potem dopiero przyciski nawigacyjne “następny” i “poprzedni” artykuł, pole “o autorze”, listę podobnych wpisów, komentarze i stopkę. Do tego pasek boczny (sidebar). Czyli właściwie wszystko, poza najważniejszym, czyli treścią artykułu. Z racji tego, że dotyczyło to tylko niektórych wpisów, do tego u mnie nie udało się na żadnej przeglądarce powtórzyć tego błędu, temat trafił na listę zadań, do zrobienia… później.

Niedawno jednak podobny problem zgłosił inny czytelnik. W tym momencie to już nie incydent na specyficznie skonfigurowanym komputerze firmowym, a pewnego rodzaju reguła, którą postanowiłem sprawdzić dokładniej…

uBlock Origin blokuje treść niektórych artykułów

Szybko udało się ustalić, że w obu przypadkach – czytelnik i koleżanka – w przeglądarce Chrome zainstalowana była wtyczka uBlock Origin, która z założenia służy do blokowania reklam i innych “przeszkadzajek”. Przynajmniej w teorii, bo w przypadku strony Webinsider.pl blokowała nie tylko potencjalne reklamy (niektóre), ale całe artykuły, łącznie z tytułem.

Winny ustalony, została przyczyna. Niby powinno być prościej, ale… W tym momencie znowu postanowiłem temat zostawić na kilka dni, bo niestety, ale czas z gumy nie jest, i wzywały inne zadania.

Reklama w nazwie kategorii, reklama w nazwie tagu

I tak temat czekał sobie, aż znowu do niego przysiądę, aż tu nagle, trochę przy okazji, bo podczas rozmyślań nad innym projektem, przyszedł mi do głowy potencjalny klucz do rozwiązania i tej zagadki. Z racji tego, że sprawa dotyczy tylko niektórych artykułów, więc nie mogło chodzić o nic, co było stałym elementem każdego artykułu. To musiał być jakiś drobiazg, który łączy z pozoru niezwiązane ze sobą artykuły. Czyli tag lub kategoria.

I to był strzał w dziesiątkę. Tak wygląda w Chrome z aktywną wtyczką uBlock Origin np. ostatni wpis o błędzie podczas importowania bazy danych MySQL:

Teraz w ramach testów dodajemy tag lub kategorie z wyrazem “reklama” w nazwie (działa gdy “reklama” znajduje się tylko w nazwie tagu, tylko w nazwie kategorii, oraz zarówno w nazwie tagu i kategorii):

I mamy wynik, czyli brak artykułu:

Jest takie powiedzenie, że “nadgorliwość jest gorsza od faszyzmu” (i komunizmu), i choć raczej się z nim nie zgadzam, to tu mamy na pewno przykład nadgorliwości, która w ostatecznym rozrachunku uderza nie w autora strony, ale bezpośrednio w czytelnika, który nie zapozna się z artykułem. Tylko dlatego, że wtyczka uBlock Origin tak (nad)gorliwie szuka reklam na stronie, że blokuje cały kontener z artykułem, bo wśród nazw tagów i/lub kategorii pojawia się wyraz “reklama”.

Za całe zamieszania prawdopodobnie odpowiada “filtr statyczny” znajdujący się na liście “POL: polskie filtry do Adblocka i uBlocka”, który wygląda tak:

pl##[class*="reklama"]

A w WordPressie (i używanym przeze mnie motywie) jest tak, że zarówno tag jak i kategoria trafiają również jako nazwy klas m.in. do elementów związanych z wyświetlaniem treści. I raczej nie planuje zrezygnować z tagów i kategorii zawierających wyraz “reklama” z tego powodu. Nie dość, że wydaje mi się to bez sensu, to zapewne nie jest to też jedyny wyraz, na którym wtyczka głupieje. Przynajmniej na tej stronie.

Postanowiłem jednak wdrożyć prosty mechanizm, którego zadaniem jest wykryć sytuację, gdy kontener z artykułem został zablokowany, i wyświetlić informację dla “ofiary uBlocka/AdBlocka” o tym, że treści nie ma, bo… blokuje reklamy:

<script type="text/javascript">
 jQuery(document).ready(function($) {
 if(!$('article').is(":visible")) {
 // AdBlock info
 setTimeout(function() {
 alert("Info dla osoby z AdBlockiem/uBlockiem");
 }, 5000);
 }
 });
</script>

Powyższy kod umieszczony w nagłówku strony pilnuje elementu “article” na stronie, i gdy go nie znajdzie – bo został zablokowany – po 5 sekundach od załadowania strony wyświetli odpowiedni komunikat (po lekkiej modyfikacji kod można wykorzystać również do pilnowania blokowania faktycznych reklam).

A jak patrzę na listę domen, z których zasoby zostały zablokowane, to… Sam na niektórych (!) stronach korzystam z blokowania reklam, ale – jak we wszystkim – warto zachować w tym umiar, którego tu chyba zabrakło. Zresztą w przypadku tego artykułu na pewno pojawi się tag “reklama”, a być może i tego typu kategoria… ;-)

(!) Zgłoś błąd na stronie | Lub postaw nam kawę :-)
LUTy dla D-Cinelike (DJI Mini 3 Pro, DJI Avata, OSMO Pocket) od MiniFly
Wdrożenie Omnibusa w sklepie na WooCommerce
Jak (legalnie) latać dronem w Kategorii Otwartej
Patryk