Provozuji webové stránky pro klienta, kde zobrazují rozsáhlou databázi informací, které v průběhu let shromažďovaly přesně a pomalu. Na různých místech vyhledávají svá data na webu. Více než pravděpodobné je to díky škrabce, která prochází jejich stránkou po stránce a extrahuje informace, které potřebují, do vlastní databáze. A v případě, že by vás zajímalo, vědí, že jsou to jejich data, a to díky jedinému vysazenému kusu dat v každé kategorii na jejich webu.
V uplynulých několika dnech jsem o tom provedl mnoho výzkumů a mohu vám říci, že neexistuje dokonalé řešení typu „catch-all“. Našel jsem však několik věcí, abych to pro ně udělal trochu těžší. To je to, co jsem implementoval pro klienta.
Ajaxifikovaná stránkovaná data
Pokud máte velké množství stránkovaných dat a vy stránkujete svá data pouhým připojením jiného čísla na konec své adresy URL, tj. Http://www.domain.com/category/programming/2 - Pak děláte práci prolézacího modulu mnohem jednodušší. Prvním problémem je jeho snadno identifikovatelný vzor, takže nastavení škrabky na těchto stránkách je snadné jako koláč. Druhý problém, bez ohledu na adresu URL následujících stránek v kategorii, s větší pravděpodobností by existoval další a předchozí odkaz, na který by se mohly připojit.
Načtením stránkovaných dat pomocí javascriptu bez opětovného načtení stránky to významně komplikuje práci pro spoustu škrabek tam. Google jen nedávno začal analyzovat javascript na stránce. Neexistuje malá nevýhoda při opětovném načtení takových dat. Poskytujete Googlu několik méně stránek k indexování, ale technicky by měla být stránená data technicky směřována na stránku kořenové kategorie prostřednictvím kanonizace. Ajaxify vaše stránkované stránky dat.
Randomize výstup šablony
Škrabky budou často mírně přizpůsobeny vašim datům. Zamknou se k určitému div idu nebo třídě pro titul, 3. buňce v každém řádku pro váš popis atd. Existuje snadno identifikovatelný vzor pro většinu scrapersů, se kterými pracuje jako většina dat, která pocházejí ze stejné tabulky, se zobrazí stejnou šablonou. Randomizujte svá čísla div a názvy tříd, vložte náhodně sloupce tabulky s šířkou 0. Zobrazte svá data v tabulce na jedné stránce, ve stylu divs a kombinaci na jiné šabloně. Předvídatelným prezentováním svých dat je lze předvídat a přesně škrábat.
Hrnec medu
Ve své jednoduchosti je to hezké. S touto metodou jsem se setkal na několika stránkách o prevenci škrábání stránek.
- Vytvořte na serveru nový soubor s názvem gotcha.html.
- Do souboru robots.txt přidejte následující:
User-agent: *
Disallow: /gotcha.html
To říká všem robotům a pavoukům, kteří tam indexují váš web, aby neindexovali soubor gotcha.html. Jakýkoli normální webový prohledávač bude respektovat přání vašeho souboru robots.txt a nebude k němu přistupovat. tj. Google a Bing. Možná budete chtít implementovat tento krok a počkat 24 hodin, než přejdete na další krok. Tím zajistíte, že vás prolézací modul náhodně nezablokuje kvůli skutečnosti, že při aktualizaci souboru robots.txt byl již procházen v polovině. - Umístěte odkaz na gotcha.html někde na svém webu. Nezáleží na tom, kde. Doporučil bych v zápatí, ale ujistěte se, že tento odkaz není viditelný, v CSS, display: none;
- Nyní přihlaste IP / obecné informace o osobě, která navštívila tuto stránku, a zablokujte je. Případně můžete přijít s skriptem, který jim poskytne nesprávná a odpadková data. Nebo možná příjemná osobní zpráva od vás k nim.
Pravidelní návštěvníci webu neuvidí odkaz, takže na něj nebude náhodně kliknuto. Renomovaní prohledávače (například Google) budou respektovat přání vašeho souboru robots.txt a soubor nenavštíví. Jediné počítače, které by se na této stránce měly zakopnout, jsou tedy počítače se škodlivými úmysly nebo někdo, kdo si prohlíží váš zdrojový kód a náhodně klikne (a pokud se tak stane).
Existuje několik důvodů, proč to nemusí vždy fungovat. Nejprve mnoho škrabek nefunguje jako normální webový prohledávač a data nejen objevují sledováním každého odkazu z každé stránky na vašem webu. Škrabky jsou často postaveny tak, aby se daly opravit na určitých stránkách a sledovat pouze určité struktury. Například škrabka by mohla být spuštěna na stránce kategorií a poté by bylo řečeno, aby navštívili pouze adresy URL se slovem / daty v slug. Zadruhé, pokud někdo spouští škrabku ve stejné síti jako ostatní a používá se sdílená IP adresa, bude zakázána celá síť. Museli byste mít velmi populární web, aby to byl problém.
Zápis dat do obrazů za běhu
Najděte menší pole dat, ne nutně dlouhé řetězce textu, protože by to mohlo ztížit stylování stránky. Výstupem těchto dat uvnitř obrazu se cítím docela jistý, že v každém programovacím jazyce existují metody, jak dynamicky psát text do obrázku (v php, imagettftext). To je pravděpodobně nejúčinnější s číselnými hodnotami, protože čísla poskytují mnohem nevýznamnější výhodu SEO.
Alternativní
Pro tento projekt to nebyla možnost. Vyžadování přihlášení po určitém počtu zobrazení stránek nebo zobrazení omezeného množství dat bez přihlášení. To znamená, že pokud máte 10 sloupců, zobrazí se pouze 5 uživatelům, kteří nejsou přihlášeni.
Nedělejte tuto chybu
Neobtěžujte se snaží přijít s nějakým druhem řešení založeného na uživatelském agentu robota. Tuto informaci může snadno podvrhnout škrabka, která ví, co dělají. Například robot Google lze snadno napodobit. Více než pravděpodobné nechcete Google zakázat.
