Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/fortran/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Web crawler 检测';隐形';网络爬虫_Web Crawler - Fatal编程技术网

Web crawler 检测';隐形';网络爬虫

Web crawler 检测';隐形';网络爬虫,web-crawler,Web Crawler,有哪些选项可以检测不希望被检测到的网络爬虫 (我知道列表检测技术将允许智能隐形爬虫程序员制作出更好的蜘蛛,但我认为我们无论如何都无法阻止智能隐形爬虫,只能阻止犯错误的爬虫。) 我不是说像谷歌机器人和雅虎这样的好爬虫!发出啧啧的声音 我认为一个机器人很好,如果它: 在用户代理字符串中将自身标识为bot 阅读robots.txt(并遵守它) 我说的是坏爬虫,躲在普通用户代理后面,使用我的带宽,从不给我任何回报 在更新列表中可以构造一些活板门(感谢Chris,gs): 添加robots.txt中仅列出

有哪些选项可以检测不希望被检测到的网络爬虫

(我知道列表检测技术将允许智能隐形爬虫程序员制作出更好的蜘蛛,但我认为我们无论如何都无法阻止智能隐形爬虫,只能阻止犯错误的爬虫。)

我不是说像谷歌机器人和雅虎这样的好爬虫!发出啧啧的声音 我认为一个机器人很好,如果它:

  • 在用户代理字符串中将自身标识为bot
  • 阅读robots.txt(并遵守它)
  • 我说的是坏爬虫,躲在普通用户代理后面,使用我的带宽,从不给我任何回报

    在更新列表中可以构造一些活板门(感谢Chris,gs):

  • 添加robots.txt中仅列出(标记为不允许)的目录
  • 添加不可见链接(可能标记为rel=“nofollow”?),
    • 链接或父容器上的style=“display:none;”
    • 放置在另一个z索引较高的元素下面
  • 发现谁不了解资本化
  • 检测试图发布回复但始终未通过验证码的用户
  • 检测仅发布资源的GET请求
  • 检测请求之间的间隔
  • 检测请求页面的顺序
  • 检测通过http请求https资源的用户(一致)
  • 检测谁不请求图像文件(这与已知支持图像的浏览器的用户代理列表相结合,效果出奇地好)
  • “好”和“坏”机器人都会触发一些陷阱。 您可以将这些内容与白名单相结合:

  • 它触发了一个陷阱
  • 它请求
    robots.txt
  • 它不会触发另一个陷阱,因为它遵守了
    robots.txt
  • 这里还有一件重要的事情:
    请考虑盲人使用屏幕阅读器:给人们一种联系方式,或者解决(非图像)CAPTCHA继续浏览。

    有什么方法可以自动检测试图将自己伪装成正常人类访问者的网络爬虫。

    更新
    问题不是:我如何抓住每一个爬虫。问题是:如何最大限度地提高发现爬虫的机会

    有些爬行器非常好,能够解析和理解html、xhtml、css javascript、VB脚本等。
    我没有幻想:我无法打败他们

    然而,你会惊讶于有些爬虫是多么愚蠢。在我看来,最愚蠢的例子是:在请求URL之前,将所有URL都转换成小写


    还有一大堆爬虫“不够好”,无法避开各种活板门。

    有一件事你没有列出,它们通常用来检测坏的爬虫

    点击速度快,好的网络爬虫会打破他们的点击率,这样他们就不会让网站上充斥着大量的请求。坏的会做三件事之一:

  • 依次点击顺序链接
  • 以某种平行顺序点击顺序链接(一次2个或更多)
  • 以固定的间隔点击顺序链接
  • 此外,一些离线浏览程序会占用大量页面,我不确定您希望使用什么样的阈值来开始按IP地址进行阻止

    此方法还将捕获镜像程序,如fmirror或wget

    如果bot将时间间隔随机化,则可以检查链接是否以顺序或深度优先的方式遍历,或者可以查看bot是否在过短的时间内遍历大量文本(如要读取的单词)。一些网站还限制每小时的请求数

    事实上,我在某个地方听到一个想法,我不记得在哪里,如果用户获得太多的数据,以千字节为单位,他们可以得到一个验证码,要求他们证明自己不是机器人。不过,我从来没有见过这样的实现

    隐藏链接的更新 至于隐藏链接,您可以将一个div放在另一个div下,使用CSS(将其放在绘图顺序的第一位)并可能设置z顺序。机器人无法忽略这一点,除非解析所有javascript以查看它是否是菜单。在某种程度上,如果没有bot解析所有javascript,不可见DIV元素中的链接也不能被忽略


    完成这一想法后,可能会显示隐藏元素的未调用javascript可能会愚弄javascript解析机器人的一个子集。而且,实现起来也不需要很多工作。

    一个简单的解决方案是创建一个链接并使其不可见

    <a href="iamabot.script" style="display:none;">Don't click me!</a>
    
    
    
    当然,您应该期望一些查看源代码的人遵循该链接,只是为了了解它的方向。但是你可以给那些用户一个验证码


    当然,有效的爬虫程序也会跟随链接。但是您不应该实现rel=nofollow,而是应该查找有效爬虫的标志。(就像用户代理一样)

    实际上,要跟上好的用户代理字符串并不容易。浏览器版本来来往往。通过不同的行为统计用户代理字符串可以揭示有趣的事情

    我不知道这可以自动化到什么程度,但至少这是一件与众不同的事情。

    请看-他们正在大规模设置机器人陷阱(并在IP上安装了DNSRBL)

    使用复杂的URL和HTML:

    <a href="//example.com/"> = http://example.com/ on http pages.
    <a href="page&amp;&#x23;hash"> = page& + #hash
    
    =http://example.com/ 在http页面上。
    =第&+#页散列
    
    在HTML中,您可以对注释、CDATA元素、实体等使用大量技巧:

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

    不久前,我与一家小型托管公司合作,帮助他们实现解决方案。我开发的系统检查了来自任何给定IP地址的web服务器日志中的过度活动,并发布了防火墙规则来阻止违规者。它包括基于的IP地址/范围的白名单,然后根据需要通过检查声明的用户代理字符串自动更新,如果客户端
    
    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]
    
    * style="display: none;" on link or parent container
    * placed underneath another element with higher z-index