Преглед изворни кода

取消tls client hello sni

陈国伟 пре 4 година
родитељ
комит
aa523fb126

+ 1 - 1
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;
 

+ 18 - 2
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<GithubDnsHttpHandler>();
 

+ 1 - 1
FastGithub/Properties/launchSettings.json

@@ -7,7 +7,7 @@
       "launchBrowser": true,
       "environmentVariables": {
         "DOTNET_ENVIRONMENT": "Development",
-        "Logging__LogLevel__Default": "Trace"
+        //"Logging__LogLevel__Default": "Trace"
       }
     }
   }