gpt4 book ai didi

javascript - 让 Google 机器人跳过指定脚本

转载 作者:行者123 更新时间:2023-12-03 04:14:28 25 4
gpt4 key购买 nike

我有一个函数(Java),可以检查是否设置了指定的“我接受条款”cookie,如果没有,它会将用户重定向到“条款”页面。

现在很容易绕过,但这不是重点。

我对 Google 机器人和其他抓取工具感到担忧。我读过,重定向 Google 机器人会导致页面上出现 301,然后我的所有页面都会出现 301 到条款页面...不是上帝。

所以我想知道如何告诉我的脚本,如果它是 Google 机器人(和其他机器人),则退出脚本并忽略重定向?

这就是现在的样子:

    <!-- see if the i agree cookie is set, else send them to the info page -->

function readCookie(name) {
var nameEQ = name + "=";

var ca = document.cookie.split(';');
for(var i=0;i < ca.length;i++) {
var c = ca[i];
while (c.charAt(0)==' ') c = c.substring(1,c.length);
if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);

}

window.location="https://my.site.se/startpage.html";
return null;

}

它的调用者:

  <script>
readCookie('acceptterms');
</script>

这是一个非常简单的脚本,但我仍然花了几个小时才开始工作..

最佳答案

将重定向留给客户端通常不是一个好主意。从您的客户端检测网络爬虫也许也不是一个好主意。

如果对你的用例没有帮助,很大程度上可以通过javascript来判断你的访问者是否是爬虫。

navigator.userAgent 为您提供一个 userAgent 字符串,这是访问您页面的浏览器的一种签名。对于抓取工具,此签名可能包含“bot”、“google”、“baidu”等词语。

首先定义一个通用正则表达式来匹配这些爬虫用户代理字符串:

var crawlerAgentRegex = /bot|google|aolbuild|baidu|bing|msn|duckduckgo|teoma|slurp|yandex/i;

接下来用 if 检查包装您的重定向语句:

if (crawlerAgentRegex.test(navigator.userAgent)) {
console.log('not gonna redirect these guys');
} else {
window.location="https://my.site.se/startpage.html";
}

顺便说一句,在您的案例中,您不需要在函数体末尾返回 null

关于javascript - 让 Google 机器人跳过指定脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44201117/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com