Microsoft HTTPClient (3.5 以前のラッパー) または HTTPWebResponse (.NET 4.0 以降) から応答ストリームを読み取ると、両方のインスタンスがバイナリ コンテンツを返し始めているようです。
何百もの Web スパイダーがあり、その多くは異なるフレームワークまたは「1 回限りの」コードを使用しています。そして、それらは 1 つずつ HTML のジャンクを返し始めます。私たちが触れてDLLを再構築しているものだと思います。これにより、フレームワークで何かが変わったと思います。
これが私の主な方法です:
Public Function PostPage(ByVal URL As String, ByVal enc As Encoding) As String
Try
ServicePointManager.ServerCertificateValidationCallback = New RemoteCertificateValidationCallback(AddressOf ValidateCertificate)
Dim htmlRequest As HttpWebRequest = DirectCast(WebRequest.Create(URL), HttpWebRequest)
htmlRequest.Headers.Add("Accept-Encoding", "gzip, deflate")
Dim htmlResponse As HttpWebResponse = DirectCast(htmlRequest.GetResponse(), HttpWebResponse)
Return New System.IO.StreamReader(htmlResponse.GetResponseStream(), enc).ReadToEnd()
Catch ex As Exception
Console.WriteLine("Error: " & ex.Message)
End Try
Return ""
End Function
これは非常に基本的なもので、何が起こっているのかわかりません。すべてのタイプのエンコーディング (エンコーディングを指定しないことを含む) はバイナリを返します。http://www.google.com
これは、URL として入力したときに何が壊れているかを示す作業表現です。