【问题标题】:Detect non human visitors检测非人类访客
【发布时间】:2016-08-01 05:29:53
【问题描述】:

我页面上的访问者可以选择将他们喜欢的设置保存为 cookie(我知道有些人反对,但这不是本次讨论的重点)。

如果用户没有 cookie,系统会询问用户是否要设置设置,如果是,则使用 javascript 重定向。

我可以检测到非人类流量而不向他们提出“问题”吗? 我注意到谷歌速度分析总是被重定向到我的设置页面,这在分析页面中给了我错误的数据。

那么我可以通过 php 或 javascript 检测非人类流量吗?

编辑:我更愿意在 php 中检测它们,因为我计划尽可能地淘汰 javascript

【问题讨论】:

  • 使用验证码,使用客户端脚本生成验证码非常简单,但请确保启用了 javascript。
  • @Prabhat,谢谢你的建议。我会仔细看看的。我以前对验证码一无所知。
  • 所有搜索引擎都使用特定的用户代理,可以在php中检测和处理。您还可以设置一个 robots.txt,不包括您的设置页面。
  • 值得注意的是,“robots.txt”文件并没有阻止爬虫访问列出的 URI,它只是礼貌地要求它们不要这样做。事实上,大多数非法爬虫连robots.txt文件都不会去寻找,更不用说服从了。

标签: javascript php


【解决方案1】:

CodeIgniter 框架中可能有一种方法,但不确定原始 php 或其他 f/w。如果您不使用 CodeIgniter,您可以下载框架,挖掘相应库的源代码并将其转换为您的特定需求。

see the documentation link

【讨论】:

  • 会调查的。除了机器人识别之外,它还有一些不错的东西。谢谢!
  • 真是垃圾。标题可以组成。框架无关紧要
【解决方案2】:

我建议使用蜜罐来检测它们。

这是一个有趣的Article

【讨论】:

  • 如果有时间,我会阅读它,这是一篇非常棒的文章。至少当我打开链接时,它在我的手机上看起来很不错。谢谢!
【解决方案3】:

这很容易做到,即使如此,也有很多选择,具体取决于您的具体需求。

这是一个简单的解决方案:

  • 在每个页面上,将第一个链接设置为“不可见”(不透明度:0),该链接指向某个位置,该位置可以触发一些 javascript,或者指向您希望机器人使用的某个位置;也将其置于屏幕外(顶部:-999px)

  • 在页面加载时设置timeout(例如 500 毫秒),以便机器人有时间“点击”链接

  • 超时后,应该是人类用户——如果“陷阱”没有被触发

  • 您也可以选择检查鼠标活动,但以上就足够了

这应该很好用,因为“人类用户”不能点击链接,但机器人可以,因为它读取 HTML。注意不要:“display:none”,否则机器人可能会跳过这个。

【讨论】:

    【解决方案4】:

    使用蜜罐 - 机器人可能会填充的空的、不可见(但不是隐藏)的字段。您也可以尝试捕获点击事件,因为 Google 等机器人不太可能模仿它抓取您的页面。总体而言,您最好的选择是使用您的 .htaccess 文件(或 robots.txt)来禁止抓取不需要的页面 - 请查看:Block all bots/crawlers/spiders for a special directory with htaccess

    【讨论】:

    • +1,虽然必须有一个库已经这样做了?从头开始实施似乎是一件棘手的事情。如果还没有图书馆,那么@Andreas 你会开源你的解决方案吗?因为应该有一个图书馆来做这件事;)
    • @alexanderbird 我不使用任何库或任何预先在我的页面上制作的东西,一切都是从头开始完成的。我的页面“只是”一个高级天气页面,我喜欢从头开始做一些事情:-)
    • @Vellmir 谢谢!不确定我想完全阻止它们。只要确保他们没有得到是/否选项的问题。由于某种原因,他们似乎都单击“是”,这意味着,由于他们没有 cookie,因此重定向到设置页面。你说的蜜罐是什么意思?我会用谷歌搜索我保证,但是机器人会用什么来填写这个字段? !="" 够了吗?
    • !="" 足以让他们在隐藏字段中放置的任何内容都表明他们是机器人(没有人类,普通访问者会看到该字段,因此即使错误地也无法填写)。在您的 htaccess 和 robots.txt 文件中,您只能阻止站点中的某些页面 - 例如设置之一,机器人不会遵循重定向。您可以将两者结合起来,让您的模式窗口将机器人重定向到另一个 - 对他们来说更有价值的页面
    • PS:蜜罐字段只是一个不可见的表单字段(使用 css 隐藏而不是 type:hidden - 后者很容易被机器人理解)。默认情况下,您将该字段的值留空,并在提交表单时检查该字段是否为空。机器人将填写它(他们需要填写所有字段以免遇到简单的验证错误),用户将无法
    猜你喜欢
    • 1970-01-01
    • 2013-08-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-11-18
    • 1970-01-01
    • 1970-01-01
    • 2013-09-24
    相关资源
    最近更新 更多