'Gizli' web tarayıcılarını algılama


107

Algılanmak istemeyen web tarayıcılarını tespit etmek için hangi seçenekler var?

(Listeleme algılama tekniklerinin akıllı gizli gezgin programcısının daha iyi bir örümcek yapmasına olanak sağlayacağını biliyorum, ancak akıllı gizli tarayıcıları zaten engelleyebileceğimizi düşünmüyorum, yalnızca hata yapanları.)

Googlebot ve Yahoo! gibi güzel tarayıcılardan bahsetmiyorum! Slurp. Bir botu güzel buluyorum eğer:

  1. kendisini kullanıcı aracısı dizesinde bir bot olarak tanımlar
  2. robots.txt okur (ve ona uyar)

Kötü tarayıcılardan bahsediyorum , yaygın kullanıcı aracılarının arkasına saklanıyorum, bant genişliğimi kullanıyor ve karşılığında bana hiçbir şey vermiyor.

Güncellenmiş liste oluşturulabilecek bazı tuzak kapıları var (teşekkürler Chris, gs) :

  1. Yalnızca robots.txt dosyasında listelenen (izin verilmeyen olarak işaretlenen) bir dizin eklemek,
  2. Görünmez bağlantılar eklemek (muhtemelen rel = "nofollow" olarak işaretlenir?),
    • style = "display: yok;" bağlantı veya üst kapsayıcıda
    • daha yüksek z-endeksine sahip başka bir öğenin altına yerleştirilir
  3. büyük harf kullanımını anlamayanları tespit edin,
  4. Cevap göndermeye çalışan ancak Captcha'da her zaman başarısız olanları tespit edin.
  5. Yalnızca POST kaynaklarına yönelik GET isteklerini algılama
  6. istekler arasındaki aralığı tespit et
  7. istenen sayfaların sırasını tespit et
  8. http üzerinden https kaynaklarını kimin (sürekli olarak) istediğini tespit edin
  9. görüntü dosyasını kimin istemediğini tespit edin (bu, bilinen görüntü özellikli tarayıcıların kullanıcı aracılarının bir listesiyle birlikte şaşırtıcı derecede iyi çalışıyor)

Bazı tuzaklar hem 'iyi' hem de 'kötü' botlar tarafından tetiklenir. bunları beyaz listeyle birleştirebilirsiniz:

  1. Bir tuzağı tetikler
  2. İste robots.txtmi?
  3. İtaat ettiği için başka bir tuzağı tetiklemez robots.txt

Buradaki bir diğer önemli nokta ise:
Lütfen ekran okuyucu kullanan körleri düşünün: insanlara sizinle iletişim kurmaları için bir yol verin veya gezinmeye devam etmek için (resim olmayan) bir Captcha'yı çözün.

Kendilerini normal insan ziyaretçiler olarak maskelemeye çalışan web tarayıcılarını otomatik olarak algılamak için hangi yöntemler var?

Güncelleme
Soru şu değil: Her tarayıcıyı nasıl yakalarım. Soru şudur: Bir tarayıcıyı algılama şansını nasıl en üst düzeye çıkarabilirim?

Bazı örümcekler gerçekten iyidir ve aslında html, xhtml, css javascript, VB komut dosyası vb. Ayrıştırıp anlar ...
Yanılsamam yok: Onları yenemeyeceğim.

Ancak bazı tarayıcıların ne kadar aptal olduğuna şaşıracaksınız. En iyi aptallık örneğiyle (bence): tüm URL'leri talep etmeden önce küçük harfe çevirin.

Ve sonra, çeşitli tuzak kapılardan kaçınmak için 'yeterince iyi olmayan' bir sürü tarayıcı var.

Yanıtlar:


15

