From a4981251d04fa4fc12bfe091b2b6f6e1a52b0950 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=99=88=E5=9B=BD=E4=BC=9F?= <366193849@qq.com> Date: Mon, 9 Aug 2021 09:26:01 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0ipAddress?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- FastGithub.Configuration/DomainConfig.cs | 5 ++ FastGithub.Http/HttpClient.cs | 1 + FastGithub.Http/HttpClientHandler.cs | 5 +- FastGithub.Http/RequestContext.cs | 6 ++ FastGithub/appsettings.github.json | 6 -- FastGithub/appsettings.json | 1 + FastGithub/appsettings.pixiv.json | 98 ++++++----------------- FastGithub/appsettings.stackoverflow.json | 8 +- 8 files changed, 42 insertions(+), 88 deletions(-) diff --git a/FastGithub.Configuration/DomainConfig.cs b/FastGithub.Configuration/DomainConfig.cs index 75dbc5b..988a53f 100644 --- a/FastGithub.Configuration/DomainConfig.cs +++ b/FastGithub.Configuration/DomainConfig.cs @@ -23,6 +23,11 @@ namespace FastGithub.Configuration /// public bool TlsIgnoreNameMismatch { get; init; } + /// + /// 使用的ip地址 + /// + public string? IPAddress { get; init; } + /// /// 请求超时时长 /// diff --git a/FastGithub.Http/HttpClient.cs b/FastGithub.Http/HttpClient.cs index 064cf30..5a9e04a 100644 --- a/FastGithub.Http/HttpClient.cs +++ b/FastGithub.Http/HttpClient.cs @@ -48,6 +48,7 @@ namespace FastGithub.Http request.SetRequestContext(new RequestContext { Host = request.RequestUri?.Host, + IPAddress = this.domainConfig.IPAddress, IsHttps = request.RequestUri?.Scheme == Uri.UriSchemeHttps, TlsSniPattern = this.domainConfig.GetTlsSniPattern(), TlsIgnoreNameMismatch = this.domainConfig.TlsIgnoreNameMismatch diff --git a/FastGithub.Http/HttpClientHandler.cs b/FastGithub.Http/HttpClientHandler.cs index 1650649..f78eb46 100644 --- a/FastGithub.Http/HttpClientHandler.cs +++ b/FastGithub.Http/HttpClientHandler.cs @@ -160,7 +160,10 @@ namespace FastGithub.Http if (uri.HostNameType == UriHostNameType.Dns) { - var address = await this.domainResolver.ResolveAsync(domain, cancellationToken); + if (IPAddress.TryParse(context.IPAddress, out var address) == false) + { + address = await this.domainResolver.ResolveAsync(domain, cancellationToken); + } uriBuilder.Host = address.ToString(); request.Headers.Host = domain; context.TlsSniPattern = context.TlsSniPattern.WithIPAddress(address); diff --git a/FastGithub.Http/RequestContext.cs b/FastGithub.Http/RequestContext.cs index 9934030..0616762 100644 --- a/FastGithub.Http/RequestContext.cs +++ b/FastGithub.Http/RequestContext.cs @@ -1,4 +1,5 @@ using FastGithub.Configuration; +using System.Net; namespace FastGithub.Http { @@ -17,6 +18,11 @@ namespace FastGithub.Http /// public string? Host { get; set; } + /// + /// 请求的ip + /// + public string? IPAddress { get; set; } + /// /// 获取或设置Sni值的表达式 /// diff --git a/FastGithub/appsettings.github.json b/FastGithub/appsettings.github.json index 05dd4c5..144279a 100644 --- a/FastGithub/appsettings.github.json +++ b/FastGithub/appsettings.github.json @@ -11,27 +11,21 @@ "TlsSni": false }, "gist.github.com": { - "TlsSni": false, "TlsIgnoreNameMismatch": true }, "*.github.io": { - "TlsSni": false, "TlsIgnoreNameMismatch": true }, "*.githubapp.com": { - "TlsSni": false, "TlsIgnoreNameMismatch": true }, "*.githubassets.com": { - "TlsSni": false, "TlsIgnoreNameMismatch": true }, "*.githubusercontent.com": { - "TlsSni": false, "TlsIgnoreNameMismatch": true }, "*github*.s3.amazonaws.com": { - "TlsSni": false, "TlsIgnoreNameMismatch": true } } diff --git a/FastGithub/appsettings.json b/FastGithub/appsettings.json index 5b3023c..9c80f83 100644 --- a/FastGithub/appsettings.json +++ b/FastGithub/appsettings.json @@ -15,6 +15,7 @@ "TlsSniPattern": null, // SNI表达式,@domain变量表示取域名值 @ipaddress变量表示取ip @random变量表示取随机值,其它字符保留不替换 "TlsIgnoreNameMismatch": false, // 是否忽略服务器证书域名不匹配,当不发送SNI时服务器可能发回域名不匹配的证书,默认为false "Timeout": null, // 请求超时时长,格式为"00:02:00",默认为null + "IPAddress": null, // 请求的ip,默认为null "Destination": null, // 请求目的地,格式为绝对或相对Uri,默认null "Response": { // 阻断请求直接响应,设置了Response其它配置都不起作用了 "StatusCode": 404, // 响应的状态码 diff --git a/FastGithub/appsettings.pixiv.json b/FastGithub/appsettings.pixiv.json index aaefd46..345e950 100644 --- a/FastGithub/appsettings.pixiv.json +++ b/FastGithub/appsettings.pixiv.json @@ -2,122 +2,70 @@ "FastGithub": { "DomainConfigs": { "www.pixiv.net": { - "TlsSni": false, - "TlsIgnoreNameMismatch": true, - "Destination": "https://210.140.131.223/" + "IPAddress": "210.140.131.223" }, "pixiv.net": { - "TlsSni": false, - "TlsIgnoreNameMismatch": true, - "Destination": "https://210.140.131.226/" + "IPAddress": "210.140.131.226" }, "ssl.pixiv.net": { - "TlsSni": false, - "TlsIgnoreNameMismatch": true, - "Destination": "https://210.140.131.226/" + "IPAddress": "210.140.131.226" }, "accounts.pixiv.net": { - "TlsSni": false, - "TlsIgnoreNameMismatch": true, - "Destination": "https://210.140.131.226/" + "IPAddress": "210.140.131.226" }, "touch.pixiv.net": { - "TlsSni": false, - "TlsIgnoreNameMismatch": true, - "Destination": "https://210.140.131.226/" + "IPAddress": "210.140.131.226" }, "oauth.secure.pixiv.net": { - "TlsSni": false, - "TlsIgnoreNameMismatch": true, - "Destination": "https://210.140.131.226/" + "IPAddress": "210.140.131.226" }, "i.pximg.net": { - "TlsSni": true, - "Destination": "https://i.pixiv.cat/" + "IPAddress": "210.140.92.143" }, "sketch.pixiv.net": { - "TlsSni": false, - "TlsIgnoreNameMismatch": true, - "Destination": "https://210.140.174.37/" + "IPAddress": "210.140.174.37" }, "*.pixivsketch.net": { - "TlsSni": false, - "TlsIgnoreNameMismatch": true, - "Destination": "https://210.140.214.211/" + "IPAddress": "210.140.214.211" }, "factory.pixiv.net": { - "TlsSni": false, - "TlsIgnoreNameMismatch": true, - "Destination": "https://210.140.131.180/" + "IPAddress": "210.140.131.180" }, - "dic.pixiv.net": { - "TlsSni": false, - "TlsIgnoreNameMismatch": true, - "Destination": "https://210.140.131.222/" - }, - "en-dic.pixiv.net": { - "TlsSni": false, - "TlsIgnoreNameMismatch": true, - "Destination": "https://210.140.131.222/" + "*dic.pixiv.net": { + "IPAddress": "210.140.131.222" }, "sensei.pixiv.net": { - "TlsSni": false, - "TlsIgnoreNameMismatch": true, - "Destination": "https://210.140.131.222/" + "IPAddress": "210.140.131.222" }, "fanbox.pixiv.net": { - "TlsSni": false, - "TlsIgnoreNameMismatch": true, - "Destination": "https://210.140.131.222/" + "IPAddress": "210.140.131.222" }, "payment.pixiv.net.pixiv.net": { - "TlsSni": false, - "TlsIgnoreNameMismatch": true, - "Destination": "https://210.140.131.222/" + "IPAddress": "210.140.131.222" }, "imgaz.pixiv.net": { - "TlsSni": false, - "TlsIgnoreNameMismatch": true, - "Destination": "https://210.140.131.145/" + "IPAddress": "210.140.131.145" }, "comic.pixiv.net": { - "TlsSni": false, - "TlsIgnoreNameMismatch": true, - "Destination": "https://210.140.131.145/" + "IPAddress": "210.140.131.145" }, "novel.pixiv.net": { - "TlsSni": false, - "TlsIgnoreNameMismatch": true, - "Destination": "https://210.140.131.145/" + "IPAddress": "210.140.131.145" }, "source.pixiv.net": { - "TlsSni": false, - "TlsIgnoreNameMismatch": true, - "Destination": "https://210.140.131.145/" + "IPAddress": "210.140.131.145" }, "i*.pixiv.net": { - "TlsSni": false, - "TlsIgnoreNameMismatch": true, - "Destination": "https://210.140.131.145/" + "IPAddress": "210.140.131.145" }, "app-api.pixiv.net": { - "TlsSni": false, - "TlsIgnoreNameMismatch": true, - "Destination": "https://210.140.131.218/" - }, - "*.pixiv.net": { - "TlsSni": false, - "TlsIgnoreNameMismatch": true + "IPAddress": "210.140.131.218" }, "pixiv.org": { - "TlsSni": false, - "TlsIgnoreNameMismatch": true, - "Destination": "https://210.140.131.158/" + "IPAddress": "210.140.131.158" }, "*.pixiv.org": { - "TlsSni": false, - "TlsIgnoreNameMismatch": true, - "Destination": "https://210.140.131.158/" + "IPAddress": "210.140.131.158" }, "t.co": { "Response": { diff --git a/FastGithub/appsettings.stackoverflow.json b/FastGithub/appsettings.stackoverflow.json index b256d65..3afa590 100644 --- a/FastGithub/appsettings.stackoverflow.json +++ b/FastGithub/appsettings.stackoverflow.json @@ -26,14 +26,10 @@ "Destination": "https://fdn.geekzu.org/" }, "i.imgur.com": { - "TlsSni": false, - "TlsIgnoreNameMismatch": true, - "Destination": "https://151.101.196.193/" + "IPAddress": "151.101.196.193" }, "i.stack.imgur.com": { - "TlsSni": false, - "TlsIgnoreNameMismatch": true, - "Destination": "https://151.101.196.193/" + "IPAddress": "151.101.196.193" }, "lh*.googleusercontent.com": { "Response": {