【发布时间】:2022-11-10 16:48:41
【问题描述】:
我正在使用下面的函数来确定 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 重定向到一个warriorplus.com 网站(具有cloudflare),然后最终重定向到https://ezclix.club/index.asp 作为确实存在的最终目的地,但是一旦它到达启用了cloudflare 的warriorplus,该函数就会返回false .
【问题讨论】:
-
工作流程不同。您可以做的事情是检查 ResponseUri 是否与 RequestUri 不同,如果不同,则在 ResponseUri 上递归返回 URLExists。
-
@David,我不太明白你的建议。您能否使用我在示例中提供的 URL 提供一个工作示例?
-
If (webRequest.RequestUri <> response.ResponseUri) Then : Return URLExists(response.ResponseUri) : End If -
用换行符替换
:。 StackOverflow 仅支持 cmets 中的 mini-markdown。 -
@大卫,对不起。我仍然不明白我必须在代码中的哪个位置插入您的示例