Bir süre önce, buna bir çözüm uygulamalarına yardımcı olmak için ufak bir hosting şirketi ile çalıştım. Geliştirdiğim sistem, herhangi bir IP adresinden aşırı etkinlik olup olmadığını görmek için web sunucusu günlüklerini inceledi ve suçluları engellemek için güvenlik duvarı kuralları yayınladı. Http://www.iplists.com/ tabanlı IP adreslerinin / aralıklarının beyaz listelerini içeriyordu ; bunlar daha sonra talep edilen kullanıcı aracısı dizelerini kontrol ederek gerektiğinde otomatik olarak güncellenir ve müşteri meşru bir örümcek olduğunu iddia ederse ancak beyaz listeye eklendiğinde, kaynak IP adresinin botun iddia edilen sahibine karşılık geldiğini doğrulamak için DNS / ters DNS aramaları gerçekleştirdi. Hatasız olduğundan, bu eylemler, yanlış bir değerlendirme durumunda adresin siyah / beyaz listeye eklenmesine yönelik bağlantılarla birlikte e-postayla yöneticiye bildirildi.

O müşteriyle 6 aydır konuşmadım, ama son olarak sistemin oldukça etkili bir şekilde çalıştığını duydum.

Yan nokta: İsabet oranı sınırlamasına dayalı benzer bir tespit sistemi yapmayı düşünüyorsanız, en az bir dakikalık (ve tercihen en az beş dakikalık) toplamları kullandığınızdan emin olun. Ben (görüntüler taksitli dışında tutulur sürece) resim ağırlıklı sayfalarda yanlış pozitif oluşturabilir ve bir saniye içinde 5-10 hit başında blok kimseye, istediğiniz düzenleri bu tür bahsediyoruz bir sürü insan görebilirsiniz olacak yanlış oluşturmak benim gibi biri, tümünü okumak istediği ilginç bir site bulduğunda pozitif sonuç veriyor, bu yüzden ilkini okurken arka planda yüklemek için sekmelerdeki tüm bağlantıları açar.


5
Web tarayıcısını engellemekten dolayı yanlış pozitif buluyorum, web trafiğini kesinlikle öldürüyor. Temelde, açıklanan bu saf yöntemi kolayca atlayabilen tarayıcıları engellemek için zayıf bir girişimde kullanıcınızın% 99,8'ini kızdırıyorsunuz. Sitenizdeki kullanıcı deneyimini yok ettiği için kullanıcı erişimini reddetmek veya engellemek asla iyi bir fikir değildir.
KJW

14

Honeypot Projesi'ne bakın - büyük ölçekte bot tuzakları kuruyorlar (ve IP'lerinde DNSRBL var).

Zor URL'ler ve HTML kullanın:

<a href="https://stackoverflow.com//example.com/"> = http://example.com/ on http pages.
<a href="page&amp;&#x23;hash"> = page& + #hash

HTML'de yorumlar, CDATA öğeleri, varlıklar vb. İle birçok numara kullanabilirsiniz:

<a href="foo<!--bar-->"> (comment should not be removed)
<script>var haha = '<a href="bot">'</script>
<script>// <!-- </script> <!--><a href="bot"> <!-->

9

Kolay bir çözüm, bir bağlantı oluşturmak ve onu görünmez yapmaktır

<a href="iamabot.script" style="display:none;">Don't click me!</a>

Elbette, kaynak koduna bakan bazı kişilerin, sadece nereye gittiğini görmek için bu bağlantıyı takip etmesini beklemelisiniz. Ancak bu kullanıcılara bir captcha sunabilirsiniz ...

Elbette geçerli tarayıcılar da bağlantıyı izler. Ancak bir rel = nofollow uygulamamalısınız, ancak geçerli bir tarayıcının işaretini aramalısınız. (kullanıcı aracısı gibi)


1
Bot, bağlantının CSS özelliklerini kontrol etmediği ve bir insan kullanıcı tarafından görülemediği için bağlantıyı takip etmediği sürece ...
Bob Somers

1
Bağlantının "Beni TIKLAMAYIN" olarak etiketlenmesi daha iyi bir fikir olabilir .. Birinin CSS'si devre dışı bırakılmışsa (veya CSS desteği yoksa), bağlantı görünür olacaktır ..
dbr

