Nagpapatakbo ako ng isang website para sa isang kliyente kung saan ipinapakita nila ang isang malaking database ng impormasyon na natipon nila nang tumpak at mabagal sa mga nakaraang taon. Hinahanap nila ang kanilang data sa buong web sa iba't ibang mga lugar. Higit sa malamang na dahil sa isang scraper na dumadaan sa kanilang pahina ng site sa pamamagitan ng pahina at kunin ang impormasyong kailangan nila sa isang database ng kanilang sarili. At kung sakaling nagtataka ka, alam nila na ang kanilang data dahil sa isang solong nakatanim na piraso ng data sa bawat kategorya sa kanilang site.
Marami akong nagawa na pagsasaliksik tungkol dito sa nakaraang mga araw, at masasabi ko sa iyo na walang perpektong solusyon sa catch-all. Natagpuan ko ang maraming bagay na dapat gawin upang maisagawa ito nang medyo mahirap para sa kanila gayunpaman. Ito ang ipinatupad ko para sa kliyente.
Ajaxified paginated data
Kung mayroon kang maraming mga pagined data, at pagising mo ang iyong data sa pamamagitan ng pag-apid lamang ng ibang numero hanggang sa katapusan ng iyong URL, ibig sabihin, http://www.domain.com/category/programming/2 - Pagkatapos ay gumagawa ka ang trabaho ng crawler na mas madali. Ang unang problema ay, ito sa isang madaling makikilalang pattern, kaya ang pagtatakda ng isang scraper na maluwag sa mga pahinang ito ay madali bilang pie. Pangalawang problema, anuman ang URL ng mga kasunod na pahina sa kategorya, higit sa malamang na magkakaroon ng susunod at nakaraang link para sa kanila upang mai-on ang.
Sa pamamagitan ng paglo-load ng pagined data sa pamamagitan ng javascript na walang pag-reload ng isang pahina, makabuluhang kumplikado nito ang trabaho para sa maraming mga scrapers na naroon. Kamakailan lamang ay sinimulan ng Google ang pag-parse ng javascript sa pahina. Mayroong maliit na kawalan ng pag-reload ng data na tulad nito. Nagbibigay ka ng ilang mas kaunting mga pahina para ma-index ng Google, ngunit, sa teknikal, ang paginated data ay dapat na lahat ay tumuturo sa pahina ng kategorya ng ugat sa pamamagitan ng canonicalization. Huwag pahintulutan ang iyong paged page ng data.
Randomize ang output ng template
Ang mga scroll ay madalas na bahagyang ipasadya para sa iyong data na partikular. Dadalhin nila ito sa isang tiyak na div id o klase para sa pamagat, ang ika-3 cell sa bawat hilera para sa iyong paglalarawan, atbp. Mayroong madaling pagkakakilanlan na pattern para sa karamihan ng mga scraper na magtrabaho kasama ang karamihan sa mga data na nagmumula sa parehong talahanayan, ay ipinapakita ng parehong template. Ipasadya ang iyong mga id id at mga pangalan ng klase, ipasok ang mga blangko na talahanayan ng talahanayan nang random nang 0 lapad. Ipakita ang iyong data sa isang talahanayan sa isang pahina, sa mga naka-istilong div at isang kumbinasyon sa isa pang template. Sa pamamagitan ng paglalahad ng iyong data, maaari itong ma-scrap nang mahulaan at tumpak.
HoneyPot
Ito ay medyo maayos sa pagiging simple nito. Nakita ko ang pamamaraang ito sa ilang mga pahina tungkol sa pagpigil sa pag-scrape ng site.
- Lumikha ng isang bagong file sa iyong server na tinatawag na gotcha.html.
- Sa iyong robots.txt file, idagdag ang sumusunod:
Ahente ng gumagamit: *
Disallow: /gotcha.html
Sinasabi nito ang lahat ng mga robot at spider na lumabas doon sa pag-index ng iyong site na hindi mai-index ang file gotcha.html. Ang anumang normal na web crawler ay igagalang ang mga kagustuhan ng iyong robots.txt file at hindi ma-access ang file na iyon. ibig sabihin, ang Google at Bing. Maaari mong aktwal na nais na ipatupad ang hakbang na ito, at maghintay ng 24 oras bago pumunta sa susunod na hakbang. Titiyak nito na ang isang crawl ay hindi sinasadyang maharang sa iyo dahil sa katotohanan na ito ay kalagitnaan ng pag-crawl kapag na-update mo ang iyong robots.txt file. - Maglagay ng link sa gotcha.html sa isang lugar sa iyong website. Hindi mahalaga kung saan. Gusto ko inirerekumenda sa paa, subalit, siguraduhin na ang link na ito ay hindi makikita, sa CSS, ipakita: wala;
- Ngayon, mag-log sa IP / pangkalahatang impormasyon ng perp na bumisita sa pahinang ito at hadlangan ang mga ito. Bilang kahalili, maaari kang makabuo ng isang script upang mabigyan sila ng hindi tama at data ng basura. O baka isang magandang personal na mensahe mula sa iyo sa kanila.
Hindi makita ng regular na mga manonood ng web ang link, kaya hindi ito sinasadyang mai-click. Ang mga paulit-ulit na crawler (halimbawa ng Google), ay igagalang ang kagustuhan ng iyong robots.txt at hindi bisitahin ang file. Kaya, ang mga computer lamang na dapat matitisod sa pahinang ito ay yaong may mga nakakahamak na hangarin, o isang tao na tinitingnan ang iyong source code at random na pag-click sa paligid (at oh well kung nangyari iyon).
Mayroong ilang mga kadahilanan na ito ay maaaring hindi palaging gumana. Una, maraming mga scraper ay hindi gumana tulad ng normal na mga web crawler, at hindi lamang matuklasan ang data sa pamamagitan ng pagsunod sa bawat link mula sa bawat pahina sa iyong site. Ang mga scroll ay madalas na binuo upang ayusin sa ilang mga pahina at sundin lamang ang ilang mga istraktura. Halimbawa, maaaring magsimula ang isang scraper sa isang pahina ng kategorya, at pagkatapos ay sinabi lamang na bisitahin ang mga URL na may salitang / data sa slug. Pangalawa, kung ang isang tao ay nagpapatakbo ng kanilang mga scraper sa parehong network tulad ng iba, at mayroong isang ibinahaging IP na ginagamit, ipagbawal mo ang buong network. Kailangan mong magkaroon ng isang napaka-tanyag na website sa katunayan para sa ito upang maging isang problema.
Sumulat ng data sa mga imahe nang mabilis
Maghanap ng isang mas maliit na larangan ng data, hindi kinakailangan mahaba ang mga string ng teksto dahil maaari nitong gawing mas mahirap ang pag-istil sa pahina. Output ang data na ito sa loob ng isang imahe, nakakaramdam ako ng tiwala na mayroong mga pamamaraan sa halos bawat wika ng programming upang magsulat ng teksto sa isang imahe nang dinamikong (sa php, imagettftext). Ito ay marahil pinaka-epektibo sa mga bilang ng bilang dahil ang mga numero ay nagbibigay ng higit na hindi gaanong kahalagahan ng SEO.
Alternatibong
Hindi ito isang pagpipilian para sa proyektong ito. Nangangailangan ng pag-login pagkatapos ng isang tiyak na halaga ng mga pageview, o pagpapakita ng isang limitadong halaga ng data nang hindi naka-log in. Ie, kung mayroon kang 10 mga haligi, ipakita lamang ang 5 sa mga hindi naka-log sa mga gumagamit.
Huwag gawin itong kamalian
Huwag mag-abala sa pagsubok na makabuo ng ilang uri ng solusyon batay sa user-ahente ng bot. Ang impormasyong ito ay madaling masamsam ng isang scraper na alam kung ano ang kanilang ginagawa. Ang google bot halimbawa ay madaling tularan. Higit sa malamang na ayaw mong pagbawalan ang Google.