允许Google绕过CAPTCHA验证 - 是否合理?

时间:2010-04-12 11:10:47

标签: php captcha robot

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

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

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

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

还是会有某种方式让人们$_SERVER['HTTP_USER_AGENT']显示为Google以绕过安全措施?

提前致谢。

3 个答案:

答案 0 :(得分:4)

  

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

当然。用户代理是可笑地容易伪造的。参见例如User Agent Switcher for Firefox。垃圾邮件机器人也很容易将其用户代理标头设置为谷歌机器人。

但是,它仍然值得一试。我想说试试看看结果如何。如果你遇到问题,你可能需要考虑另一种方式。

识别Google bot 的另一种方法可能是它使用的IP范围。我不知道机器人是否使用已定义的IP范围 - 可能情况并非如此,您必须找出答案。

更新:似乎可以通过分析其IP来验证Google Bot。来自Google Webmaster Central: How to verify 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。

     

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

     

我认为只进行反向DNS查询就足够了,因为欺骗者可以将反向DNS设置为指向crawl-a-b-c-d.googlebot.com。

答案 1 :(得分:1)

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

答案 2 :(得分:0)

一个解决方案是安全的,有一个按ASN排序的小型Geo数据库,阻止坏的ASN Bot(代理,服务器,托管提供商作为OVH)并允许一个小Bot(谷歌,Bing,雅虎),GSM移动ASN像Orange ,SFR Vodafone ...... 只是一个想法:)