You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

.Net URL有效性检测问题:302跳转导致检测失败如何解决?

解决URL检测中302重定向导致的判定失败问题

你的代码检测tentworld.com.au时失败,核心原因是默认的HttpWebRequest请求缺少浏览器标识(User-Agent),部分站点会拦截这类请求,导致重定向过程异常;另外原代码没有显式处理重定向后的状态码验证。

以下是修改后的代码,可解决这类问题:

Private Function fCheckUrlIsOK(strURL As String) As Boolean
    strURL = strURL.Trim.ToLower

    ' 补全HTTP/HTTPS前缀
    If Not (strURL.StartsWith("http://") Or strURL.StartsWith("https://")) Then
        strURL = "http://" & strURL
    End If

    Try
        Dim request1 As HttpWebRequest = WebRequest.CreateHttp(strURL)
        With request1
            .Timeout = 10000 ' 10秒超时
            .AllowAutoRedirect = True ' 显式开启自动重定向
            .MaximumAutomaticRedirections = 5 ' 设置最大重定向次数,避免无限循环
            .UserAgent = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36" ' 模拟Chrome浏览器请求头
        End With

        ' 使用Using自动释放响应资源
        Using response1 As HttpWebResponse = DirectCast(request1.GetResponse(), HttpWebResponse)
            ' 检查最终响应状态码是否为成功(2xx范围)
            Return response1.StatusCode >= HttpStatusCode.OK AndAlso response1.StatusCode < HttpStatusCode.Ambiguous
        End Using

    Catch ex As Exception
        ' 可保留异常记录逻辑
        ' fErrorRecord(ex)
        Return False
    End Try
End Function

关键修改说明:

  1. 显式管理重定向:明确开启AllowAutoRedirect并设置最大重定向次数,既保证自动跟随跳转,又避免陷入无限循环。
  2. 添加浏览器标识:模拟主流浏览器的User-Agent请求头,绕过站点的反拦截机制,这是解决tentworld.com.au检测失败的核心。
  3. 验证最终响应状态:不再仅依赖请求不抛异常,而是明确检查最终响应的状态码是否处于2xx成功范围,确保URL确实可正常访问。
  4. 自动释放资源:用Using语句包裹响应对象,请求完成后自动释放资源,避免内存泄漏。

内容的提问来源于stack exchange,提问作者user1946932

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.17 09:09:58