多语言网站和机器人检测
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
的值,然后对列表进行排序以查看是否弹出了类似机器人的名称。所有知名的搜索引擎和合法的都会命名他们的机器人。以上是关于多语言网站和机器人检测的主要内容,如果未能解决你的问题,请参考以下文章