Anonim

Jeg kører et websted for en klient, hvor de viser en stor database med information, som de har indsamlet nøjagtigt og langsomt gennem årene. De finder deres data på nettet forskellige steder. Det skyldes mere end sandsynligt, at en skraber gennemgår deres side side for side og udtrækker de oplysninger, de har brug for, til en egen database. Og i tilfælde af at du spekulerer på, ved de, at det er deres data på grund af et enkelt plantet stykke data i hver kategori på deres websted.

Jeg har foretaget en masse research herom de sidste par dage, og jeg kan fortælle jer, at der ikke er en perfekt fangst-alt-løsning. Jeg har fundet flere ting at gøre for at gøre det lidt sværere for dem. Dette er hvad jeg implementerede for klienten.

Ajaxified paginerede data

Hvis du har en masse paginerede data, og du paginerer dine data ved blot at tilføje et andet nummer til slutningen af ​​din URL, dvs. http://www.domain.com/category/programming/2 - Så laver du crawlerens job så meget lettere. Det første problem er, at det er i et let identificerbart mønster, så det er let som en cirkel at sætte en skraber løs på disse sider. Andet problem, uanset URL-adressen på de efterfølgende sider i kategorien, vil der mere end sandsynligt være et næste og forrige link, som de kan låses fast på.

Ved at indlæse de paginerede data gennem javascript uden en sideindlæsning, komplicerer dette jobbet betydeligt for en masse skrabere derude. Google begyndte kun for nylig selv at analysere javascript på siden. Der er lille ulempe ved at genindlæse dataene som dette. Du leverer et par mindre sider, som Google kan indeksere, men teknisk set skal paginerede data alle pege på rodkategorisiden via kanonisering. Ajaxify dine sider med data.

Tilfældig skabelonoutput

Skrabere tilpasses ofte let til dine data specifikt. De hænger fast på et bestemt div id eller klasse for titlen, den 3. celle i hver række til din beskrivelse osv. Der er et let identificerbart mønster for de fleste skrabere at arbejde med, da de fleste data, der kommer fra den samme tabel, vises med den samme skabelon. Tilfælde dine div-id'er og klassenavne, indsæt tomme tabelkolonner tilfældigt med 0 bredde. Vis dine data i en tabel på en side, i stilformede divs og en kombination på en anden skabelon. Ved at præsentere dine data forudsigeligt kan de skrabes forudsigeligt og nøjagtigt.

Honningkrukke

Dette er temmelig pænt i sin enkelhed. Jeg har fundet denne metode på adskillige sider om at forhindre skrabning af websteder.

  • Opret en ny fil på din server kaldet gotcha.html.
  • Tilføj følgende i din robots.txt-fil:
    Bruger-agent: *
    Afvis: /gotcha.html

    Dette fortæller alle robotter og edderkopper derude, der indekserer dit websted, så de ikke indekserer filen gotcha.html. Enhver normal webcrawler vil respektere dine robots.txt-filers ønsker og ikke få adgang til denne fil. dvs. Google og Bing. Du ønsker måske faktisk at implementere dette trin og vente 24 timer, før du går til næste trin. Dette vil sikre, at en crawler ved et uheld ikke blokeres af dig på grund af det faktum, at det allerede var midt i gennemsøgningen, da du opdaterede din robots.txt-fil.
  • Placer et link til gotcha.html et eller andet sted på din hjemmeside. Ligegyldigt hvor. Jeg vil anbefale i sidefoden, men sørg for, at dette link ikke er synligt, i CSS, display: ingen;
  • Log nu IP / generel information for den perp, der besøgte denne side og blokerer dem. Alternativt kan du komme med et script for at give dem forkerte data og affaldsdata. Eller måske en dejlig personlig besked fra dig til dem.

Regelmæssige web-seere kan ikke se linket, så det ikke ved et uheld bliver klikket. Anerkendte crawlere (f.eks. Google) vil respektere dine robots.txt ønsker og ikke besøge filen. Så de eneste computere, der skal snuble over denne side, er dem med ondsindede intentioner, eller nogen der ser din kildekode og tilfældigt klikker rundt (og åh, hvis det sker).

Der er et par grunde til, at dette muligvis ikke altid fungerer. For det første fungerer en masse skrabere ikke som normale webcrawlere, og opdager ikke bare dataene ved at følge hvert link fra hver side på dit websted. Skrabere er ofte bygget til at fikse på visse sider og følger kun visse strukturer. For eksempel kan en skraber muligvis startes på en kategoriside og derefter kun få besked om at besøge URL'er med ordet / dataene i sneglen. For det andet, hvis nogen kører deres skraber på det samme netværk som andre, og der er en delt IP, der bruges, vil du have forbudt hele netværket. Du bliver nødt til at have et meget populært websted for at dette kan være et problem.

Skriv data til billeder mens du er på farten

Find et mindre datafelt, ikke nødvendigvis lange tekststrenge, da dette kan gøre stylingen af ​​siden lidt vanskeligere. Output disse data inde i et billede, jeg føler mig ganske sikker på, at der findes metoder i næsten ethvert programmeringssprog til at skrive tekst til et billede dynamisk (i php, imagettftext). Dette er sandsynligvis mest effektivt med numeriske værdier, da tal giver en meget mere ubetydelig SEO fordel.

Alternativ

Dette var ikke en mulighed for dette projekt. Kræver et login efter en vis mængde sidevisninger eller viser en begrænset mængde data uden at være logget ind. Dvs. hvis du har 10 kolonner, skal du kun vise 5 til ikke-loggede brugere.

Foretag ikke denne fejl

Gid ikke med at forsøge at komme med en slags løsning baseret på botens brugeragent. Disse oplysninger kan let forfalskes af en skraber, der ved, hvad de laver. Google bot for eksempel kan let emuleres. Du ønsker sandsynligvis ikke at forbyde Google.

Forhindrer skrabning af websteder