使用HttpClient或HttpWebRequest

时间:2019-01-14 17:32:36

标签: c# .net https sni

此问题与this Go question等效,在该问题中微不足道(尽管很hacky)才能获得所需的行为:我正在寻找一种修改TLS SNI信息的方法,该信息最终以TCP段结尾在.NET中使用高级Web客户端时创建的。

this answer中的最后一段表明,黑客可能会做类似的事情

static void Main(string[] args)
{
    HttpResponseMessage response;
    var httpRequestMessage = new HttpRequestMessage(HttpMethod.Get, "https://desiredsni.com");
    httpRequestMessage.Headers.Add("Host", "example.com");
    var handler = new HttpClientHandler
    {
        CookieContainer = new CookieContainer()
    };
    using (var client = new HttpClient(handler))
    {
        response = client.SendAsync(httpRequestMessage).Result;
    }
}

使用example.com的主机和desiredsni.com的SNI来执行对requiredsni.com的请求。但是,在我的测试中,与答案所建议的相反,SNI标签 更改为example.com,在我的情况下这不好,因为我想要的实际上是对主机的标头字段是一回事,而SNI字段是另一回事(我将完全删除SNI)。同样,让httpRequestMessage.RequestUri = new Uri("https://example.com");也将SNI标签更新为example.com。

是否有一种简单的方法可以使用HttpClientHttpWebRequest或类似方法来修改SNI字段中的内容,而无需修改TCP段中的其他任何内容?

0 个答案:

没有答案