Pek*_*ica 56 javascript php analytics web-services
我希望推出自己的简单网络统计脚本.
据我所知,道路上唯一的主要障碍是告诉人类游客除机器人之外.我想有一个解决方案,我不需要定期维护(即我不想用机器人相关的用户代理更新文本文件).
是否有任何开放服务可以做到这一点,就像Akismet为垃圾邮件做的那样?或者是否有一个专门用于识别蜘蛛和机器人并提供频繁更新的PHP项目?
澄清:我不打算阻止机器人.我不需要100%不漏水的结果.我只想从我的统计数据中尽可能多地排除.知道解析user-Agent是一个选项,但维护要解析的模式是很多工作.我的问题是,是否有任何项目或服务已经这样做.
赏金:我想我会把这个作为关于这个主题的参考问题.最佳/最原始/技术上可行的贡献将获得赏金金额.
Jef*_*and 72
人类和机器人会做类似的事情,但机器人会做人类没有做的事情.让我们试着找出那些东西.在我们看一下行为之前,让我们接受RayQuang的评论是有用的.如果访问者拥有机器人的用户代理字符串,那么它可能是一个机器人.除非他们正在努力破坏某些东西,否则我无法想象任何人使用"Google Crawler"(或类似的东西)作为UA.我知道你不想手动更新列表,但是自动提取一个列表应该是好的,即使它在接下来的10年里保持陈旧,它也会有所帮助.
有些人已经提到了Javascript和图片加载,但Google会同时做到这两点.我们必须假设现在有几个机器人会同时做这两个,所以这些不再是人类指标.然而,机器人仍将独一无二地遵循"隐形"链接.以非常偷偷摸摸的方式链接到页面,我无法将其视为用户.如果这样,我们有一个机器人.
机器人通常会(尽管不总是)尊重robots.txt.用户不关心robots.txt,我们可以假设任何检索robots.txt的人都是机器人.不过,我们可以更进一步,将虚拟CSS页面链接到robots.txt排除的页面.如果加载我们正常的CSS但我们的虚拟CSS不是,它肯定是一个机器人.你必须通过IP构建(可能是内存中)负载表并且不包含在匹配中,但这应该是一个非常可靠的告诉.
因此,要使用所有这些:通过ip地址维护一个机器人数据库表,可能有时间戳限制.添加任何跟随隐形链接的内容,添加任何加载"真实"CSS但忽略robots.txt CSS的内容.也许添加所有robots.txt下载程序.过滤用户代理字符串作为最后一步,并考虑使用它来进行快速统计分析,并看看这些方法似乎有多强烈地用于识别我们知道的机器人.
Fra*_*kie 13
编辑(10年后): 正如Lukas在评论框中所说的,今天几乎所有的爬虫都支持javascript,所以我删除了段落,声明如果该站点是基于JS的,那么大多数机器人都会被自动删除.
您可以按照机器人列表并将其用户代理添加到过滤列表中.
这个用户代理列表也很不错.只需删除所有的B,然后就可以了.
编辑:由eSniff完成的惊人工作在这里有上面的列表 " 在一个可以查询和解析更容易的形式.robotstxt.org/db/all.txt每个新的Bot由机器人ID:XXX定义.你应该能够每周下载一次并将其解析为您的脚本可以使用的内容 "就像您可以阅读他的评论一样.
希望能帮助到你!
Bal*_*usC 11
考虑一个伪造为CSS背景图像的PHP stats脚本(给出正确的响应头 - 至少是内容类型和缓存控件 - 但是写出一个空图像).
一些机器人解析JS,但肯定没有人加载CSS图像.与JS一样的一个缺陷是,您将排除基于文本的浏览器,但这不到全球网络人口的1%.此外,与禁用JS的客户端(手机!)相比,CSS禁用客户端肯定更少.
为了使更加先进的机器人(谷歌,雅虎等)可能在将来抓取它们的(普通)情况更加坚实,不允许通往CSS图像的路径robots.txt(无论如何,更好的机器人会尊重它).
我使用以下内容作为我的统计/计数器应用程序:
<?php
function is_bot($user_agent) {
return preg_match('/(abot|dbot|ebot|hbot|kbot|lbot|mbot|nbot|obot|pbot|rbot|sbot|tbot|vbot|ybot|zbot|bot\.|bot\/|_bot|\.bot|\/bot|\-bot|\:bot|\(bot|crawl|slurp|spider|seek|accoona|acoon|adressendeutschland|ah\-ha\.com|ahoy|altavista|ananzi|anthill|appie|arachnophilia|arale|araneo|aranha|architext|aretha|arks|asterias|atlocal|atn|atomz|augurfind|backrub|bannana_bot|baypup|bdfetch|big brother|biglotron|bjaaland|blackwidow|blaiz|blog|blo\.|bloodhound|boitho|booch|bradley|butterfly|calif|cassandra|ccubee|cfetch|charlotte|churl|cienciaficcion|cmc|collective|comagent|combine|computingsite|csci|curl|cusco|daumoa|deepindex|delorie|depspid|deweb|die blinde kuh|digger|ditto|dmoz|docomo|download express|dtaagent|dwcp|ebiness|ebingbong|e\-collector|ejupiter|emacs\-w3 search engine|esther|evliya celebi|ezresult|falcon|felix ide|ferret|fetchrover|fido|findlinks|fireball|fish search|fouineur|funnelweb|gazz|gcreep|genieknows|getterroboplus|geturl|glx|goforit|golem|grabber|grapnel|gralon|griffon|gromit|grub|gulliver|hamahakki|harvest|havindex|helix|heritrix|hku www octopus|homerweb|htdig|html index|html_analyzer|htmlgobble|hubater|hyper\-decontextualizer|ia_archiver|ibm_planetwide|ichiro|iconsurf|iltrovatore|image\.kapsi\.net|imagelock|incywincy|indexer|infobee|informant|ingrid|inktomisearch\.com|inspector web|intelliagent|internet shinchakubin|ip3000|iron33|israeli\-search|ivia|jack|jakarta|javabee|jetbot|jumpstation|katipo|kdd\-explorer|kilroy|knowledge|kototoi|kretrieve|labelgrabber|lachesis|larbin|legs|libwww|linkalarm|link validator|linkscan|lockon|lwp|lycos|magpie|mantraagent|mapoftheinternet|marvin\/|mattie|mediafox|mediapartners|mercator|merzscope|microsoft url control|minirank|miva|mj12|mnogosearch|moget|monster|moose|motor|multitext|muncher|muscatferret|mwd\.search|myweb|najdi|nameprotect|nationaldirectory|nazilla|ncsa beta|nec\-meshexplorer|nederland\.zoek|netcarta webmap engine|netmechanic|netresearchserver|netscoop|newscan\-online|nhse|nokia6682\/|nomad|noyona|nutch|nzexplorer|objectssearch|occam|omni|open text|openfind|openintelligencedata|orb search|osis\-project|pack rat|pageboy|pagebull|page_verifier|panscient|parasite|partnersite|patric|pear\.|pegasus|peregrinator|pgp key agent|phantom|phpdig|picosearch|piltdownman|pimptrain|pinpoint|pioneer|piranha|plumtreewebaccessor|pogodak|poirot|pompos|poppelsdorf|poppi|popular iconoclast|psycheclone|publisher|python|rambler|raven search|roach|road runner|roadhouse|robbie|robofox|robozilla|rules|salty|sbider|scooter|scoutjet|scrubby|search\.|searchprocess|semanticdiscovery|senrigan|sg\-scout|shai\'hulud|shark|shopwiki|sidewinder|sift|silk|simmany|site searcher|site valet|sitetech\-rover|skymob\.com|sleek|smartwit|sna\-|snappy|snooper|sohu|speedfind|sphere|sphider|spinner|spyder|steeler\/|suke|suntek|supersnooper|surfnomore|sven|sygol|szukacz|tach black widow|tarantula|templeton|\/teoma|t\-h\-u\-n\-d\-e\-r\-s\-t\-o\-n\-e|theophrastus|titan|titin|tkwww|toutatis|t\-rex|tutorgig|twiceler|twisted|ucsd|udmsearch|url check|updated|vagabondo|valkyrie|verticrawl|victoria|vision\-search|volcano|voyager\/|voyager\-hc|w3c_validator|w3m2|w3mir|walker|wallpaper|wanderer|wauuu|wavefire|web core|web hopper|web wombat|webbandit|webcatcher|webcopy|webfoot|weblayers|weblinker|weblog monitor|webmirror|webmonkey|webquest|webreaper|websitepulse|websnarf|webstolperer|webvac|webwalk|webwatch|webwombat|webzinger|wget|whizbang|whowhere|wild ferret|worldlight|wwwc|wwwster|xenu|xget|xift|xirq|yandex|yanga|yeti|yodao|zao\/|zippp|zyborg|\.\.\.\.)/i', $user_agent);
}
//example usage
if (! is_bot($_SERVER["HTTP_USER_AGENT"])) echo "it's a human hit!";
?>
Run Code Online (Sandbox Code Playgroud)
我删除了原始代码源的链接,因为它现在重定向到食品应用程序.
检查用户代理会提醒您注意诚实的机器人,但不会提醒垃圾邮件发送者。
要判断哪些请求是由不诚实的机器人发出的,最好的办法(基于此人的有趣研究)是捕获 Javascript 焦点事件。
如果 focus 事件触发,则页面几乎肯定是由人加载的。
- 编辑:确实,关闭 Javascript 的人不会显示为人类,但这并不是网络用户的很大一部分。
- Edit2:目前的机器人也可以执行 Javascript,至少谷歌可以。
| 归档时间: |
|
| 查看次数: |
18901 次 |
| 最近记录: |