Brug af Visual Basic VBA med HTTPS og SSL

click fraud protection

Er det muligt at få adgang til websider med HTTPS, og som kræver login / adgangskode ved hjælp af Excel? Nå, ja og nej. Her er aftalen, og hvorfor den ikke er så ligetil.

Først skal vi definere vilkår

HTTPS er efter konvention identifikatoren for det, der kaldes SSL (Secure Sockets Layer). Det har ikke noget at gøre med adgangskoder eller login som sådan. Hvad SSL gør er at konfigurere en krypteret forbindelse mellem en webklient og server, så der ikke sendes information mellem de to "i klart" - ved hjælp af ikke-krypterede transmissioner. Hvis oplysningerne inkluderer login og adgangskodeoplysninger, beskytter kryptering af transmissionen dem mod nysgerrige øjne... men kryptering af adgangskoder er ikke et krav. Jeg brugte udtrykket "efter konvention", fordi den reelle sikkerhedsteknologi er SSL. HTTPS signalerer kun til serveren, som klienten planlægger at bruge denne protokol. SSL kan bruges på en række andre måder.

Så... hvis din computer sender en URL til en server, der bruger SSL, og den URL starter med HTTPS, siger din computer til serveren:

instagram viewer

"Hej Mr. Server, lad os ryste hænderne over denne krypterings ting, så hvad vi siger fra nu af ikke bliver opsnappet af en dårlig fyr. Og når det er gjort, skal du gå videre og sende mig den side, der er adresseret med URL-adressen.

Serveren sender nøgleinformationerne til opsætning af en SSL-forbindelse tilbage. Det er op til din computer at faktisk gøre noget med det.

Det er 'nøglen' (ordspil... vel, sorta bestemt) til at forstå rollen som VBA i Excel. Programmeringen i VBA skulle faktisk tage det næste skridt og implementere SSL på klientsiden.

'Rigtige' webbrowsere gør det automatisk og viser dig et lille låsesymbol i statuslinjen for at vise dig, at det er blevet gjort. Men hvis VBA bare åbner websiden som en fil og læser oplysningerne i den i celler i et regneark (et meget almindeligt eksempel), gør Excel det ikke uden yderligere programmering. Serverens venlige tilbud om at ryste hænder og opsætte sikker SSL-kommunikation bliver bare ignoreret af Excel.

Men du kan læse den side, du anmodede om, på nøjagtig samme måde

For at bevise det, lad os bruge SSL-forbindelsen, der bruges af Googles Gmail-tjeneste (som starter med "https") og kode et opkald for at åbne denne forbindelse, ligesom det var en fil.

Dette læser websiden som om det var en simpel fil. Da nylige versioner af Excel importerer HTML automatisk, importeres Gmail-siden (minus de dynamiske HTML-objekter) efter et åbent udsagn, til et regneark. Målet med SSL-forbindelser er at udveksle information, ikke bare læse en webside, så dette vil normalt ikke komme dig meget langt.

For at gøre mere, skal du have en eller anden måde i dit Excel VBA-program at understøtte både SSL-protokollen og måske også at understøtte DHTML. Du er sandsynligvis bedre til at starte med det fulde Visual Basic snarere end Excel VBA. Brug derefter kontroller som Internet Transfer API WinInet og kalde Excel-objekter efter behov. Men det er muligt at bruge WinInet direkte fra et Excel VBA-program.

WinInet er en API - Application Programming Interface - til WinInet.dll. Det bruges hovedsageligt som en af ​​de vigtigste komponenter i Internet Explorer, men du kan også bruge den direkte fra din kode, og du kan bruge den til HTTPS. At skrive koden til brug af WinInet er i det mindste en medium vanskelighedsopgave. Generelt er de involverede trin:

  • Opret forbindelse til HTTPS-serveren og send en HTTPS-anmodning
  • Hvis serveren beder om et underskrevet klientcertifikat, skal du sende anmodningen igen, når certifikatsammenhængen er knyttet
  • Hvis serveren er tilfreds, godkendes sessionen

Der er to store forskelle i skrivning af WinInet-koden til brug af https snarere end den almindelige HTTP:

Du skal også huske, at funktionen ved at udveksle et login / adgangskode er logisk uafhængig af at kryptere sessionen ved hjælp af https og SSL. Du kan gøre det ene eller det andet eller begge dele. I mange tilfælde går de sammen, men ikke altid. Og implementering af WinInet-kravene gør ikke noget for at reagere automatisk på en anmodning om login / adgangskode. Hvis f.eks. Login og adgangskode er en del af en webformular, er du muligvis nødt til at finde ud af navnene på felterne og opdater felterne fra Excel VBA, før "udskrives" loginstrengen til server. At svare korrekt på en webserveren sikkerhed er en stor del af, hvad en webbrowser gør. På den anden side, hvis SSL-godkendelse er påkrævet, kan du overveje at bruge InternetExplorer-objektet til at logge ind fra VBA ...

Den nederste linje er, at det er muligt at bruge https og logge på en server fra et Excel VBA-program, men forvent ikke at skrive koden, der gør det på kun få minutter.

instagram story viewer