如何通过PHP识别google/yahoo/msn的网页抓取工具?

omg*_*omg 1 php web-crawler

据我所知,

$ _SERVER ['REMOTE_HOST']应以"google.com"或"yahoo.com"结尾.

但它是最保证的方法吗?

还有其他出路吗?

cle*_*tus 9

您可以按用户代理和IP地址识别搜索引擎.更多信息可以在如何识别搜索引擎蜘蛛和网络机器人中找到.值得注意的还有这个清单.但是,您不应将用户代理(甚至远程主机)视为必然的确定性.用户代理实际上只不过是另一端告诉你的东西,它当然可以自由地告诉你任何事情.编写代码假装成Googlebot是微不足道的.

在PHP中,这意味着看$_SERVER['HTTP_USER_AGENT']$_SERVER['REMOTE_HOST'].

有很多搜索引擎,但老实说,这只是你真正关心的大多数搜索引擎.谷歌和雅虎几乎拥有全部市场.但当然这取决于你想要达到的目标.

注意:要非常小心处理的搜索引擎不同,以普通用户(如"神雕侠侣连字符的网站"乔尔把它)的,当涉及到的内容.在特别令人震惊的情况下,这可能会使您的网站从该搜索引擎中删除.即使这种情况没有发生,你也可能会让一些用户离开去网站期待某些东西.如果他们出现了"请注册以查看此文章"框,那么请抓住您的高跳出率.


Cha*_*rch 8

首先,我希望您不要尝试这样做,以便为搜索引擎机器人提供与您的网站包含的普通用户不同的内容.如果他们发现您这样做,您的网站将完全从其列表中删除.只要您了解它的风险,您通常可以找到有关他们将使用的唯一用户代理的信息:

  • 验证Googlebot(如果您想确定,请使用用户代理,反向DNS)
  • 雅虎的用户代理将包含"Slurp"

但是,有些人(通常是表现不佳的)网络抓取工具会将其用户代理字符串设置为与Google等"合法"抓取工具相同.您可以通过对机器人的IP地址/主机名进行查找来捕获这些内容,以确保它们实际上来自Google/Yahoo/etc.有关在主机名查找中查找内容的更多信息(来自本文):

  • Google抓取工具将以googlebot.com结尾,例如crawl-66-249-70-244.googlebot.com.
  • Yahoo抓取工具将以llf520064.crawl.yahoo.net中的crawl.yahoo.net结尾.
  • Live Search抓取工具将以msnbot-65-55-104-161.search.msn.com中的search.msn.com结尾.
  • Ask crawler将以crawler4037.ask.com中的ask.com结尾.


Chr*_*tow 5

你可能最好使用$ _SERVER ['HTTP_USER_AGENT']并寻找Googlebot或Yahoo! 啜食.