$ _SERVER [' HTTP_USER_AGENT']可以包含' +'符号?

时间:2015-06-11 09:54:32

标签: php user-agent

我想知道$_SERVER['HTTP_USER_AGENT']是否可以使用a +而不是空格输出用户代理。我在网站的投票系统中看到了很多投票,在用户代理中使用了加号,例如:

Mozilla/5.0+(Windows+NT+6.2;+WOW64;+rv:33.0)+Gecko/20100101+Firefox/33.0
Mozilla/5.0+(Windows+NT+5.1;+U;+en)+Presto/2.10+Version/11.60

我怀疑这是欺骗用户代理的某种作弊软件,但却是错误的。这是真的吗,或者用户代理真的可以这样吗?

2 个答案:

答案 0 :(得分:3)

您已经看到用户代理标头可以看起来像这样,因为它们看起来像这样。 ;)但是,真正的 Mozilla浏览器不会用+替换空格。您可以确定这不是Mozilla浏览器。

但是什么说HTTP standard

  

User-Agent请求标头字段包含有关发起请求的用户代理的信息。这是出于统计目的,跟踪协议违规以及自动识别用户代理以便定制响应以避免特定的用户代理限制。用户代理应该包含带有请求的字段。该字段可以包含多个产品令牌(第3.8节)和标识代理的注释以及构成用户代理重要部分的任何子产品。按照惯例,产品令牌按其对于识别应用程序的重要性的顺序列出。

让我们来看看3.8节

  

产品令牌用于允许通信应用程序通过软件名称和版本进行标识。大多数使用产品令牌的字段也允许列出构成应用程序重要部分的子产品,用空格分隔。按照惯例,产品按其对于识别应用程序的重要性的顺序列出。

首先,标准将其定义为客户端发送的SHOULD,这意味着根本没有必要。另一方面,3.8节建议使用空格来划分个别特征。但没有什么是真正标准化的版本号可能看起来像CoolBrowser2+。也允许评论。

答案 1 :(得分:0)

- name: Install requirements pip: requirements: /my_app/requirements.txt virtualenv: /user/home/venvs/myenv virtualenv_python: python3.4 的标准格式以及通过HTTP_USER_AGENT传递的其他数据的标准格式通常是由$_SERVER分隔的单词系列,其为URL编码。无论如何,这是一个标准,一种惯例,user_agent只是一种信息性的文本,而不是代码或语言:尽管如此,所有正常的'浏览器会发送符合标准的%20请求。如果您以一种奇怪的格式看到它,有人可能会在您的网站上试验您的费用......

相关问题