İyi bir fikir. Belki metni "" olarak değiştirin. ve arka plana uyması için css stili - çoğu kullanıcı için görünmez mi? Ya da 1 saniye sonra gizlemek için bir komut dosyası çalıştırıp onu yalnızca javascript gizle komutunu bağlantıya bağlayamayan bir bot için görünür durumda bırakır mısınız?
Underverse

1
SEO açısından siyah şapka cezasına dikkat edin.
Alfred Wallace

6

Kötü tarayıcıları tespit etmek için yaygın olarak kullanılan, listelemediğiniz bir şey.

Vuruş hızı, iyi web tarayıcıları isabetlerini bölerler, böylece bir siteyi isteklerle doldurmazlar. Kötü olanlar üç şeyden birini yapar:

  1. sıralı bağlantıları birbiri ardına vur
  2. bazı paralel sıralarda sıralı bağlantıları vurun (bir seferde 2 veya daha fazla.)
  3. sıralı bağlantıları sabit bir aralıkta vur

Ayrıca, bazı çevrimdışı göz atma programları birkaç sayfayı bulandırır, IP adresine göre engellemeye başlamak için ne tür bir eşik kullanmak istediğinizden emin değilim.

Bu yöntem aynı zamanda fmirror veya wget gibi yansıtma programlarını da yakalayacaktır.

Bot zaman aralığını rasgele seçerse, bağlantıların sıralı veya derinlikli bir şekilde geçip geçmediğini kontrol edebilir veya botun büyük miktarda metni (okunacak kelimelerdeki gibi) geçip geçmediğini görebilirsiniz. çok kısa bir süre. Bazı siteler saat başına istek sayısını da sınırlar.

Aslında bir yerde bir fikir duydum, nerede olduğunu hatırlamıyorum, eğer bir kullanıcı çok fazla veri alırsa, kilobayt cinsinden, bot olmadığını kanıtlamalarını isteyen bir captcha ile sunulabilir. Gerçi bunun uygulandığını hiç görmedim.

Bağlantıları Gizleme Hakkında Güncelleme

Bağlantıları gizlemeye gelince, CSS ile (çizim sırasına ilk yerleştirerek) ve muhtemelen z sırasını ayarlayarak bir div'i diğerinin altına koyabilirsiniz. Bir bot, bir menü olup olmadığını görmek için tüm javascript'inizi ayrıştırmadan bunu göz ardı edemez. Bir dereceye kadar, görünmez DIV öğelerinin içindeki bağlantılar, bot tüm javascript'i ayrıştırmadan da göz ardı edilemez.

Bu fikri tamamladıktan sonra, potansiyel olarak gizli öğeleri gösterebilecek çağrılmamış javascript, javascript ayrıştırma botlarının bir alt kümesini kandırabilir. Ve uygulanması gereken çok fazla iş değil.


16
"JavaScript'i görmezden gelmek bot olduğunuz anlamına gelir" yöntemindeki büyük kusur: Bazılarımız NoScript eklentisini kullanıyoruz. Siteyi beyaz listeye almadığım sürece hiçbir site bende JavaScript çalıştırmaz ve bir bot olmadığımdan oldukça eminim.
Dave Sherohman

2
botlar artık Javascript'i çalıştırabilir ... Tanrı aşkına 2013. böylece tüm argüman gider. web tarayıcılarının siteleri sıralı seçimlerle ziyaret ettiğini kim söylüyor? başka bir büyük varsayım.
KJW

1
Javascript yalnızca bir bal küpü bağlantısını göstermek içindi. Fikir botlar olmasıdır edecek , bir bal küpü bağlantı görünür hale bağlantıyı izlemek için daha olası hale olacaktır javascript ayrıştırmak. Ancak gerçek bir kullanıcı için bağlantıyı görünür kılan kod asla çalıştırılmayacaktır. Bu nedenle, NoScript kullanıcıları, rasgele olarak işlev yürütmeye gitmeyen herkesle birlikte iyi olur. Bununla birlikte, bir botun rastgele bir şekilde kodu neden / nasıl çalıştıracağından emin değilim ve bir öğenin görünür olup olmayacağını belirlemek için statik bir analiz yapıyor olsaydı, bu bir fantezi bot olurdu.
Rick

