Jak blokować pająki Baidu

15

Większość moich wizyt pochodzi od pająków baidu. Nie wydaje mi się, żeby to w ogóle pomogło wyszukiwarkom, więc myślę o tym, jak je zablokować. Czy można to zrobić za pomocą iptables? Używam nginx jako mojego serwera.

Zhianc
źródło
2
dlaczego nie powinienem Nie chcę chińskiego ruchu.
Zhianc,
6
Nie mówię, że nie powinieneś, pytam po co w ogóle się martwić. Czy oni cię w jakiś sposób krzywdzą? Czy nie jest łatwiej po prostu zignorować? „Nie chcę chińskiego ruchu” nie jest tutaj odpowiedzią, tylko ksenofobią z pogranicza. A blokowanie jednej wyszukiwarki nie jest prawie tym samym, co blokowanie chińskiego, więc naprawdę nie masz sensu. Wydawało mi się, że szukałeś rozwiązania opartego na wadliwym problemie. Ale najwyraźniej chcesz po prostu arbitralnie zablokować pająka, więc myślę, że śmiało.
Su '
7
@Su 'Odkryłem, że pająk baidu bardzo agresywnie zaindeksował na mojej stronie, powodując utrudnienia dla legalnego ruchu. Co więcej, odkryłem również, że pająk baidu nie przestrzega robots.txtzasad.
starbeamrainbowlabs
2
Dostaję około 1-2 trafień na sekundę od rzekomych pająków Baidu. Każde trafienie generuje nowy plik sesji na moim serwerze. Mam skrypt do usuwania tych plików sesji, ale te pająki również przeciążają mój serwer MySQL. Zdecydowanie chcę je zablokować.
Buttle Butkus
2
Może potwierdzić, że baiduspider lub coś udającego baiduspider indeksuje witryny nieetycznie i ignoruje dyrektywy robots.txt.
JMC

Odpowiedzi:

8

W pliku robots.txt dodaj

#Baiduspider
User-agent: Baiduspider
Disallow: /

#Yandex
User-agent: Yandex
Disallow: /
Anagio
źródło
5
Co jeśli nie szanują pliku robots.txt?
Zhianc,
5
Wiem, że dostęp do „Baiduspider / 2.0” z chińskich adresów IP nie jest zgodny z plikiem robots.txt w mojej witrynie. Ponadto często używają skoordynowanych dostępów (kilka minut od siebie) z tego samego bloku adresu IP, które nie używają identyfikatora agenta użytkownika „Baiduspider”.
mgkrebbs
Yandex przestrzega pliku robots.txt Miałem je zablokowane, dopóki nie zdaliśmy sobie sprawy, że duża część naszej działalności pochodzi z Rosji i musiałem usunąć blok. Baidu, musisz sprawdzić blokady sieci. Nie wszystkie ogłoszone przez Baidu UA to Baidu, więc musisz zrobić blok robots.txt dla legalnego ruchu Baidu, a następnie wykonać blok znaków UA w twoim .htaccess na to, co pozostało, a następnie zmarnować swoje życie, blokując identyfikację bloku i odmowę dla reszta, która omija blok ciągów UA. To tyle samo pracy, co rozbudowanie serwera w celu zwiększenia ruchu.
Fiasco Labs
2
Mam User-agent: *i nadal mam dostęp do baiduspider.
reinierpost
3
Yandex to inna wyszukiwarka dla rynku rosyjskiego, więc włączenie jej tutaj, gdy pytanie w ogóle o to nie pyta, i bez napisania o tym czegoś jest nieco nieodpowiedzialne.
Collector
7

Właśnie pomyślnie zablokowałem chińskiego robota wyszukiwania Baiduspider dostęp do jakiejkolwiek treści na mojej stronie. Podjąłem decyzję o tym z następujących powodów.

Powody podjęcia decyzji o zablokowaniu

  1. W przybliżeniu co 20 próśb na mój serwer pochodziło od baidu bota. To jest nieuprzejme zachowanie. Baidubot stanowi 5% wykorzystania przepustowości moich witryn.
  2. Dokładam wszelkich starań, aby zasoby w mojej witrynie były niewielkie i wykorzystywałem technologię, taką jak buforowanie przeglądarki, aby uzyskać niewielkie wygrane w szybkości i przepustowości. Logiczne jest rozważenie uwolnienia tych 5% poprzez zablokowanie Baidubota.
  3. Możliwość utraty części chińskiego ruchu stanowi akceptowalne ryzyko dla firmy, ponieważ treść witryny jest specyficzna geograficznie dla Wielkiej Brytanii, nie ma chińskiej wersji językowej, a przychody są generowane z reklam kierowanych na rynek brytyjski.

