【问题标题】:JMeter - Why sending default User-Agent headerJMeter - 为什么发送默认的 User-Agent 标头
【发布时间】:2020-03-06 05:45:33
【问题描述】:

在 JMeter 中发送 HTTP 请求时,会添加 User-Agent 头,例如:

用户代理:Apache-HttpClient/4.5.10 (Java/1.8.0_191) 内容类型:文本/纯文本 主机:api.example.com

我在文档中没有找到任何理由,

但是在JMeter docs中提到了它的存在

在本例中,我们创建了一个测试计划,告诉 JMeter 覆盖默认的“User-Agent”请求标头,并改用特定的 Internet Explorer 代理字符串。

在高级 -> 实现中更改为 Java 时,它不会发送额外的标头,因此它与 HTTPClient4 相关

HttpClient 为每个请求发送一个默认的 User-Agent 标头

但这背后的原因是什么?

当我尝试删除它时,通过在标题管理器中添加具有空值的用户代理

仍然会发送空值的 User-Agent,有没有办法避免发送 User-Agent 标头?

【问题讨论】:

    标签: jmeter httprequest apache-httpclient-4.x user-agent request-headers


    【解决方案1】:

    哪些文档? JMeter 文档不应包含关于底层 Java SDK(对于 Java 实现)或 Apache HttpComponents 对于 HttpClient4 实现的综合文档。

    对于后一种,“解释”位于 HttpClientBuilder 类中

    if (userAgentCopy == null) {
        if (systemProperties) {
            userAgentCopy = System.getProperty("http.agent");
        }
        if (userAgentCopy == null && !defaultUserAgentDisabled) { 
            userAgentCopy = VersionInfo.getUserAgent("Apache-HttpClient",
                    "org.apache.http.client", getClass());
        }
    }
    

    如果没有提供 User-Agent 标头,则底层 Apache HttpComponents 库会隐式添加默认标头,因为客户端应该根据 RFC 2616 发送 User-Agent 字符串。

    Well-behaved JMeter test should represent real browser as close as possible 因此,如果您看到此默认用户代理字符串,则表明您的 JMeter 设置不正确,因此您的测试结果将不可靠。退房

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-05-03
      • 1970-01-01
      相关资源
      最近更新 更多