多语言网站和机器人检测

Posted

技术标签:

【中文标题】多语言网站和机器人检测【英文标题】:Multilingual website and bot detection 【发布时间】:2017-01-31 08:42:28 【问题描述】:

我有一个实现多语言的网站。

我按子域划分我的语言。

fr-fr.mywebsite.com
es-es.mywebsite.com
www.mywebsite.com // root domain => neutral language for bots

在子域上,如果没有设置语言 cookie,我使用子域作为语言代码。

在主域 (www) 上,如果未设置语言 cookie,则:

如果是机器人,我会使用中性语言 如果不是机器人,我会使用“accept-language”标头检测用户语言。

如何安全检测是否是机器人?我阅读了有关此事的旧主题,但人们只是使用“接受语言”,因为机器人没有发送此标头,但是,迄今为止,谷歌发送此标头...

检测它是不是机器人更安全,还是反过来检测它是否是网络浏览器更安全? 因为如果未检测到机器人,则会以错误的语言对网站进行索引。

想法?

【问题讨论】:

为什么不使用语言注释?这样,机器人将找到备用语言页面 我也使用它们。但是主域必须自动检测用户语言:) 嗨@Ndrou,我仍然不明白为什么您需要查找用户是否是机器人,如果请求具有有效的“接受语言”标头,您可以将其发送到正确的语言站点,如果不是,则到您的主要或默认语言站点,如果是机器人,他将能够使用语言注释找到所有替代语言并对其进行索引 【参考方案1】:

假设您使用的是 php,您可以请求 HTTP_USER_AGENT 并查看用户代理是否为“googlebot”。

if(strstr(strtolower($_SERVER['HTTP_USER_AGENT']), "googlebot"))

    // what to do

这是一个问题的链接(以及我从中提取的示例)。

how to detect search engine bots with php?

【讨论】:

是的,但不仅有googlebot,还有很多bot,yahoo、bing、yandex等……如何确保不忘记一个? 您可以添加所有这些机器人名称,只需 google 并查找机器人名称。您还可以添加一个日志,只记录HTTP_USER_AGENT 的值,然后对列表进行排序以查看是否弹出了类似机器人的名称。所有知名的搜索引擎和合法的都会命名他们的机器人。

以上是关于多语言网站和机器人检测的主要内容,如果未能解决你的问题,请参考以下文章

多语言网站的 Django 重定向

任务调度程序多语言参数

GitHub标星2400,Netflix开源笔记本工具Polynote:ScalaPython和SQL等多语言操作

使用 OWIN 和异步方法的多语言网站

多语言网站的 Htaccess 和 url [关闭]

纸壳CMS可视化建站系统搭建多语言网站