4

Formlar için duyduğum basit bir bot algılama yöntemi, gizli giriş tekniğidir. Bir formu güvenli hale getirmeye çalışıyorsanız, forma tamamen okunaklı görünen bir kimliğe sahip bir giriş koyun. Ardından, gizlemek için harici bir dosyada css kullanın. Ya da gerçekten paranoyak iseniz, sayfa yüklenirken giriş kutusunu gizlemek için jquery gibi bir şey ayarlayın. Bunu doğru yaparsanız, bir botun çözmesinin çok zor olacağını düşünüyorum. Bu botların, özellikle gizli girdinize id = "fname", vb.


2
normal bir tarayıcının yapabileceği gibi botlar jquery'nin bitmesini bekleyebiliyorsa değil. Bu,
00'ların

3

İyi kullanıcı aracısı dizelerine ayak uydurmak aslında o kadar kolay değil. Tarayıcı sürümleri gelir ve gider. Farklı davranışlara göre kullanıcı aracısı dizeleri hakkında bir istatistik yapmak ilginç şeyler ortaya çıkarabilir.

Bunun ne kadar otomatikleştirilebileceğini bilmiyorum, ama en azından farklı bir şey.


3

Test edilmedi, ancak burada düzenli ifadeler kullanabileceğiniz güzel bir kullanıcı aracı listesi var. Sizi oraya en çok götürürdü:

