Php 检测启用Cookie的爬行器或浏览器
许多蜘蛛/爬虫访问我们的新闻网站。我们依靠GeoIP服务来确定访客的实际位置,并为他们提供相关内容。因此,我们开发了一个带有Php 检测启用Cookie的爬行器或浏览器,php,drupal,cookies,web-crawler,Php,Drupal,Cookies,Web Crawler,许多蜘蛛/爬虫访问我们的新闻网站。我们依靠GeoIP服务来确定访客的实际位置,并为他们提供相关内容。因此,我们开发了一个带有module_init()函数的模块,该模块将IP发送到MaxMind,并使用位置信息设置cookie。为了避免在每个页面视图上发送请求,我们首先检查cookie是否已设置,如果未设置,则发送请求以获取信息并设置cookie。这对普通客户机很好,但当爬行器在站点中爬行时就不起作用了。每个页面视图都会向MaxMind提示一个查询,而此活动会变得有些昂贵。我们正在寻找一种解决方
module_init()
函数的模块,该模块将IP发送到MaxMind,并使用位置信息设置cookie。为了避免在每个页面视图上发送请求,我们首先检查cookie是否已设置,如果未设置,则发送请求以获取信息并设置cookie。这对普通客户机很好,但当爬行器在站点中爬行时就不起作用了。每个页面视图都会向MaxMind提示一个查询,而此活动会变得有些昂贵。我们正在寻找一种解决方案来识别爬虫,或者,如果更简单的话,启用cookies的合法浏览器,并且只在有用的时候查询MaxMind。爬虫和爬虫通常都有一个不同的用户代理,也许你可以对其进行筛选?老实说,这不是唯一可以做的事情。
我想提出我过去为解决这个问题所做的工作。使用浏览器检测脚本有一系列的类用于检测浏览器。然后对照已知浏览器的数据库检查浏览器。然后,如果浏览器在您的列表中,则允许调用服务(如果不使用“最佳猜测”脚本)
我的意思是这样的:
因此,如果某个浏览器类型不在您的列表中,它将不会使用您的付费服务数据库,而是使用该类,该类可以尽可能接近。通过这种方式,你可以两全其美,机器人不会在你的ip服务上获得点击率,如果用户因为某种原因错过了你的浏览器检查,他们很可能会得到正确的位置,因此在你的网站上看起来很正常
这有点神经质我知道我只是希望你明白我想说的
真正的答案是,这个问题没有简单的答案,也没有100%正确的答案,我在很多网站上都做过同样的事情,为了弄清楚这一点我都发疯了,这已经接近完美了。因为99%的ligit爬虫都有这样的值:
$_SERVER['HTTP_USER_AGENT'] = 'Googlebot', 'Yammybot', 'Openbot', 'Yahoo'... etc.
一个简单的浏览器检查就可以了,但是那些可疑的浏览器可能会响应IE6或其他东西
我真的希望这有帮助,就像我说的,这里没有真正的答案,至少不是我发现是100%,这有点像发现用户现在是否使用手持设备,你可以在那里得到99%,但永远不会得到100%,它总是会发现客户端使用的1%不起作用,哈哈。检测网络爬虫(合法和邪恶)可以通过ATL webcrawler API完成,网址为谢谢。你给了我一个主意。我用用户代理为每个请求写一个日志。过滤明显的是很容易的。谢谢,谢谢。我通过写用户代理来记录并添加条件来过滤合法的爬虫程序。技术含量低但有效。谢谢