PHP函数来检测真实的浏览器

PHP函数来检测真实的浏览器,php,browser,Php,Browser,有没有办法检测用户是否在使用真正的浏览器 我可以从$\u服务器['HTTP\u user\u agent']获取用户代理字符串。但我不确定它是否是真正的浏览器。我们可以在php端做些什么来看看它是否是真正的浏览器吗?不,您无法可靠地检测发送的请求是否是“真正的浏览器”。(假设“真正的浏览器”指的是安装在标准消费类操作系统上的chrome/firefox/safari,而不是curl、ajax调用或爬虫程序等。) 这是因为用户代理只是一个http头字段。你可以很容易地伪造它。例如,使用curl发送

有没有办法检测用户是否在使用真正的浏览器


我可以从
$\u服务器['HTTP\u user\u agent']
获取用户代理字符串。但我不确定它是否是真正的浏览器。我们可以在php端做些什么来看看它是否是真正的浏览器吗?

不,您无法可靠地检测发送的请求是否是“真正的浏览器”。(假设“真正的浏览器”指的是安装在标准消费类操作系统上的chrome/firefox/safari,而不是curl、ajax调用或爬虫程序等。)

这是因为用户代理只是一个http头字段。你可以很容易地伪造它。例如,使用curl发送以下请求在您的服务器上看起来就像我在Mac上使用常规Chrome 44一样:

curl -H "User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/44.0.2403.89 Safari/537.36" http://your-website.com


但是除了用户代理头不可靠之外:您当然可以使用该字段来确定请求是否由“预期”客户机发出。在99.9%的请求中,您将在用户代理标头中找到“真实”客户端。但是你不应该让任何安全敏感功能依赖于它。

如何定义“真正的浏览器”?真正的浏览器意味着来自真实用户的请求,而不是像curl脚本一样伪造访问。谢谢Simon的消息。我在访问日志中注意到的是。。有人向php访问日志发出请求,但没有人向javascript或iframe发出请求。这些请求是在我完成元刷新后发出的,假设元刷新只会使用有效的浏览器进行。所有用户代理看起来都非常有效。我正在检查php的setcookie函数,看看是否有什么可以做的。