Imports System.IO.Compression
Public Class WebRequestHelper
Private _siteCookies As CookieContainer
Public Property SiteCookies As CookieContainer
Set(value As CookieContainer)
Private _userAgent As String = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.86 Safari/537.36"
Public Property UserAgent As String
Private _timeout As Integer = 5000
Public Property Timeout As Integer
If value > 999 Then _timeout = value
Private _responseUri As Uri = Nothing
Public ReadOnly Property ResponseUri As Uri
Private _statusCode As Integer = -1
Public ReadOnly Property StatusCode As Integer
Dim _statusDescription As String = String.Empty
Public ReadOnly Property StatusDescription As String
Return _statusDescription
Dim _contentSize As Integer = 0
Public ReadOnly Property ContentSize As Integer
ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12
_siteCookies = New CookieContainer()
Private Function AcceptAllCertifications(ByVal sender As Object, ByVal certification As System.Security.Cryptography.X509Certificates.X509Certificate, ByVal chain As System.Security.Cryptography.X509Certificates.X509Chain, ByVal sslPolicyErrors As System.Net.Security.SslPolicyErrors) As Boolean
Public Function getSiteHTML(ByVal siteUri As Uri, Optional ByVal PostData As String = Nothing) As String
Dim returnHTML As String = String.Empty
Dim Http As HttpWebRequest = WebRequest.Create(siteUri.ToString)
.CookieContainer = _siteCookies
.AllowAutoRedirect = True
.MaximumAutomaticRedirections = 25
.ProtocolVersion = HttpVersion.Version11
.Accept = "text/html, application/xhtml+xml, image/jxr, */*"
.Headers.Add(HttpRequestHeader.AcceptLanguage, "en-US,en;q=0.5")
.Headers.Add(HttpRequestHeader.AcceptEncoding, "gzip, deflate")
If Not String.IsNullOrEmpty(PostData) Then
Dim lbPostBuffer As Byte() = Encoding.Default.GetBytes(PostData)
Http.ContentLength = lbPostBuffer.Length
Using PostStream As Stream = Http.GetRequestStream()
PostStream.Write(lbPostBuffer, 0, lbPostBuffer.Length)
Using WebResponse As HttpWebResponse = Http.GetResponse
_responseUri = WebResponse.ResponseUri
_statusCode = WebResponse.StatusCode
_statusDescription = WebResponse.StatusDescription
Dim responseStream As Stream = WebResponse.GetResponseStream()
If (WebResponse.ContentEncoding.ToLower().Contains("gzip")) Then
responseStream = New GZipStream(responseStream, CompressionMode.Decompress)
ElseIf (WebResponse.ContentEncoding.ToLower().Contains("deflate")) Then
responseStream = New DeflateStream(responseStream, CompressionMode.Decompress)
_contentSize = WebResponse.ContentLength
Dim reader As StreamReader = New StreamReader(responseStream, Encoding.Default)
returnHTML = reader.ReadToEnd()
_statusDescription = "WebException: " & ex.Message
Dim voxiWebRequest As New WebRequestHelper
Dim siteHTML as String = voxiWebRequest.getSiteHTML(New Uri("https://www.amazon.com/Neon-Athletic-Racerback-Spandex-Workout/dp/B01F6O5PB8"))
Console.WriteLine("https://www.amazon.com/Neon-Athletic-Racerback-Spandex-Workout/dp/B01F6O5PB8")
Console.WriteLine("Status: " & voxiWebRequest.StatusCode)
Console.WriteLine("Status Description: " & voxiWebRequest.StatusDescription)
Console.WriteLine("Content Size: " & siteHTML.Length)
Dim site2HTML as String = string.Empty
site2HTML = voxiWebRequest.getSiteHTML(New Uri("https://www.homedepot.com/p/Sun-Joe-1-2-in-Dia-x-100-ft-Heavy-Duty-Spiral-Constructed-Stainless-Steel-Metal-Garden-Hose-AJSGH100/303010442"))
Console.WriteLine("WebException: " & ex.Message)
Console.WriteLine("https://www.homedepot.com/p/Sun-Joe-1-2-in-Dia-x-100-ft-Heavy-Duty-Spiral-Constructed-Stainless-Steel-Metal-Garden-Hose-AJSGH100/303010442")
Console.WriteLine("Status: " & voxiWebRequest.StatusCode)
Console.WriteLine("Status Description: " & voxiWebRequest.StatusDescription)
Console.WriteLine("Content Size: " & site2HTML.Length)