Mam więc nadzieję, że Su i inni zaniepokojeni ksenofobią zrozumieją, że ta decyzja jest chłodną odpowiedzią na nieliczną liczbę próśb.

metoda

Baiduspider uzyskuje dostęp do mojego serwera przy użyciu wielu różnych adresów IP, ale adresy te mieszczą się w określonych zakresach. Zatem mój plik .htaccess zawiera teraz następujące wiersze:

order allow,deny 
allow from all
# Block access to Baiduspider 
deny from 180.76.5.0/24 180.76.6.0/24 123.125.71.0/24 220.181.108.0/24 

Dolna linia zasadniczo opisuje 4 zakresy adresów IP, w których znam Baiduspider i TYLKO Baiduspider uzyskuje dostęp do mojego serwera. Każdy z 4 zakresów ma 256 kolejnych adresów (łącznie 1024). Uwaga: składnia zakresów IP w deny from...linii może być bardzo myląca, jeśli nie odczytano zakresów CIDR. Po prostu zrozum, że 0/24oznacza zakres 256, zaczynając od 0, więc 180.76.5.0/24właściwie każdy adres IP pomiędzy 180.76.5.0i 180.76.5.255. Tak, nie jest to szczególnie oczywiste! Ale jeśli chcesz dowiedzieć się, dlaczego lub po prostu czujesz się zdezorientowany, odwiedź http://www.mediawiki.org/wiki/Help:Range_blocks

streszczenie

Internet powinien być bezpłatny, otwarty i uczciwy. Ale to oznacza, że ​​organizacje takie jak Baidu uczą się przestrzegać pliku Robots.txt i są mniej chciwe w regularności pełzania. Moje rozwiązanie polega na majstrowaniu przy bardzo zaawansowanych ustawieniach, więc zanim zaczniesz bawić się plikiem .htaccess, pamiętaj o utworzeniu kopii zapasowej oryginału, gotowej do wycofania, jeśli zdejmiesz serwer w blasku chwały. Postępuj na własne ryzyko.

Martin Joiner
źródło
ich bloki adresów IP mogą się zmieniać, więc wymaga to od czasu do czasu konserwacji
asgs
5

Możesz użyć poniższej dyrektywy, robots.txtaby zabronić indeksowania witryny.

# robots.txt
User-agent: Baiduspider
Disallow: /

Jednak roboty mogą zdecydować o zignorowaniu zawartości pliku robots.txt. Ponadto plik może być buforowany przez wyszukiwarki, a odzwierciedlenie zmian zajmuje trochę czasu.

Najbardziej efektywnym podejściem jest wykorzystanie możliwości serwera. Dodaj następującą regułę do nginx.confpliku, aby zablokować Baidu na poziomie serwera.

if ($http_user_agent ~* ^Baiduspider) {
  return 403;
}

Pamiętaj, aby ponownie uruchomić lub ponownie załadować Nginx, aby zastosować zmiany.

Simone Carletti
źródło
3

Właśnie postanowiłem zablokować Baidu, ponieważ ruch, który nam zapewniał, był zbyt znikomy dla ich agresywnego skanowania. Ponadto obsługują teraz agenta, który podszywa się pod przeglądarkę i uruchamia kod JavaScript (np. Google Analytics) i popsuł nasze statystyki.

Ładna wersja aktualizuje plik robots.txt za pomocą następujących

User-agent: Baiduspider
Disallow: /
User-agent: Baiduspider-video
Disallow: /
User-agent: Baiduspider-image
Disallow: /

Ale biorąc pod uwagę to, co napisali tutaj inni użytkownicy korzystający z klienta użytkownika, który ukrywa ich obecność, całkowicie zablokowałbym ich adresy IP. Oto jak to się robi w Nginx

# Baidu crawlers
deny 123.125.71.0/24;
deny 180.76.5.0/24;
deny 180.76.15.0/24;
deny 220.181.108.0/24;
Kolektor
źródło
2

