首页 文章

将HTML元素添加到robots.txt

提问于
浏览
0

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

3 回答

  • 0

    你必须用Javascript做到这一点 .

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

    window.navigator.userAgent

    然后,您可以选择显示或不显示canvas元素 . 除非您将其包含在JS中,否则您无法直接访问 robots.txt .

    Documentation

  • 0

    robots.txt文件适用于搜索引擎和其他网络抓取工具,而不适用于普通用户 . 听起来你想要针对后者,这使得robots.txt不适合这项任务 . (此外:即使您定位网络抓取工具,也不可能) .

    您将不得不使用不同的方式来“嗅探”用户的浏览器类型 . JavaScript肯定是一个很好的可能性 . 如果您打算使用在服务器(PHP等)上执行的脚本执行更复杂的操作,则可以使用这些语言为不同的浏览器提供不同的内容 . 网络上有很多教程,可能对您有所帮助 .

  • 3

    您已经描述了robots.txt的扩展 . 它的链接列表必须被忽略,而不是由webcrawler索引,这是它的目的 . 但是,在网页上,您可以使用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'.");
    

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

相关问题