Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/289.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/drupal/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 检测启用Cookie的爬行器或浏览器_Php_Drupal_Cookies_Web Crawler - Fatal编程技术网

Php 检测启用Cookie的爬行器或浏览器

Php 检测启用Cookie的爬行器或浏览器,php,drupal,cookies,web-crawler,Php,Drupal,Cookies,Web Crawler,许多蜘蛛/爬虫访问我们的新闻网站。我们依靠GeoIP服务来确定访客的实际位置,并为他们提供相关内容。因此,我们开发了一个带有module_init()函数的模块,该模块将IP发送到MaxMind,并使用位置信息设置cookie。为了避免在每个页面视图上发送请求,我们首先检查cookie是否已设置,如果未设置,则发送请求以获取信息并设置cookie。这对普通客户机很好,但当爬行器在站点中爬行时就不起作用了。每个页面视图都会向MaxMind提示一个查询,而此活动会变得有些昂贵。我们正在寻找一种解决方

许多蜘蛛/爬虫访问我们的新闻网站。我们依靠GeoIP服务来确定访客的实际位置,并为他们提供相关内容。因此,我们开发了一个带有
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完成,网址为

谢谢。你给了我一个主意。我用用户代理为每个请求写一个日志。过滤明显的是很容易的。谢谢,谢谢。我通过写用户代理来记录并添加条件来过滤合法的爬虫程序。技术含量低但有效。谢谢