Rozwiązanie Wordpress (nie najlepsze, ale pomaga)

Ten sam problem z pająkiem Biadu, tak agresywny, że moje pudełko zajęło ponad 35 miejsce w mojej konsoli przy użyciu top. Oczywiście nawet szybki komputer nie jest w stanie skutecznie obsłużyć zewnętrznych żądań działających w wieku 35 lat ...

Prześledziłem liczbę adresów IP (z tego budynku uniwersyteckiego ????) do kilkuset, głównie z dwoma użytkownikami)

Bezpośrednia konsekwencja? Ponieważ mam serwer w chmurze, musiałem zaktualizować to samo do wyższej pamięci, aby umożliwić odmowną odpowiedź.

Poprzednia odpowiedź:

#Baiduspider
User-agent: Baiduspider
Disallow: /

Baidu wydaje się całkowicie niezdolny do przestrzegania wskazania pliku robot.txt.

Co ja zrobiłem:

Zainstalowałem wtyczkę WP-Ban dla Wordpress (bezpłatny) i zablokowałem następujące:

AGENCI UŻYTKOWNIKA:

  • Baiduspider+(+http://www.baidu.com/search/spider.htm)

  • Mozilla/5.0 (compatible; Baiduspider/2.0; +http://www.baidu.com/search/spider.html)

Ponadto za pomocą Wp Super Cache I ponownie adresuję względną stronę błędu na stronę statyczną, dlatego cała instalacja wordpress nie / lub przynajmniej tylko dla zbanowanych użytkowników sprawdza moduł danych Mysql.

(Jest to standardowa blablabla Wordpressa, więc każdy, kto może zainstalować wtyczkę Wordpress, może to zrobić, ponieważ do tej procedury nie jest wymagany dostęp do kodu ani ftp)

Zgadzam się ze wszystkimi: Internet jest bezpłatny, banowanie kogokolwiek lub cokolwiek jest absolutnie ostatnią rzeczą, którą każdy powinien zrobić, ale Baidoo kosztuje mnie dziś o 40 USD więcej miesięcznie, tylko po to, aby pająkować stronę internetową napisaną w języku portugalskim, i mam wątpliwości, czy istnieją wielu Chińczyków i odwiedzających potrafi czytać i rozumieć ten język.

Claudio Klemp
źródło
1

Możesz zablokować według adresu IP, używając ngx_http_access_modulenginx. Aby zablokować pojedynczy adres IP, możesz dodać linię do pliku conf, np

deny 12.34.567.1;

Aby zablokować zakres, użyj notacji CIDR , podobnie jak 12.34.567.1/24w 24-bitowym bloku podsieci (256 adresów IP), który zawiera adres IP 12.34.567.1. Aby uzyskać więcej informacji, zobacz na przykład tę stronę .

mgkrebbs
źródło
1

Użyj .htaccess z

RewriteEngine On
RewriteCond %{HTTP_USER_AGENT} ^.*MJ12bot [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^.*Baidu [NC]
RewriteRule .*  - [L,F]

„RewriteEngine On” pozwala na prawidłowe parsowanie następujących linii. HTTP_USER_AGENT to linia, w której pająki się identyfikują. Warunek jest spełniony, jeśli wiersz zawiera „MJ12bot” lub „Baidu”. NC oznacza „bez rozróżniania wielkości liter” i możesz połączyć łańcuchy za pomocą OR. Ostatni wiersz nie może zawierać „LUB” lub reguła nie działa.

Baidu jest szczególnie nieprzyjemny, ponieważ próbuje odczytać wpisy Wordpress („fckeditor”, „wp-content”), dla których nie ma absolutnie żadnego powodu. MJ12bot jest również jednym ze złych stworzeń.

Reguła Przepisz oznacza zablokowanie pająka za pomocą 403 Forbidden ([F]), aby uzyskać dostęp do wszystkich plików (. * To wyrażenie regularne dla dowolnego pliku) i zatrzymać dalszą ocenę ([L]) htaccess.

Thorsten S.
źródło
1
FFlaga oznacza L, dzięki czemu nie trzeba jawnie zawierać Lflagę tutaj. Również wzór podobny ^.*Baidujest taki sam jak zwykły Baidu.
MrWhite