【问题标题】:Adding a HTML element to the robots.txt将 HTML 元素添加到 robots.txt
【发布时间】:2015-07-11 21:31:11
【问题描述】:

我正在构建一个用于教育目的的网站。我知道 robots.txt 可用于允许或禁止用户代理、查询和目录访问。现在我在一个页面中有一个画布元素,只需要激活特定的用户代理来访问该页面。否则它应该抛出一条错误消息。这可能吗?

【问题讨论】:

    标签: html user-agent robots.txt


    【解决方案1】:

    您必须使用 Javascript 来执行此操作。

    您可以通过以下方式获取浏览器的用户代理:

    window.navigator.userAgent

    然后您可以选择显示或不显示相应的画布元素。但是,除非您将其包含在 JS 中,否则您将无法直接访问您的 robots.txt

    Documentation

    【讨论】:

    • 感谢您的快速回复并指出这一事实。真的很感激:)
    【解决方案2】:

    robots.txt 文件适用于搜索引擎和其他网络爬虫,而非普通用户。听起来您想针对后者,这使得 robots.txt 不适合此任务。 (此外:这是不可能的,即使您的目标是网络爬虫)。

    您必须使用不同的方式来“嗅探”用户的浏览器类型。 JavaScript当然是一个很好的可能性。如果您打算使用在服务器上执行的脚本(PHP 等)做更复杂的事情,您可以使用这些语言为不同的浏览器提供不同的内容。网络上到处都是可能对您有所帮助的教程。

    【讨论】:

      【解决方案3】:

      您已经描述了robots.txt 的用途。它的链接列表必须被忽略,并且不能被网络爬虫索引,这就是它的目的。但是,在网页上,您可以使用 JavaScript 来确定具有 navigator.userAgent 属性的用户代理。

      根据您的实现,您可以隐藏 <canvas> 元素并在运行时使用如下简单逻辑检查您的用户代理:

      if (window.navigator.userAgent == 'SpecificUserAgent/32')
          $("#special-canvas").show();
      else
          alert("Please come back later with another user-agent.");
      

      现在,唯一的问题是您的“特定用户代理”实际上是什么样的。典型的浏览器用户代理包含一个复杂的构建:

          Mozilla/5.0 (Windows NT 6.3; rv:36.0) Gecko/20100101 Firefox/39.0
          Opera/9.80 (X11; Linux i686; Ubuntu/14.10) Presto/2.12.388 Version/12.16
      

      所以,如果您只想向后者展示您的画布,您可能需要regular expression

      if(/Chrome\/43/.test(window.navigator.userAgent))
          alert("only if user agents contains 'Chrome/43'.");
      

      最后,还有像 User Agent Switcher 这样适用于 Firefox 和其他浏览器的插件,可以让您切换用户代理。您可以在sites that display your UA 或使用alert(window.navigator.userAgent); 轻松查看您当前的浏览器。

      【讨论】:

      • 我试过这个。我为谷歌浏览器安装了用户代理切换器。尝试了自定义和给定的用户代理。当我使用此代码时,我总是得到“未知浏览器”。 function test() { if(window.navigator.userAgent == "iPad") { alert('iPad Detected'); } else { alert('未知浏览器'); } } 我错过了什么吗?
      • iPad 的用户代理要复杂得多(例如参见this answer),它不仅仅是“iPad”。立即修复将是if(window.navigator.userAgent.indexOf('iPad') > -1)
      • iPad 只是我尝试过 Opera 的一个例子,即 firefox,custom 总是返回 false
      • 这些只是示例,只是占位符。见Wikipedia for format examples。如果您告诉我们您的“特定用户代理”,我们可以为此提供解决方案。
      • 同样的例子适用于带有“用户代理切换器”插件的 Firefox。进一步调试表明,在 chrome 中,用户代理实际上并没有改变。它保留默认的用户代理字符串“Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/43.0.2357.132 Safari/537.36”。谁能告诉我为什么?
      猜你喜欢
      • 2021-01-04
      • 2016-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-02
      • 2012-05-07
      • 2017-09-26
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多