How to download a file using HTTPS connection using VBSCRIPT and by accepting all the certiifcates

14,446

ServicePointManager is a .NET class, so it can't be used in VBScript. Try this instead:

Set xmlhttp = CreateObject("MSXML2.ServerXMLHTTP")
xmlhttp.setOption 2, 13056

You must use MSXML2.ServerXMLHTTP here, because MSXML2.XMLHTTP requests don't have the setOption method.

And perhaps you shouldn't broadcast your questions. It's not very polite.

Share:
14,446
Kausty
Author by

Kausty

Updated on June 04, 2022

Comments

  • Kausty
    Kausty almost 2 years

    I have a script which is able to download files from the https://mysite.com/xxx.zip but when it goes to a secured link, I want to accept the certificate. There is a huge problem here. I am not able to use "ServicePointManager.ServerCertificateValidationCallback" effectively.

    Can anyone please help?

    I also have the domain for the certificate site: *.mysite.com

    code:

    Const scriptVer  = "1.0"
    Const DownloadDest = "https://mysite.com/xxx.zip"
    Const LocalFile = "F:\Testing\xxx.zip"
    Const webUser = "admin"
    Const webPass = "admin"
    Const DownloadType = "binary"
    dim strURL
    
    function getit()
      dim xmlhttp
    
      set xmlhttp=createobject("MSXML2.XMLHTTP.3.0")
      'xmlhttp.SetOption 2, 13056 'If https -> Ignore all SSL errors
      strURL = DownloadDest
      Wscript.Echo "Download-URL: " & strURL
    
      'For basic auth, use the line below together with user+pass variables above
      xmlhttp.Open "GET", strURL, false, WebUser, WebPass
      'xmlhttp.Open "GET", strURL, false
    
      xmlhttp.Send
      Wscript.Echo "Download-Status: " & xmlhttp.Status & " " & xmlhttp.statusText
    
      If xmlhttp.Status = 200 Then
        Dim objStream
        set objStream = CreateObject("ADODB.Stream")
        objStream.Type = 1 'adTypeBinary
        objStream.Open
        objStream.Write xmlhttp.responseBody
        objStream.SaveToFile LocalFile
        objStream.Close
        set objStream = Nothing
      End If
    
    
      set xmlhttp=Nothing
    End function 
    
    '=======================================================================
    ' End Function Defs, Start Main
    '=======================================================================
    ' Get cmdline params and initialize variables
    If Wscript.Arguments.Named.Exists("h") Then
      Wscript.Echo "Usage: http-download.vbs"
      Wscript.Echo "version " & scriptVer
      WScript.Quit(intOK)
    End If
    
    getit()
    Wscript.Echo "Download Complete. See " & LocalFile & " for success."
    Wscript.Quit(intOK)
    
    ServicePointManager.ServerCertificateValidationCallback = AddressOf AcceptAllCertifications
    
    Private Shared Function ValidateCertificate(sender As Object, certificate As X509Certificate, chain As X509Chain, sslPolicyErrors As SslPolicyErrors) As Boolean
        return True
    End Function