.Net WebClient DownloadString不能使用混合内容

问题描述:

我正在使用刮刀,其中我需要从一个站点刮取数据。我已经厌倦了非常简单的webclient downloadString来获取数据,这似乎与其他网站,但有一个问题是我在下面的代码尝试。任何帮助将不胜感激。感谢提前。下面的代码在VB.Net,但我很高兴有一个在C#工作的解决方案以及。.Net WebClient DownloadString不能使用混合内容

Private Function GetHtml() As String 
    Dim mData As String = "" 
    Try 
     'ServicePointManager.ServerCertificateValidationCallback = New Security.RemoteCertificateValidationCallback(AddressOf ValidateServerCertificate) 
     'ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12 

     With mWC 
      mData = .DownloadString("https://www.adorama.com/brands") 
     End With 
    Catch ex As Exception 
     Debug.Print(ex.Message) 

     'With CertificateValidationCallback 
     'The remote server returned an error: (403) Forbidden. 

     'Without CertificateValidationCallback 
     'The request was aborted: Could not create SSL/TLS secure channel. 
    End Try 

    Return mData 
End Function 

Private Shared Function ValidateServerCertificate(ByVal sender As Object, ByVal certificate As X509Certificate, ByVal chain As X509Chain, ByVal sslPolicyErrors As Net.Security.SslPolicyErrors) As Boolean 
    If sslPolicyErrors = Net.Security.SslPolicyErrors.None Then 
     Return True 
    End If 

    Return True 
End Function 
+0

您能否提出更多关于您的问题的信息。你想做什么?如果其他网站的工作是什么这个错误? –

+0

@ Youssed13已解决我的问题。请检查他的答案。感谢您给我的问题留出时间。 – AmitSri

在使用.DownloadString()方法之前,您必须为此网站添加User-Agent。

mWC.Headers.Add("User-Agent", "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:55.0) Gecko/20100101 Firefox/55.0") 
+0

谢谢,你救了我的一天。 – AmitSri