Prowadzę stronę internetową dla klienta, w której wyświetla dużą bazę danych, które gromadzili dokładnie i powoli przez lata. Znajdują swoje dane w Internecie w różnych miejscach. Bardziej niż prawdopodobne jest to spowodowane tym, że skrobak przechodzi przez ich stronę strona po stronie i wyodrębnia potrzebne informacje do własnej bazy danych. A jeśli się zastanawiasz, wiedzą, że to ich dane z powodu jednego posadzonego fragmentu danych w każdej kategorii w ich witrynie.
W ciągu ostatnich kilku dni przeprowadziłem wiele badań na ten temat i mogę powiedzieć, że nie ma idealnego rozwiązania typu catch-all. Znalazłem jednak kilka rzeczy, które mogą utrudnić im osiągnięcie tego celu. To właśnie wdrożyłem dla klienta.
Ajaxified paginated data
Jeśli masz dużo stronicowanych danych i paginujesz swoje dane, po prostu dodając inny numer na końcu swojego adresu URL, np. Http://www.domain.com/category/programming/2 - to robisz praca robota jest o wiele łatwiejsza. Pierwszy problem polega na tym, że ma łatwo rozpoznawalny wzór, więc ustawienie luźnego skrobaka na tych stronach jest łatwe jak ciasto. Drugi problem, bez względu na adres URL kolejnych stron w kategorii, bardziej niż prawdopodobne, że będzie tam następny i poprzedni link, aby się do niego przyczepić.
Załadowanie stronicowanych danych za pomocą javascript bez przeładowania strony znacznie komplikuje pracę wielu skrobaków. Google dopiero niedawno zaczął parsować javascript na stronie. Ponowne ładowanie danych w ten sposób jest niewielkie. Udostępniasz Google kilka stron do zaindeksowania, ale technicznie, paginowane dane powinny i tak wskazywać na stronę kategorii głównej poprzez kanonizację. Ajaxify stronicowane strony danych.
Losowe wyjście szablonu
Skrobaki będą często nieco dostosowane do twoich danych. Będą zaczepiać się o określony identyfikator div lub klasę dla tytułu, trzecią komórkę w każdym rzędzie opisu, itp. Istnieje łatwy do zidentyfikowania wzór dla większości skrobaczek do pracy z większością danych pochodzących z tej samej tabeli, jest wyświetlany przez ten sam szablon. Randomizuj swoje identyfikatory div i nazwy klas, losowo wstaw puste kolumny tabeli o szerokości 0. Pokaż swoje dane w tabeli na jednej stronie, w stylowych divach i kombinacji na innym szablonie. Prezentując dane w sposób przewidywalny, można je zeskrobać w sposób przewidywalny i dokładny.
Garnek miodu
Jest to dość schludne w swojej prostocie. Na kilku stronach natknąłem się na tę metodę zapobiegania skrobaniu witryn.
- Utwórz nowy plik na serwerze o nazwie gotcha.html.
- W pliku robots.txt dodaj:
Agent użytkownika: *
Disallow: /gotcha.html
Mówi to wszystkim robotom i pająkom, które indeksują witrynę, aby nie indeksować pliku gotcha.html. Każdy normalny robot indeksujący będzie szanował życzenia pliku robots.txt i nie uzyska dostępu do tego pliku. tj. Google i Bing. Możesz faktycznie wdrożyć ten krok i poczekać 24 godziny przed przejściem do następnego kroku. Zapewni to, że przeszukiwacz nie zostanie przez ciebie przypadkowo zablokowany z powodu faktu, że był już w trakcie przeszukiwania podczas aktualizacji pliku robots.txt. - Umieść link do gotcha.html gdzieś na swojej stronie. Nie ważne gdzie. Poleciłbym jednak w stopce upewnić się, że ten link nie jest widoczny, w CSS display: none;
- Teraz zaloguj IP / informacje ogólne sprawcy, który odwiedził tę stronę i zablokuj je. Alternatywnie możesz wymyślić skrypt, który dostarczy im niepoprawne i śmieciowe dane. A może miła osobista wiadomość od nich.
Zwykli przeglądający strony nie będą widzieć linku, więc nie zostanie przypadkowo kliknięty. Renomowane roboty (na przykład Google) będą szanować życzenia pliku robots.txt i nie odwiedzą pliku. Tak więc jedynymi komputerami, które powinny natknąć się na tę stronę, są komputery ze złośliwymi intencjami lub ktoś oglądający kod źródłowy i losowo klikający (i cóż, jeśli tak się stanie).
Jest kilka powodów, dla których to nie zawsze działa. Po pierwsze, wiele skrobaków nie działa jak normalne roboty indeksujące i nie tylko odkrywa dane, podążając za każdym linkiem z każdej strony w Twojej witrynie. Skrobaki są często budowane w celu naprawy na niektórych stronach i podążania tylko za pewnymi strukturami. Na przykład skrobak może zostać uruchomiony na stronie kategorii, a następnie polecony tylko odwiedzić adresy URL ze słowem / danymi w ślimaku. Po drugie, jeśli ktoś uruchamia swój skrobak w tej samej sieci, co inne, a używany jest wspólny adres IP, zablokujesz całą sieć. Musisz mieć bardzo popularną stronę internetową, aby to stanowiło problem.
Zapisuj dane do zdjęć w locie
Znajdź mniejsze pole danych, niekoniecznie długie ciągi tekstu, ponieważ może to utrudnić stylizację strony. Wyjście tych danych w obrazie, jestem przekonany, że istnieją metody w prawie każdym języku programowania do dynamicznego pisania tekstu na obrazie (w php, imagettftext). Jest to prawdopodobnie najbardziej skuteczne w przypadku wartości liczbowych, ponieważ liczby zapewniają znacznie mniej znaczącą przewagę SEO.
Alternatywny
To nie była opcja dla tego projektu. Wymaganie logowania po określonej liczbie odsłon lub wyświetlanie ograniczonej ilości danych bez zalogowania się, tj. Jeśli masz 10 kolumn, wyświetlaj tylko 5 niezalogowanym użytkownikom.
Nie popełnij tego błędu
Nie zawracaj sobie głowy próbą znalezienia rozwiązania opartego na kliencie użytkownika bota. Informacje te mogą łatwo zostać sfałszowane przez skrobaczkę, która wie, co robią. Na przykład bot google można łatwo emulować. Prawdopodobnie nie chcesz banować Google.