用户代理——在robots.txt文件中添加HTML元素



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

您必须使用Javascript完成此操作。

您可以通过:

获取浏览器的用户代理。

window.navigator.userAgent

您可以选择显示或不显示画布元素。你不能直接访问你的robots.txt,除非你把它包含在你的in JS中。

文档

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

您必须使用不同的方法来"嗅探"用户的浏览器类型。JavaScript当然是一个很好的选择。如果您打算使用在服务器上执行的脚本(PHP或类似的脚本)做更复杂的事情,您可以使用这些语言为不同的浏览器提供不同的内容。网上有很多可能对你有帮助的教程

您已经描述了robots.txt的作用范围。它的链接列表必须被忽略,而不是被网络爬虫索引,这就是它的目的。然而,在网页上,您可以使用JavaScript来确定带有导航器的用户代理。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
因此,如果您希望仅向后者显示您的画布,则可能需要正则表达式:
if(/Chrome/43/.test(window.navigator.userAgent))
    alert("only if user agents contains 'Chrome/43'.");

最后,还有一些插件,比如用于Firefox和其他浏览器的User Agent Switcher,可以让你切换用户代理。您的浏览器的当前版本可以很容易地在显示您的UA或使用alert(window.navigator.userAgent);的站点上看到。

最新更新