Merge pull request #49 from LuoYun-Team/modnet

pref(ModNet):使用 HttpClient 替代过时的 WebRequest 和 WebClient
This commit is contained in:
薄奚梦灵
2025-05-26 13:44:49 +08:00
committed by GitHub
2 changed files with 21 additions and 20 deletions
+14 -14
View File
@@ -1,9 +1,13 @@
Public Module ModNet Imports System.Net.Http
Public Const NetDownloadEnd As String = ".PCLDownloading"
Public Module ModNet
Public Const NetDownloadEnd As String = ".PCLDownloading"
Public ReadOnly Client As New HttpClient()
Public ReadOnly ClientHandler As New HttpClientHandler() With {.AllowAutoRedirect = False}
''' <summary> ''' <summary>
''' 测试 Ping。失败则返回 -1。 ''' 测试 Ping。失败则返回 -1。
''' </summary> ''' </summary>
'''
Public Function Ping(Ip As String, Optional Timeout As Integer = 10000, Optional MakeLog As Boolean = True) As Integer Public Function Ping(Ip As String, Optional Timeout As Integer = 10000, Optional MakeLog As Boolean = True) As Integer
Dim PingResult As NetworkInformation.PingReply Dim PingResult As NetworkInformation.PingReply
Try Try
@@ -61,21 +65,17 @@ Retry:
End Select End Select
End Try End Try
End Function End Function
Public Function NetGetCodeByClient(Url As String, Encoding As Encoding, Timeout As Integer, Accept As String, Optional UseBrowserUserAgent As Boolean = False) As String Public Async Function NetGetCodeByClient(Url As String, Encoding As Encoding, Timeout As Integer, Accept As String, Optional UseBrowserUserAgent As Boolean = False) As Tasks.Task(Of String)
Url = SecretCdnSign(Url) Url = SecretCdnSign(Url)
Log("[Net] 获取客户端网络结果:" & Url & ",最大超时 " & Timeout) Log("[Net] 获取客户端网络结果:" & Url & ",最大超时 " & Timeout)
Dim Request As CookieWebClient
Dim res As HttpWebResponse = Nothing
Dim HttpStream As Stream = Nothing
Try Try
Request = New CookieWebClient With { SecretHeadersSign(Url, Client, UseBrowserUserAgent)
.Encoding = Encoding, Client.DefaultRequestHeaders.Accept.Add(New Headers.MediaTypeWithQualityHeaderValue(Accept))
.Timeout = Timeout Client.DefaultRequestHeaders.AcceptLanguage.Add(New Headers.StringWithQualityHeaderValue("en-US,en;q=0.5"))
} Client.DefaultRequestHeaders.Add("X-Requested-With", "XMLHttpRequest")
Request.Headers("Accept") = Accept Dim Result = Await Client.GetAsync(Url)
Request.Headers("Accept-Language") = "en-US,en;q=0.5"
Request.Headers("X-Requested-With") = "XMLHttpRequest"
SecretHeadersSign(Url, Request, UseBrowserUserAgent)
Return Request.DownloadString(Url) Return Request.DownloadString(Url)
Catch ex As Exception Catch ex As Exception
If ex.GetType.Equals(GetType(WebException)) AndAlso CType(ex, WebException).Status = WebExceptionStatus.Timeout Then If ex.GetType.Equals(GetType(WebException)) AndAlso CType(ex, WebException).Status = WebExceptionStatus.Timeout Then
+7 -6
View File
@@ -1,6 +1,7 @@
'由于包含加解密等安全信息,本文件中的部分代码已被删除 '由于包含加解密等安全信息,本文件中的部分代码已被删除
Imports System.Security.Cryptography Imports System.Security.Cryptography
Imports System.Net.Http
Friend Module ModSecret Friend Module ModSecret
@@ -98,16 +99,16 @@ Friend Module ModSecret
''' <summary> ''' <summary>
''' 设置 Headers 的 UA、Referer。 ''' 设置 Headers 的 UA、Referer。
''' </summary> ''' </summary>
Friend Sub SecretHeadersSign(Url As String, ByRef Client As WebClient, Optional UseBrowserUserAgent As Boolean = False) Friend Sub SecretHeadersSign(Url As String, ByRef Client As HttpClient, Optional UseBrowserUserAgent As Boolean = False)
If Url.Contains("baidupcs.com") OrElse Url.Contains("baidu.com") Then If Url.Contains("baidupcs.com") OrElse Url.Contains("baidu.com") Then
Client.Headers("User-Agent") = "LogStatistic" '#4951 Client.DefaultRequestHeaders.Add("User-Agent", "LogStatistic")
ElseIf UseBrowserUserAgent Then ElseIf UseBrowserUserAgent Then
Client.Headers("User-Agent") = "PCL2/" & VersionStandardCode & " Mozilla/5.0 AppleWebKit/537.36 Chrome/63.0.3239.132 Safari/537.36" Client.DefaultRequestHeaders.Add("User-Agent", $"PCL2/{VersionStandardCode} Mozilla/5.0 AppleWebKit/537.36 Chrome/63.0.3239.132 Safari/537.36")
Else Else
Client.Headers("User-Agent") = "PCL2/" & VersionStandardCode Client.DefaultRequestHeaders.Add("User-Agent", $"PCL2/{VersionStandardCode}")
End If End If
Client.Headers("Referer") = "http://" & VersionCode & ".open.pcl2.server/" Client.DefaultRequestHeaders.Add("Referer", $"http://{VersionCode}.open.pcl2.server/")
If Url.Contains("api.curseforge.com") Then Client.Headers("x-api-key") = CurseForgeAPIKey If Url.Contains("api.curseforge.com") Then Client.DefaultRequestHeaders.Add("x-api-key", CurseForgeAPIKey)
End Sub End Sub
''' <summary> ''' <summary>
''' 设置 Headers 的 UA、Referer。 ''' 设置 Headers 的 UA、Referer。