Merge pull request #49 from LuoYun-Team/modnet
pref(ModNet):使用 HttpClient 替代过时的 WebRequest 和 WebClient
This commit is contained in:
@@ -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
|
||||||
|
|||||||
@@ -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。
|
||||||
|
|||||||
Reference in New Issue
Block a user