如何确定真正的用户是浏览我的网站或只是爬行或其他PHP

How to determine real user are browsing my site or just crawling or else in PHP

本文关键字:网站 爬行 PHP 其他 我的 浏览 何确定 用户      更新时间:2023-09-26

我想知道用户是否真的在看我的网站(我知道它只是由浏览器加载并显示给人类,而不是真正的人类看它)。

我知道有两种方法行得通。

    Javascript。
  1. 如果页面是由浏览器加载的,它将自动运行js代码,除非浏览器禁止。然后使用AJAX回调服务器。

  2. 1×1 transparent image of in html.

    使用img回调服务器

有谁知道这些方法的陷阱或更好的方法吗?

另外,我不知道如何确定0×0或1×1 iframe来防止上述方法

  1. bot可以访问浏览器,例如http://browsershots.org

  2. bot可以请求1x1图像

简而言之,没有真正的方法来判断。你能做的最好的事情就是使用验证码,但这会降低人类的体验。

只需在需要的地方使用验证码(用户注册等)。

我想知道用户是否真的在看我的网站(我知道它只是由浏览器加载并显示给人类,而不是真正的人类看它)。

图片方式似乎更好,因为Javascript也可能被普通用户关闭。机器人通常不加载图像,所以这应该确实有效。尽管如此,如果您只想过滤一组已知的机器人(比如Google和Yahoo),您可以简单地检查HTTP User Agent报头,因为这些机器人实际上会将自己标识为机器人。

你可以创建一个Google网站管理员帐户它会告诉你如何为机器人配置你的网站还显示如何机器人将读取您的网站

我同意其他人的观点,这真的很难——通常好的爬虫会将自己标识为爬虫,所以使用User-Agent是过滤掉这些家伙的好方法。用户代理字符串的一个很好的源代码可以在http://www.useragentstring.com上找到。我曾经使用过Chris Schulds的php脚本(http://chrisschuld.com/projects/browser-php-detecting-a-users-browser-from-php/),效果很好。

你也可以在服务器层使用Apache配置或。htaccess文件过滤这些家伙,但我发现这是一场失败的战斗。

然而,如果你观察你的服务器日志,你会看到许多可疑的活动与有效的(浏览器)用户代理或时髦的用户代理,所以这只能工作到目前为止。你可以玩IP黑名单/白名单游戏,但这很快就会过时。

很多爬虫加载图像(即谷歌图像搜索),所以我不认为这将一直工作。

很少有爬虫会有Javascript引擎,所以这可能是区分它们的好方法。让我们面对现实吧,现在有多少用户真正转向Javascript ?我看过相关统计数据,但我认为这些统计数据被大量没有表明自己身份的爬虫/机器人所扭曲。然而,需要注意的是,我已经看到Google bot 现在确实运行Javascript。

所以,底线是,这很难。我肯定会采用混合策略——如果你使用用户代理、图像、IP和javascript进行过滤,我相信你会得到大多数机器人,但也会有一些机器人通过过滤。

另一个想法,您可以总是使用已知的Javascript浏览器怪癖来测试报告的用户代理(如果它是一个浏览器)是否真的是那个浏览器?

像google或yahoo这样的"好"机器人通常会尊重robots.txt文件。通过用户代理进行过滤也可能有所帮助。

但最终,如果有人想获得自动访问权限,这将是很难阻止的;

检查http请求的User-Agent报头。爬虫应该将此设置为除已知浏览器之外的任何浏览器。

这里是google-bot头http://code.google.com/intl/nl-NL/web/controlcrawlindex/docs/crawlers.html

在php中,您可以使用以下命令获取用户代理:

$Uagent=$_SERVER['HTTP_USER_AGENT'];

然后将其与已知的头文件进行比较作为提示,preg_match()可以在几行代码中方便地完成这一切。