【问题标题】:PHP function to detect real browser检测真实浏览器的PHP函数
【发布时间】:2021-05-25 02:11:08
【问题描述】:

有什么方法可以检测用户是否使用的是真实浏览器?

我能够从$_SERVER['HTTP_USER_AGENT'] 获取用户代理字符串。但我不确定它是否是真正的浏览器。我们能不能在php端做点什么来看看它是不是真正的浏览器?

【问题讨论】:

  • 如何定义“真正的浏览器”?
  • 真实浏览器是指来自真实用户的请求,而不是像 curl 脚本那样伪造访问。

标签: php browser


【解决方案1】:

不,您无法可靠地检测发送的请求是否是“真正的浏览器”。 (假设“真正的浏览器”是指安装在标准消费者操作系统上的 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% 的请求中,您会在用户代理标头中找到“真实”客户端。但是你不应该让任何安全敏感的函数依赖它。

【讨论】:

  • 感谢西蒙的留言。我在访问日志中注意到的是......这些请求是在我完成元刷新之后出现的,假设元刷新只会使用有效的浏览器进行。所有用户代理看起来都很有效。我正在检查 php 的 setcookie 函数,看看是否有我可以为此做的事情。
猜你喜欢
  • 2013-03-03
  • 2011-04-18
  • 1970-01-01
  • 2011-09-14
  • 2020-03-31
  • 2013-01-31
  • 2014-12-28
  • 2011-04-15
  • 1970-01-01
相关资源
最近更新 更多