ADSARobot|ah-ha|almaden|aktuelles|Anarchie|amzn_assoc|ASPSeek|ASSORT|ATHENS|Atomz|attach|attache|autoemailspider|BackWeb|Bandit|BatchFTP|bdfetch|big.brother|BlackWidow|bmclient|Boston\ Project|BravoBrian\ SpiderEngine\ MarcoPolo|Bot\ mailto:craftbot@yahoo.com|Buddy|Bullseye|bumblebee|capture|CherryPicker|ChinaClaw|CICC|clipping|Collector|Copier|Crescent|Crescent\ Internet\ ToolPak|Custo|cyberalert|DA$|Deweb|diagem|Digger|Digimarc|DIIbot|DISCo|DISCo\ Pump|DISCoFinder|Download\ Demon|Download\ Wonder|Downloader|Drip|DSurf15a|DTS.Agent|EasyDL|eCatch|ecollector|efp@gmx\.net|Email\ Extractor|EirGrabber|email|EmailCollector|EmailSiphon|EmailWolf|Express\ WebPictures|ExtractorPro|EyeNetIE|FavOrg|fastlwspider|Favorites\ Sweeper|Fetch|FEZhead|FileHound|FlashGet\ WebWasher|FlickBot|fluffy|FrontPage|GalaxyBot|Generic|Getleft|GetRight|GetSmart|GetWeb!|GetWebPage|gigabaz|Girafabot|Go\!Zilla|Go!Zilla|Go-Ahead-Got-It|GornKer|gotit|Grabber|GrabNet|Grafula|Green\ Research|grub-client|Harvest|hhjhj@yahoo|hloader|HMView|HomePageSearch|http\ generic|HTTrack|httpdown|httrack|ia_archiver|IBM_Planetwide|Image\ Stripper|Image\ Sucker|imagefetch|IncyWincy|Indy*Library|Indy\ Library|informant|Ingelin|InterGET|Internet\ Ninja|InternetLinkagent|Internet\ Ninja|InternetSeer\.com|Iria|Irvine|JBH*agent|JetCar|JOC|JOC\ Web\ Spider|JustView|KWebGet|Lachesis|larbin|LeechFTP|LexiBot|lftp|libwww|likse|Link|Link*Sleuth|LINKS\ ARoMATIZED|LinkWalker|LWP|lwp-trivial|Mag-Net|Magnet|Mac\ Finder|Mag-Net|Mass\ Downloader|MCspider|Memo|Microsoft.URL|MIDown\ tool|Mirror|Missigua\ Locator|Mister\ PiX|MMMtoCrawl\/UrlDispatcherLLL|^Mozilla$|Mozilla.*Indy|Mozilla.*NEWT|Mozilla*MSIECrawler|MS\ FrontPage*|MSFrontPage|MSIECrawler|MSProxy|multithreaddb|nationaldirectory|Navroad|NearSite|NetAnts|NetCarta|NetMechanic|netprospector|NetResearchServer|NetSpider|Net\ Vampire|NetZIP|NetZip\ Downloader|NetZippy|NEWT|NICErsPRO|Ninja|NPBot|Octopus|Offline\ Explorer|Offline\ Navigator|OpaL|Openfind|OpenTextSiteCrawler|OrangeBot|PageGrabber|Papa\ Foto|PackRat|pavuk|pcBrowser|PersonaPilot|Ping|PingALink|Pockey|Proxy|psbot|PSurf|puf|Pump|PushSite|QRVA|RealDownload|Reaper|Recorder|ReGet|replacer|RepoMonkey|Robozilla|Rover|RPT-HTTPClient|Rsync|Scooter|SearchExpress|searchhippo|searchterms\.it|Second\ Street\ Research|Seeker|Shai|Siphon|sitecheck|sitecheck.internetseer.com|SiteSnagger|SlySearch|SmartDownload|snagger|Snake|SpaceBison|Spegla|SpiderBot|sproose|SqWorm|Stripper|Sucker|SuperBot|SuperHTTP|Surfbot|SurfWalker|Szukacz|tAkeOut|tarspider|Teleport\ Pro|Templeton|TrueRobot|TV33_Mercator|UIowaCrawler|UtilMind|URLSpiderPro|URL_Spider_Pro|Vacuum|vagabondo|vayala|visibilitygap|VoidEYE|vspider|Web\ Downloader|w3mir|Web\ Data\ Extractor|Web\ Image\ Collector|Web\ Sucker|Wweb|WebAuto|WebBandit|web\.by\.mail|Webclipping|webcollage|webcollector|WebCopier|webcraft@bea|webdevil|webdownloader|Webdup|WebEMailExtrac|WebFetch|WebGo\ IS|WebHook|Webinator|WebLeacher|WEBMASTERS|WebMiner|WebMirror|webmole|WebReaper|WebSauger|Website|Website\ eXtractor|Website\ Quester|WebSnake|Webster|WebStripper|websucker|webvac|webwalk|webweasel|WebWhacker|WebZIP|Wget|Whacker|whizbang|WhosTalking|Widow|WISEbot|WWWOFFLE|x-Tractor|^Xaldon\ WebSpider|WUMPUS|Xenu|XGET|Zeus.*Webster|Zeus [NC]

Alındığı: http://perishablepress.com/press/2007/10/15/ultimate-htaccess-blacklist-2-compressed-version/


1

Yönlendirmeleri de kontrol edebilirsiniz. Hiçbir yönlendirme botun askıya alınmasını sağlayamaz. Kötü yönlendirme, kesinlikle tarayıcı olmadığı anlamına gelir.

Görünmez bağlantılar eklemek (muhtemelen rel = "nofollow" olarak işaretlenir?),

* style="display: none;" on link or parent container
* placed underneath another element with higher z-index

Ben yapmam. Siyah şapka SEO için google tarafından kara listeye alınabilir :)


1
Tam olarak ne ve neden sizi kara listeye alsın?
2017

1

Şu anda web sitelerini sınıflandırmak için tarayan bir şirkette çalışıyorum. Sitelerde kötü amaçlı yazılım olup olmadığını da kontrol ederiz.

