From aa523fb1269a66392b90b9baa6b186d186c31ff7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=99=88=E5=9B=BD=E4=BC=9F?= <366193849@qq.com> Date: Tue, 13 Jul 2021 11:29:19 +0800 Subject: [PATCH] =?UTF-8?q?=E5=8F=96=E6=B6=88tls=20client=20hello=20sni?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ScanMiddlewares/HttpsScanMiddleware.cs | 2 +- .../ScannerServiceCollectionExtensions.cs | 20 +++++++++++++++++-- FastGithub/Properties/launchSettings.json | 2 +- 3 files changed, 20 insertions(+), 4 deletions(-) diff --git a/FastGithub.Scanner/ScanMiddlewares/HttpsScanMiddleware.cs b/FastGithub.Scanner/ScanMiddlewares/HttpsScanMiddleware.cs index 64ac325..6afe932 100644 --- a/FastGithub.Scanner/ScanMiddlewares/HttpsScanMiddleware.cs +++ b/FastGithub.Scanner/ScanMiddlewares/HttpsScanMiddleware.cs @@ -56,7 +56,7 @@ namespace FastGithub.Scanner.ScanMiddlewares using var request = new HttpRequestMessage(); request.Method = new HttpMethod(rule.Method); - request.RequestUri = new Uri(new Uri($"https://{context.Address}"), rule.Path); + request.RequestUri = new Uri(new Uri($"http://{context.Address}:443/"), rule.Path); request.Headers.Host = context.Domain; request.Headers.ConnectionClose = setting.ConnectionClose; diff --git a/FastGithub.Scanner/ScannerServiceCollectionExtensions.cs b/FastGithub.Scanner/ScannerServiceCollectionExtensions.cs index b80e58d..0a75332 100644 --- a/FastGithub.Scanner/ScannerServiceCollectionExtensions.cs +++ b/FastGithub.Scanner/ScannerServiceCollectionExtensions.cs @@ -4,6 +4,8 @@ using Microsoft.Extensions.DependencyInjection; using System; using System.Net.Http; using System.Net.Http.Headers; +using System.Net.Security; +using System.Net.Sockets; namespace FastGithub { @@ -31,11 +33,25 @@ namespace FastGithub httpClient.DefaultRequestHeaders.Accept.TryParseAdd("*/*"); httpClient.DefaultRequestHeaders.UserAgent.Add(defaultUserAgent); }) - .ConfigurePrimaryHttpMessageHandler(() => new HttpClientHandler + .ConfigurePrimaryHttpMessageHandler(() => new SocketsHttpHandler { Proxy = null, UseProxy = false, - AllowAutoRedirect = false + AllowAutoRedirect = false, + ConnectCallback = async (ctx, ct) => + { + var socket = new Socket(SocketType.Stream, ProtocolType.Tcp); + await socket.ConnectAsync(ctx.DnsEndPoint, ct); + var stream = new NetworkStream(socket, ownsSocket: true); + if (ctx.InitialRequestMessage.Headers.Host == null) + { + return stream; + } + + var sslStream = new SslStream(stream, leaveInnerStreamOpen: false, delegate { return true; }); + await sslStream.AuthenticateAsClientAsync(string.Empty, null, false); + return sslStream; + } }) .AddHttpMessageHandler(); diff --git a/FastGithub/Properties/launchSettings.json b/FastGithub/Properties/launchSettings.json index b100c0a..20866f8 100644 --- a/FastGithub/Properties/launchSettings.json +++ b/FastGithub/Properties/launchSettings.json @@ -7,7 +7,7 @@ "launchBrowser": true, "environmentVariables": { "DOTNET_ENVIRONMENT": "Development", - "Logging__LogLevel__Default": "Trace" + //"Logging__LogLevel__Default": "Trace" } } }