Jag driver en webbplats för en kund där de visar en stor databas med information som de samlat ihop noggrant och långsamt under åren. De hittar sina data över nätet på olika ställen. Mer sannolikt beror det på att en skrapa går igenom sin sida sida vid sida och extraherar den information de behöver i en egen databas. Och om du undrar, vet de att det är deras data på grund av en enda plantad bit data i varje kategori på deras webbplats.
Jag har gjort mycket forskning på detta de senaste dagarna, och jag kan säga att det inte finns en perfekt fångstlösning. Jag har hittat flera saker att göra för att göra det här lite svårare för dem. Detta är vad jag implementerade för klienten.
Ajaxifierad paginerad data
Om du har mycket paginerad data, och du paginerar dina data, lägger du bara till ett annat nummer till slutet av din URL, dvs http://www.domän.com/category/programming/2 - Då gör du sökroboten jobbar så mycket lättare. Första problemet är att det är ett lätt identifierbart mönster, så det är enkelt att sätta en skrapa på dessa sidor som paj. Andra problemet, oavsett webbadressen för de efterföljande sidorna i kategorin, skulle det troligtvis finnas en nästa och tidigare länk för att de skulle låsa till.
Genom att ladda paginerade data via javascript utan en sidladdning komplicerar detta betydligt jobbet för många skrapor där ute. Google började först nyligen börja analysera javascript på sidan. Det finns liten nackdel för att ladda data så här. Du ger några mindre sidor för Google att indexera, men tekniskt sett bör paginerade data alla peka på rotkategori-sidan via kanonisering. Ajaxify dina sidor med data om data.
Randomize mallutmatning
Skrapor kommer ofta att anpassas något för dina uppgifter specifikt. De kommer att låsa till en viss div id eller klass för titeln, den tredje cellen i varje rad för din beskrivning etc. Det finns ett lätt identifierbart mönster för de flesta skrapor att arbeta med som de flesta data som kommer från samma bord, visas av samma mall. Slå ihop dina div ids och klassnamn, lägg in tomma tabellkolumner slumpmässigt med 0 bredd. Visa dina data i en tabell på en sida, i stilade divs och en kombination på en annan mall. Genom att presentera dina data förutsägbart kan den skrapas förutsägbart och noggrant.
Honungsburk
Detta är ganska snyggt i sin enkelhet. Jag har stött på den här metoden på flera sidor om att förhindra att webbplatsen skrapas.
- Skapa en ny fil på din server kallad gotcha.html.
- Lägg till följande i din robots.txt-fil:
Användaragent: *
Tillåt: /gotcha.html
Detta berättar för alla robotar och spindlar där ute och indexerar din webbplats för att inte indexera filen gotcha.html. Vilken vanlig webbrobot som helst kommer att respektera önskningarna för din robots.txt-fil och inte komma åt den filen. det vill säga Google och Bing. Du kan faktiskt vilja genomföra detta steg och vänta 24 timmar innan du går till nästa steg. Detta kommer att se till att en sökrobot inte av misstag blir blockerad av dig på grund av att det redan var mitt genomsök när du uppdaterade robots.txt-filen. - Placera en länk till gotcha.html någonstans på din webbplats. Det spelar ingen roll var. Jag skulle rekommendera i sidfoten, men se till att den här länken inte är synlig, i CSS, display: none;
- Logga in nu IP / Allmän information av Perp som besökte den här sidan och blockera dem. Alternativt kan du komma med ett manus för att ge dem felaktiga och skräppostdata. Eller kanske ett trevligt personligt meddelande från dig till dem.
Vanliga webbvisare kommer inte att kunna se länken, så det kommer inte av misstag att bli klickat. Anmärkningsvärda sökrobotar (Google till exempel) kommer att respektera dina robots.txt önskemål och inte besöka filen. Så, de enda datorerna som bör snubbla över den här sidan är de med skadliga avsikter, eller någon som tittar på din källkod och slumpmässigt klickar runt (och okej om det händer).
Det kan därför hända att det inte är en perfekt kopia av originalet. För det första fungerar många skrapor inte som vanliga webbrobotare, och upptäcker inte bara data genom att följa varje länk från varje sida på din webbplats. Skrapor är ofta byggda för att fixa på vissa sidor och följer endast vissa strukturer. Till exempel kan en skrapa startas på en kategorisida, och sedan berättade att endast besöka webbadresser med ordet / data i sluggen. För det andra, om någon kör sin skrapa på samma nätverk som andra, och det finns en gemensam IP som används, kommer du att förbjuda hela nätverket. Du skulle behöva ha en mycket populär webbplats för att detta skulle vara ett problem.
Skriv data till bilder i flygningen
Hitta ett mindre fält av data, inte nödvändigtvis långa strängar av text eftersom det kan göra styling sidan lite svårare. Utför dessa data inuti en bild, jag känner mig ganska säker på att det finns metoder på nästan varje programmeringsspråk för att skriva text till en bild dynamiskt (i php, imagettftext). Detta är förmodligen mest effektivt med numeriska värden eftersom siffror ger en mycket mer obetydlig SEO fördel.
Alternativ
Detta var inte ett alternativ för detta projekt. Kräver inloggning efter en viss mängd sidvisningar eller visar en begränsad mängd data utan att vara inloggad. Om du har 10 kolumner, visas bara 5 för användare som inte är inloggade.
Gör inte detta misstag
Stör inte för att försöka komma med en sorts lösning baserad på botens användaragent. Denna information kan enkelt spoofed av en skrapa som vet vad de gör. Google-boten kan till exempel enkelt emuleras. Du vill sannolikt inte förbjuda Google.