HTTP Server tests targeting Microsoft sites are reporting false-positive alerts (User-Agent issue)

Last updated: Thu Aug 29 19:37:26 GMT 2019

Recently, a non-trivial number of customer interactions revealed that a significant change has been introduced to production by Microsoft, across many of its services. This change resulted in a false-positive alerting from ThousandEyes HTTP Server tests. This short article will explain the situation and provide steps to work around the issue.

Symptoms

Roughly between August 24th and 28th, Microsoft gradually introduced a change into their infrastructure that resulted in ThousandEyes HTTP Server tests reporting test failures:

Microsoft's gradual change deployment

The tests started reporting errors due to unexpected 500 HTTP response code, accompanied by an Internal Server Error message, as shown in the following figure:

Reported "500 Internal Server Error" message

Analysis

It has been subsequently determined that Microsoft's updated infrastructure will not serve requests which use the ThousandEyes' default User Agent string for our HTTP Server tests and the HTTP Server layer of Page Load tests.

The User Agent string is a textual message that the acting User Agent (or web client) adds to its HTTP request. The information is embedded into the request as a User-Agent HTTP header before sending it to the target server. The purpose of this message is to enable the User Agent to identify itself to the server. The server then may or may not use a given information to tailor the response before sending it back to the User Agent. A common scenario is serving both mobile and desktop version of the website from the same URL, depending on the User Agent string received. For example, this is how Wikipedia automatically serves you a mobile-friendly version of the article when you open it on your smartphone.

As described in the guide to customizing User-Agent strings used in your ThousandEyes tests, the following are the default User Agent strings used by ThousandEyes:

Test typeDefault User-Agent string
HTTP Server
User-Agent: curl/7.58.0-DEV
Page Load
User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.83 Safari/537.36

Back in our Microsoft-related scenario, whenever a request to an affected target is made using the curl/7.58.0-DEV User Agent string the described error occurs. However, when the User-Agent string is changed to something resembling what is used by a real web browser (such as the default User-Agent value for Page Load test shown in the table above) the error does not manifest itself anymore.

Workaround

To adjust a test's User Agent string:

  1. Head over to Cloud & Enterprise Agents > Test Settings view
  2. Find the affected HTTP or Page Load test
  3. Expand the settings of the affected test
  4. Switch to the Advanced Settings tab.
  5. Locate the User Agent selector
  6. Change the value Default to one of the other predefined choices. Optionally, you may choose the value Custom and enter your own desired User Agent string variation.

For reference, here are two screenshots which show the Advanced Settings > User Agent settings before and after following the steps listed above:

Before:
Test with "Default" User-Agent option selected
After:
Specific User-Agent string chosen

Further information

If you have any further questions, reach out to ThousandEyes Customer Success team.