Deneyimlerime göre, web tarayıcımızın bir numaralı engelleyicileri (elbette bir IE veya Firefox UA kullanır ve robots.txt'ye uymaz. Duh.) Kasıtlı olarak kötü amaçlı yazılım barındıran sitelerdir. Bu bir acıdır çünkü site daha sonra siteyi manuel olarak yüklemesi, sınıflandırması ve kötü amaçlı yazılım olup olmadığını kontrol etmesi gereken bir insana geri döner.

Diyorum ki, web tarayıcılarını engelleyerek kendinizi kötü bir şirkete sokuyorsunuz.

Tabii ki, eğer korkunç derecede kabaysa ve bant genişliğinizin tonlarını emiyorlarsa, bu farklı bir hikaye çünkü o zaman iyi bir sebebiniz var.


15
Üzgünüm, ancak robots.txt dosyasına uymayan bir tarayıcı çalıştırırsanız, kurallara uymuyorsunuz demektir. Kurallara uymayarak, kendinizi gerçekten kötü bir şirkete sokuyorsunuz. Web sitesinin sahibi (robots.txt'de) tarafından belirlenen kuralların uygulanmasının kötü bir uygulama olduğunu öne sürerek, sorunu yanlış bir şekilde tersine çeviriyorsunuz. Temel olarak, içeriğin doğru sahibinin kim olduğunu anlamadığınızı belirtiyorsunuz.
Jacco

11
@Jacco: Kötü amaçlı yazılım arayan bir tarayıcı kurallara uysaydı, asla bulamazdı . Kötü amaçlı yazılım yazarlarıyla konuşun.
Zan Lynx

5
@Jacco: Uyumlu olmayan tarayıcıları engellemeye çalışan yasal sitelerin yüzdesi? % 1'in altında. Deneyen kötü amaçlı yazılım siteleri? 60'ın üzerinde%. Yani evet, şüpheli.
Zan Lynx

4
@Jacco aslında hayır, eğer herkese açıksa web'de bir içeriğin sahibi yok. Bunu elle kopyalayıp yapıştırmadan yapan kişiye ceza değil ödül verilmelidir. Tüm bu telif hakkı kavramının internette kaldırılması gerekiyor. Yalnızca yaratıcı yenilik ve güven değer yaratabilir ve insanların ilgisini çekebilir, opak yasal perde tehdidi ile değil.
KJW

Tüm bu aykırılık, siteyi yöneten kişinin siteye çok zaman ayırıp düşündüğünü ve bir dereceye kadar teknik beceriye sahip olduklarını gösterir. Yani tabii ki çan eğrisinin en dışladı söyledi.
Parthian Shot

1

İnsanlar, web siteniz için özelleşmiş tarayıcılara değil, geniş tarayıcılara hitap etmeye devam ediyor.

Gizli tarayıcılar yazıyorum ve tek tek oluşturulmuşlarsa, hiçbir miktarda bal kabı veya gizli bağlantı herhangi bir etkiye sahip olmayacak - özel tarayıcıları tespit etmenin tek gerçek yolu bağlantı modellerini incelemektir.

En iyi sistemler AI kullanır (örneğin Linkedin) bunu ele almak için AI kullanır.
En kolay çözüm, IP bağlantılarını analiz eden ve bu IP'leri kara listeye alan veya en azından geçici olarak captcha sunan günlük ayrıştırıcılar yazmaktır.

örneğin
, IP X her 2 saniyede bir görülüyorsafoo.com/cars/*.html bir başka sayfalara - büyük olasılıkla bir bot veya aç bir güç kullanıcısıdır.

Alternatif olarak, koruma görevi gören çeşitli javascript zorlukları vardır (örneğin, Cloudflare'nın anti-bot sistemi), ancak bunlar kolayca çözülebilir, özel bir şeyler yazabilirsiniz ve bu, tarayıcı için çabaya değmeyecek kadar caydırıcı olabilir.

Bununla birlikte, yanlış pozitif yasal kullanıcılara istekli misiniz ve bot trafiğini önlemek için onlara rahatsızlık vermek istiyor musunuz bir soru sormalısınız. Halka açık verileri korumak imkansız bir paradokstur.


-1

kısa cevap: orta seviye bir programcı ne yaptığını bilirse, gerçek kullanıcıyı etkilemeden bir tarayıcıyı tespit edemezsiniz. Bilgilerinizi herkese açık olarak bulundurmak, onu bir tarayıcıya karşı savunamazsınız ... bu 1. değişiklik gibi değil :)

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.