maciejtarmas / AlleBlock

Zestaw reguł do popularnych wtyczek blokujących reklamy, obsługujących składnię Adblock. Usuwa zbędne elementy serwisu Allegro, nie ograniczając jego funkcjonalności.
https://alleblock.pl
30 stars 7 forks source link

Filtr Alleblock nie można popbrać za pomocą skryptów #24

Closed wmyrda closed 6 years ago

wmyrda commented 6 years ago

Pozwolę sobie przedstawić problem który wcześniej zgłosiłem w nie do końca odpowiednim miejscu.

Chociaż w przeglądarce filtr wyświetla się poprawnie, to skrypt adblock2privoxy wyrzuca przy nim następujący błąd o braku uprawnień do pobrania

process https://alleblock.pl/alleblock/alleblock.txt
load https://alleblock.pl/alleblock/alleblock.txt (5 more attempts)...
adblock2privoxy: HttpExceptionRequest Request {
  host                 = "alleblock.pl"
  port                 = 443
  secure               = True
  requestHeaders       = []
  path                 = "/alleblock/alleblock.txt"
  queryString          = ""
  method               = "GET"
  proxy                = Nothing
  rawBody              = False
  redirectCount        = 10
  responseTimeout      = ResponseTimeoutDefault
  requestVersion       = HTTP/1.1
}
 (StatusCodeException (Response {responseStatus = Status {statusCode = 403, statusMessage = "Forbidden"}, responseVersion = HTTP/1.1, responseHeaders = [("Set-Cookie","mailplanBAK=R2555565549; path=/; expires=Sun, 03-Jun-2018 08:01:38 GMT"),("Date","Sun, 03 Jun 2018 06:50:58 GMT"),("Content-Type","text/html; charset=iso-8859-1"),("Content-Length","232"),("Set-Cookie","mailplan=R243202240; path=/; expires=Sun, 03-Jun-2018 08:02:29 GMT"),("Server","Apache"),("X-IPLB-Instance","513")], responseBody = (), responseCookieJar = CJ {expose = [Cookie {cookie_name = "mailplan", cookie_value = "R243202240", cookie_expiry_time = 2018-06-03 08:02:29 UTC, cookie_domain = "alleblock.pl", cookie_path = "/", cookie_creation_time = 2018-06-03 06:51:02.281912109 UTC, cookie_last_access_time = 2018-06-03 06:51:02.281912109 UTC, cookie_persistent = True, cookie_host_only = True, cookie_secure_only = False, cookie_http_only = False},Cookie {cookie_name = "mailplanBAK", cookie_value = "R2555565549", cookie_expiry_time = 2018-06-03 08:01:38 UTC, cookie_domain = "alleblock.pl", cookie_path = "/", cookie_creation_time = 2018-06-03 06:51:02.281912109 UTC, cookie_last_access_time = 2018-06-03 06:51:02.281912109 UTC, cookie_persistent = True, cookie_host_only = True, cookie_secure_only = False, cookie_http_only = False}]}, responseClose' = ResponseClose}) "<!DOCTYPE HTML PUBLIC \"-//IETF//DTD HTML 2.0//EN\">\n<html><head>\n<title>403 Forbidden</title>\n</head><body>\n<h1>Forbidden</h1>\n<p>You don't have permission to access /alleblock/alleblock.txt\non this server.<br />\n</p>\n</body></html>\n")

Zwykły linuksowy wget ma podobnie

wget https://alleblock.pl/alleblock/alleblock.txt
--2018-06-03 08:51:32--  https://alleblock.pl/alleblock/alleblock.txt
Translacja alleblock.pl... 87.98.239.3
Łączenie się z alleblock.pl|87.98.239.3|:443... połączono.
Żądanie HTTP wysłano, oczekiwanie na odpowiedź... 403 Forbidden
2018-06-03 08:51:32 BŁĄD 403: Forbidden.

Najprawdopodobniej mod_security na serwerze lub podobny moduł jest ustawiony nieco zbyt restrykcyjnie w związku z czym utrudnione jest przygotowanie filtrów dla privoxy z wykorzystaniem tych reguł.

maciejtarmas commented 6 years ago

Tak samo curl pod macOS.

screen shot 2018-06-03 at 18 23 13

Odezwę się do @ovh, niech się odniosą do tego.

Alternatywnie możesz spróbować pociągnąć z GitHuba:

https://raw.githubusercontent.com/maciejtarmas/AlleBlock/master/alleblock.txt

maciejtarmas commented 6 years ago

OK, widzę co się dzieje. OVH sprawdza, czy w nagłówku HTTP przesyłany jest user agent przeglądarki. Jeśli nie, to wywala błąd 403. I tego pewnie nie przeskoczymy.

Używając curl, można to obejść udając jakąś przeglądarkę, np:

curl -A "Mozilla/5.0 (Windows; U; Windows NT 5.1; de; rv:1.9.2.3) Gecko/20100401 Firefox/3.6.3" https://alleblock.pl/alleblock/alleblock.txt

Wget ma analogiczną opcję.

W każdym razie pytanie, czy można zmusić adblock2privoxy do wysłania nagłówka z polem user agent. Z tego, co wkleiłeś, to wydaje mi się, że taka możliwość powinna być, bo jest linia requestHeaders = [], gdzie w teorii można by coś podstawić.

Powinno to pewnie wyglądać tak:

requestHeaders = [User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:12.0) Gecko/20100101 Firefox/12.0]

wmyrda commented 6 years ago

OK, dzięki za sprawdzenie choć to dziwne, że tak sami od siebie takie blokady stosują. Nie spotkałem się z tym wcześniej. Co do stosowania user-agenta to można, ale wygodniej mnie będzie pozostać przy linku z githuba. Ten na szczęście działa niezawodnie. Podsumowując można problem obejść na dwa sposoby, ale by uznać go za rozwiązany to ciężko mnie się pod nim podpisać ;)

maciejtarmas commented 6 years ago

Sprawdziłem jeszcze, czy w plikach htaccess nie mam czegoś, co mogłoby blokować zapytania bez pola user agent, ale nie.

Na razie zgłosiłem temat do OVH i czekam, co odpowiedzą.

Ja wiem, że na razie proponowane przeze mnie rozwiązania są raczej obejściem problemu, ale wolałbym jednak uniknąć zmiany hostingu :)

maciejtarmas commented 6 years ago

Powinno być już OK. Miałem na domenie włączony firewall. Sprawdź, proszę.

wmyrda commented 6 years ago

gra i buczy!