JMeter - 为什么发送默认 User-Agent header

JMeter - Why sending default User-Agent header

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

User-Agent: Apache-HttpClient/4.5.10 (Java/1.8.0_191) Content-Type: text/plain Host: api.example.com

我没有在文档中找到任何原因,

但是在 JMeter docs

中提到了它的存在

In this example, we created a Test Plan that tells JMeter to override the default "User-Agent" request header and use a particular Internet Explorer agent string instead.

在 Advanced -> Implementation 中更改为 Java 时它不会发送额外的 headers,因此它与 HTTPClient4

有关

HttpClient sends a default User-Agent header with every request

但这背后的原因是什么?

另外,当我尝试删除它时,通过在 Header Manager

中添加空值的 User-Agent

它仍然发送空值的User-Agent,有没有办法避免发送User-Agent header?

哪个文档? JMeter 文档不应包含有关 HttpClient4 实现的基础 Java SDK (for Java implementation) or Apache HttpComponents 的综合文档。

对于后一个,“解释”存在于 HttpClientBuilder class

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 header supplied the underlying Apache HttpComponents library implicitly adds the default header because clients SHOULD send the User-Agent string according to RFC 2616.

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