Kas HTTPS-iga on võimalik ligi pääseda veebilehtedele, mis vajavad Exceli abil sisselogimist / parooli? Noh, jah ja ei. Siin on asi ja miks see pole nii sirge.
Esiteks määratleme tingimused
HTTPS on kokkuleppe järgi SSL-i (Secure Sockets Layer) identifikaator. Sellel pole paroolide või sisselogimiste kui sellisega midagi pistmist. See, mida SSL teeb, seadistab krüptitud ühenduse veebikliendi ja serveri vahel nii, et nende kahe vahel ei saadetaks teavet krüptimata edastuste abil. Kui teave sisaldab sisselogimis- ja parooliteavet, kaitseb edastamise krüptimine neid uteliailtade eest... kuid paroolide krüptimine pole kohustuslik. Kasutasin fraasi "kokkuleppe järgi", kuna tegelik turvatehnoloogia on SSL. HTTPS annab serverile ainult signaale, mida klient plaanib selle protokolli kasutamiseks. SSL-i saab kasutada mitmel muul viisil.
Niisiis... kui teie arvuti saadab URL-i serverile, mis kasutab SSL-i ja URL algab tähega HTTPS, ütleb teie arvuti serverile:
"Hei, hr Server, loksutagem käed selle krüptimisasja üle, et kõik, mida me nüüd ütleme, ei hakkaks keegi halb mees kinni pidama. Ja kui see on tehtud, minge edasi ja saatke mulle leht, millele URL on suunatud. "
Server saadab tagasi põhiteabe SSL-ühenduse seadistamiseks. Teie arvuti ülesanne on sellega midagi tegelikult ette võtta.
See on "võti" (pun... noh, sorta mõeldud), et mõista rolli VBA Excelis. VBA programmeerimine peaks tegelikult astuma järgmise sammu ja rakendama SSL kliendi poolel.
„Päris” veebibrauserid teevad seda automaatselt ja kuvavad olekuribal väikese lukusümboli, mis näitab, et see on tehtud. Kuid kui VBA lihtsalt avab veebilehe failina ja loeb selles sisalduva teabe arvutustabelisse lahtritesse (väga levinud näide), ei tee Excel seda ilma täiendava programmeerimiseta. Serveri armuline pakkumine kätt suruda ja turvalist SSL-ühendust üles seada jätab Excel lihtsalt tähelepanuta.
Kuid võite lugeda soovitud lehekülje täpselt samamoodi
Selle tõestamiseks kasutame SSL-ühendust, mida kasutab Google'i Gmaili teenus (mis algab tähega "https"), ja kodeerige kõne ühenduse avamiseks täpselt nii, nagu see oli fail.
See loeb veebilehte, nagu see oleks lihtne fail. Kuna Exceli uusimad versioonid impordivad HTML-i automaatselt, imporditakse pärast avalduse täitmist Gmaili leht (miinus dünaamilised HTML-objektid) arvutustabelisse. SSL-ühenduste eesmärk on teabe vahetamine, mitte ainult veebilehtede lugemine, nii et tavaliselt ei vii see teid väga kaugele.
Rohkem selleks peate oma Exceli VBA programmis mingil moel toetama nii SSL-protokolli kui ka võib-olla ka DHTML-i. Tõenäoliselt on teil parem, kui alustate täismahus Visual Basic mitte Excel VBA. Seejärel kasutage juhtelemente nagu Interneti-ülekande API WinInet ja kutsuge vajadusel Exceli objektid. Kuid WinIneti on võimalik kasutada otse Exceli VBA programmist.
WinInet on API - rakenduste programmeerimisliides - WinInet.dll juurde. Seda kasutatakse peamiselt Internet Exploreri ühe peamise komponendina, kuid saate seda kasutada ka otse oma koodist ja HTTPS-i jaoks. Koodi kirjutamine WinIneti kasutamiseks on vähemalt keskmise raskusega ülesanne. Üldiselt on sellega seotud sammud:
- Looge ühendus HTTPS-serveriga ja saatke HTTPS-i päring
- Kui server küsib allkirjastatud kliendi sertifikaati, saatke päring uuesti pärast sertifikaadi konteksti lisamist
- Kui server on rahul, autenditakse seanss
WinIneti koodi kirjutamisel tavalise HTTP asemel https kasutamiseks on kaks peamist erinevust:
Samuti peaksite meeles pidama, et sisselogimise / parooli vahetamise funktsioon on loogiliselt sõltumatu seansi krüptimisest https ja SSL abil. Võite teha ühte või teist või mõlemat. Paljudel juhtudel käivad nad koos, kuid mitte alati. Ja WinIneti nõuete rakendamine ei tee midagi, et sisselogimis- / paroolitaotlusele automaatselt vastata. Kui näiteks sisselogimine ja parool on osa veebivormist, peate võib-olla välja mõtlema väljade nimed ja värskendage väljad Excel VBA-st enne sisselogimisstringi "postitamist" server. Õige reageerimine veebiserveri turvalisusele on suur osa sellest, mida veebibrauser teeb. Teisest küljest, kui nõutakse SSL-autentimist, võiksite kaaluda objekti InternetExplorer kasutamist sisselogimiseks VBA-st ...
Põhimõte on see, et https-i kasutamine ja serverisse sisselogimine Exceli VBA-programmist on võimalik, kuid ärge lootke, et kirjutate koodi, mis seda teeb, vaid mõne minutiga.