我正在使用下面的函式來確定 URL 是否存在:
Public Function URLExists(ByVal url As String) As Boolean
Dim webRequest As System.Net.WebRequest = System.Net.WebRequest.Create(url)
webRequest.Method = "HEAD"
Try
Dim response As System.Net.HttpWebResponse = CType(webRequest.GetResponse, System.Net.HttpWebResponse)
If (response.StatusCode.ToString = "OK") Then
Return True
End If
Return False
Catch
Return False
End Try
End Function
在大多數情況下,這可以正常作業,但是當通過 cloudflare 托管站點時,它不會回傳頁面標題,這意味著即使目標 URL 確實存在,該函式也會回傳 false。
例如,您可以使用https://ezclix.club/m/1125重定向到一個 Warriorsplus.com 網站(它有 cloudflare),然后最終重定向到https://ezclix.club/index.asp作為最終目的地確實存在,但該函式一旦命中啟用了 cloudflare 的 Warriorsplus,就會回傳 false。
uj5u.com熱心網友回復:
您可以選擇檢查請求 URI 是否與回應 URI 不同。如果不是,則遞回檢查回應 URI。
例如:
' Imports System.Net
Public Function URLExists(url As String) As Boolean
Dim request = WebRequest.Create(url)
request.Method = "GET"
Try
Dim response = DirectCast(request.GetResponse, HttpWebResponse)
If (request.RequestUri <> response.ResponseUri) Then
Return URLExists(response.ResponseUri.ToString())
End If
Return response.StatusCode = HttpStatusCode.OK
Catch
Return False
End Try
End Function
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/521932.html
標籤:网VB.net
