早上使用.Net WebClient類采集亞馬遜數據,返回http 400 Bad Request錯誤,內容里面有“我們檢測到您的瀏覽器不兼容傳輸層安全協議 (TLS) 1.1 或更高版本,此協議在 Internet 上用於確保您通信的安全性。”
所以就想着可能是WebClient使用TLS版本過低,查了下資料,全局加上這段代碼。

ServicePointManager.ServerCertificateValidationCallback += ValidateRemoteCertificate;
ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;

/// <summary> /// Certificate validation callback. /// </summary> private static bool ValidateRemoteCertificate(object sender, X509Certificate cert, X509Chain chain, SslPolicyErrors error) { // If the certificate is a valid, signed certificate, return true. if (error == System.Net.Security.SslPolicyErrors.None) { return true; } Console.WriteLine("X509Certificate [{0}] Policy Error: '{1}'", cert.Subject, error.ToString()); return false; }
參考鏈接:https://stackoverflow.com/questions/20064505/requesting-html-over-https-with-c-sharp-webclient