Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/285.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
Php 区分机器人和人类访客的统计数据?_Php_Javascript_Web Services_Analytics - Fatal编程技术网

Php 区分机器人和人类访客的统计数据?

Php 区分机器人和人类访客的统计数据?,php,javascript,web-services,analytics,Php,Javascript,Web Services,Analytics,我希望推出自己的简单网络统计脚本 就我所见,道路上唯一的主要障碍是告诉人类访客与机器人的区别。我想有一个解决方案,我不需要定期维护(即,我不想更新文本文件与机器人相关的用户代理) 有没有像Akismet处理垃圾邮件那样的开放服务可以做到这一点? 或者是否有专门用于识别爬行器和机器人并提供频繁更新的PHP项目 澄清:我不想阻止机器人我不需要100%防水效果。我只是 希望从我的统计数据中排除尽可能多的数据。在里面 要知道,解析用户代理是一项非常重要的工作 选项,但将模式维护为 解析的是大量的工作。我

我希望推出自己的简单网络统计脚本

就我所见,道路上唯一的主要障碍是告诉人类访客与机器人的区别。我想有一个解决方案,我不需要定期维护(即,我不想更新文本文件与机器人相关的用户代理)

有没有像Akismet处理垃圾邮件那样的开放服务可以做到这一点? 或者是否有专门用于识别爬行器和机器人并提供频繁更新的PHP项目

澄清:我不想阻止机器人我不需要100%防水效果。我只是 希望从我的统计数据中排除尽可能多的数据。在里面 要知道,解析用户代理是一项非常重要的工作 选项,但将模式维护为 解析的是大量的工作。我的 问题是是否存在任何问题 这样做的项目或服务 已经

赏金:我想我应该把这个问题作为这个话题的参考问题。最好的/最原始的/技术上最可行的捐款将获得奖金


最简单的方法是检查他们的useragent中是否包含“bot”或“spider”

=?对不起,误解了。你可以尝试我在我的网站上设置的另一个选项:创建一个带有硬/奇怪名称的非链接网页,并记录对该网页的访问。大多数(如果不是所有的话)这个页面的访问者都是机器人,这样你就可以动态地创建你的机器人列表

原始答案如下(获得负面评级!)

告诉机器人的唯一可靠方法 来自人类的是[CAPTCHAS][1]。你可以 如果适合您,请使用[reCAPTCHA][2]

[1] :
[2] :

编辑(10年后):正如卢卡斯在评论框中所说,现在几乎所有的爬虫程序都支持javascript,因此我删除了一段话,其中提到如果该站点是基于JS的,大多数机器人将自动剥离

您可以遵循bot列表并将其用户代理添加到筛选列表中

这也很好。只要去掉所有的B,你就可以了

编辑:has完成的惊人工作”以一种更容易查询和解析的形式出现。robotstxt.org/db/all.txt每个新机器人都由一个机器人id定义:XXX。您应该能够每周下载一次,并将其解析为脚本可以使用的内容,就像您可以在他的评论中看到的那样


希望有帮助

在您的页面中有一个1x1 gif,您可以随时跟踪。如果加载,则可能是浏览器。如果没有加载,很可能是一个脚本。

考虑一个伪装成CSS背景图像的PHP统计脚本(给出正确的响应头-至少是内容类型和缓存控制-但写出一个空图像)

一些机器人解析JS,但肯定没有人加载CSS图像。与JS一样,一个陷阱是你会用它排除基于文本的浏览器,但这还不到万维网人口的1%。而且,禁用CSS的客户端肯定比禁用JS的客户端(手机!)要少


为了使将来更高级的机器人(Google、Yahoo等)可能会对其进行爬网的情况(一般情况下)更加可靠,请在
robots.txt
中禁止指向CSS图像的路径(更好的机器人无论如何都会尊重这一点).

我们不是试图维护一个不可能长的蜘蛛用户代理列表,而是寻找能够暗示人类行为的东西。其原理是我们将会话数分为两位数:单页会话数和多页会话数。我们删除一个会话cookie,并使用它来确定多页会话。我们还删除了一个持久的“机器ID”cookie;返回的用户(找到机器ID cookie)被视为多页会话,即使他们在该会话中仅查看一页。例如,你可能还有其他一些特征,暗示“人类”访客的推荐人是谷歌(尽管我认为MS Search bot睫毛膏作为标准的用户代理,使用了一个真实的关键字来检查网站是否显示了与他们的bot不同的内容,并且这种行为看起来很像人类!)

当然,这并不是不可磨灭的,特别是如果你有很多人到达并“点击关闭”,这对你来说不是一个好的统计数字,如果你有大多数人关闭了cookies(在我们的情况下,如果没有启用会话cookies,他们将无法使用我们的[购物车]网站)


从我们的一个客户那里获取数据,我们发现每天的单次会话计数到处都是——每天的数量级不同;然而,如果我们从每天的多页会话中减去1000,那么我们就有一个近乎线性的速率,即每个订单4个多页会话/每个购物篮2个会话。我真的不知道每天还有1000个多页面会话是什么

我很惊讶没有人建议实施一个。在另一端有一个聊天室,里面有人

一个程序化的解决方案是不行的:看看当

这两个“角色”都是70年代在人工智能研究过程中编写的“聊天”机器人:看看它们能骗真人多久,让真人以为自己也是人。帕里的角色被塑造成一个偏执型精神分裂症患者,医生被塑造成一个刻板的心理治疗师


下面是使用javascript记录鼠标移动和滚动。你可以从记录的数据判断它是人还是机器人。除非机器人真的很复杂,并且模仿人类鼠标的动作。

先决条件-已设置referrer

apache级别:

LogFormat "%U %{Referer}i %{%Y-%m-%d %H:%M:%S}t" human_log
RewriteRule ^/human/(.*)   /b.gif [L]
SetEnv human_session 0

# using referrer
SetEnvIf Referer "^http://yoursite.com/" human_log_session=1

SetEnvIf Request_URI "^/human/(.*).gif$" human_dolog=1
SetEnvIf human_log_session 0 !human_dolog
CustomLog logs/human-access_log human_log env=human_dolog
在网页中,嵌入当前url.gif的
/human/$hashkey\u
如果是机器人,则不太可能设置引用者(这是一个灰色区域)。
如果使用浏览器地址栏直接点击,则不包括该地址栏

每天结束时,
/human-access\u log
s
<?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!";
?>