4

我的网站有数据库查询;填写验证码会给您 5 分钟的查找时间。还有一些自定义代码可以检测任何自动化脚本。我这样做是因为我不希望有人对我的网站进行数据挖掘。

问题是 Google 在抓取我的网站时看不到查找结果。如果有人正在搜索查找结果中存在的字符串,我希望他们通过谷歌搜索找到该页面。

对我来说显而易见的解决方案是使用 PHP 变量$_SERVER['HTTP_USER_AGENT']绕过验证码和 Google 机器人的自定义安全代码。我的问题是这是否明智。

然后,人们可以使用 Google 的缓存查看查找结果而无需填写 CAPTCHA,但 Google 自己的脚本检测方法会阻止他们对这些页面进行数据挖掘吗?

或者是否有某种方式让人们$_SERVER['HTTP_USER_AGENT']看起来像 Google 以绕过安全措施?

提前致谢。

4

2 回答 2

4

或者人们是否有办法让 $_SERVER['HTTP_USER_AGENT'] 显示为 Google 以绕过安全措施?

确实。用户代理很容易伪造。参见例如Firefox 的用户代理切换器。垃圾邮件机器人也很容易将其用户代理标头设置为 Google 机器人。

不过,它可能仍然值得一试。我会说只是尝试一下,看看结果如何。如果遇到问题,您可能不得不考虑另一种方式。

识别 Google 机器人的另一种方法可能是它使用的 IP 范围。我不知道机器人是否使用定义的 IP 范围 - 可能不是这种情况,你必须找出。

更新:似乎可以通过分析其 IP 来验证 Google Bot。来自Google 网站管理员中心:如何验证 Googlebot

告诉网站管理员根据具体情况使用 DNS 进行验证似乎是最好的方法。我认为推荐的技术是进行反向 DNS 查找,验证该名称是否在 googlebot.com 域中,然后使用该 googlebot.com 名称进行相应的正向 DNS->IP 查找;例如:

主机 66.249.66.1 1.66.249.66.in-addr.arpa 域名指针 crawl-66-249-66-1.googlebot.com。

主机 crawl-66-249-66-1.googlebot.com crawl-66-249-66-1.googlebot.com 的地址为 66.249.66.1

我认为仅进行反向 DNS 查找是不够的,因为欺骗者可以设置反向 DNS 指向 crawl-abcd.googlebot.com。

于 2010-04-12T11:14:27.057 回答
1

$_SERVER['HTTP_USER_AGENT']参数不安全,如果他们真的想得到你的结果,人们可以伪造它。您的决定是一项商业决定,基本上您是否希望降低安全性并可能允许人们/机器人抓取您的网站,或者您是否希望对谷歌隐藏您的结果。

于 2010-04-12T11:13:13.563 回答