在做个网抓时,用各种工具调试出来的结果都是正确的,上VS获得结果的时候一直出现乱码啊~
都要崩掉了,后面发现返回的GZIP加密的,于是用了下面的方法,轻松搞定~愉快!
Function GetHtml(url)
Dim req As Net.HttpWebRequest = Net.HttpWebRequest.Create(url)
req.AllowAutoRedirect = False
req.Method = "Get"
req.ContentType = "text/html,application/x-www-form-urlencoded"
'req.Connection = "keep-alive"
req.Headers.Add("sec-ch-ua-platform", "Windows")
req.UserAgent = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/98.0.4758.102 Safari/537.36 Edg/98.0.1108.55"
req.Accept = "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9"
req.KeepAlive = True
req.Headers.Add(HttpRequestHeader.AcceptEncoding, "gzip, deflate, br")
req.Headers.Add(HttpRequestHeader.AcceptLanguage, "zh-CN,zh;q=0.9")
Dim response As HttpWebResponse = req.GetResponse()
Dim result As String = ""
If response.ContentEncoding.ToLower() = "gzip" Then
Dim streamRescive As Stream = response.GetResponseStream()
Dim ZipStream = New GZipStream(streamRescive, CompressionMode.Decompress)
Dim streamReader = New StreamReader(ZipStream, Encoding.Default)
result = streamReader.ReadToEnd()
Else
result = New IO.StreamReader(response.GetResponseStream(), encoding:=Encoding.Default).ReadToEnd()
End If
Return result
End Function