44using System . Diagnostics ;
55using System . Linq ;
66using System . Net . Http ;
7+ using System . Net . Http . Headers ;
78using System . Text ;
89using System . Threading ;
910using System . Threading . Tasks ;
@@ -55,8 +56,9 @@ public async Task<SpeedTestResult> TestSpeedAsync(SpeedUnit speedUnit,
5556 var latency = await TestServerLatencyAsync ( server ) ;
5657 serverLatency . TryAdd ( server , latency ) ;
5758 }
58- catch
59+ catch ( Exception ex )
5960 {
61+ Console . WriteLine ( ex . Message ) ;
6062 // ignore this server
6163 }
6264 }
@@ -66,7 +68,7 @@ public async Task<SpeedTestResult> TestSpeedAsync(SpeedUnit speedUnit,
6668
6769 private async Task < Server [ ] > FetchServersAsync ( )
6870 {
69- using var httpClient = new HttpClient ( ) ;
71+ using var httpClient = GetHttpClient ( ) ;
7072 var serversXml = await httpClient . GetStringAsync ( Constants . ServersUrl ) ;
7173 return serversXml . DeserializeFromXml < ServersList > ( ) . Servers ?? Array . Empty < Server > ( ) ;
7274 }
@@ -82,7 +84,7 @@ private async Task<int> TestServerLatencyAsync(Server server, int tests = 4)
8284
8385 var latencyUrl = GetBaseUrl ( server . Url ) . Append ( "latency.txt" ) ;
8486 var stopwatch = new Stopwatch ( ) ;
85- using var httpClient = new HttpClient ( ) ;
87+ using var httpClient = GetHttpClient ( ) ;
8688
8789 var test = 1 ;
8890 do
@@ -98,7 +100,7 @@ private async Task<int> TestServerLatencyAsync(Server server, int tests = 4)
98100 test ++ ;
99101 } while ( test < tests ) ;
100102
101- return ( int ) stopwatch . ElapsedMilliseconds / tests / 2 ;
103+ return ( int ) stopwatch . ElapsedMilliseconds / tests ;
102104 }
103105
104106 private async Task < double > TestUploadSpeedAsync ( Server server , int parallelUploads )
@@ -145,13 +147,13 @@ private async Task<double> TestSpeedAsync<T>(IEnumerable<T> testData,
145147 var timer = new Stopwatch ( ) ;
146148 var throttler = new SemaphoreSlim ( parallelTasks ) ;
147149
148- using var httpClient = new HttpClient ( ) ;
149150 timer . Start ( ) ;
150151 long totalBytesProcessed = 0 ;
151152
152153 var downloadTasks = testData . Select ( async data =>
153154 {
154155 await throttler . WaitAsync ( ) . ConfigureAwait ( false ) ;
156+ using var httpClient = GetHttpClient ( ) ;
155157 try
156158 {
157159 var size = await doWork ( httpClient , data ) . ConfigureAwait ( false ) ;
@@ -247,5 +249,15 @@ private static string GetBaseUrl(string url)
247249 {
248250 return new Uri ( new Uri ( url ) , "." ) . OriginalString ;
249251 }
252+
253+ private static HttpClient GetHttpClient ( )
254+ {
255+ var httpClient = new HttpClient ( ) ;
256+ httpClient . DefaultRequestHeaders . UserAgent . ParseAdd (
257+ "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/112.0.0.0 Safari/537.36" ) ;
258+ httpClient . DefaultRequestHeaders . Accept . ParseAdd ( "text/html, application/xhtml+xml, */*" ) ;
259+ httpClient . DefaultRequestHeaders . CacheControl = new CacheControlHeaderValue { NoCache = true } ;
260+ return httpClient ;
261+ }
250262 }
251263}
0 commit comments