Je možné pristupovať na webové stránky pomocou protokolu HTTPS a ktoré vyžadujú prihlásenie / heslo pomocou Excelu? Áno, aj nie. Tu je riešenie a prečo to nie je tak priame.
Najprv určme podmienky
HTTPS je konvenciou identifikátor toho, čo sa nazýva SSL (Secure Sockets Layer). To v skutočnosti nemá nič spoločné s heslami alebo prihlasovacími údajmi. SSL robí šifrované spojenie medzi webovým klientom a serverom tak, aby medzi nimi neboli zasielané žiadne informácie „in clear“ - pomocou nezašifrovaných prenosov. Ak tieto informácie obsahujú informácie o prihlásení a hesle, šifrovanie prenosu ich chráni pred zvedavými očami... šifrovacie heslá však nie sú povinné. Použil som frázu „konvenčne“, pretože skutočnou bezpečnostnou technológiou je SSL. HTTPS signalizuje serveru iba to, že klient plánuje použitie tohto protokolu. SSL sa dá použiť mnohými inými spôsobmi.
Takže... ak počítač odošle adresu URL na server, ktorý používa protokol SSL a táto adresa URL začína na HTTPS, váš počítač hovorí serveru:
„Hej, pán Server, potrasme si rukou nad touto šifrovacou vecou, aby čokoľvek, čo odteraz povieme, nebolo zachytené nejakým zlým chlapom. A keď sa tak stane, choďte do toho a pošlite mi stránku, na ktorú sa odkazuje adresa URL. “
Server odošle späť kľúčové informácie na nastavenie pripojenia SSL. Je skutočne na vašom počítači, aby s tým skutočne niečo urobil.
To je 'kľúč' (slovná hračka... dobre, mala Sorta) na pochopenie úlohy VBA v Exceli. Programovanie vo VBA by muselo urobiť ďalší krok a implementovať SSL na strane klienta.
„Skutočné“ webové prehliadače to robia automaticky a zobrazia vám malý symbol zámku v stavovom riadku, ktorý vám ukáže, že sa tak stalo. Ak však VBA iba otvorí webovú stránku ako súbor a prečíta informácie v nej do buniek v tabuľke (veľmi bežný príklad), Excel to neurobí bez dodatočného programovania. Laskavá ponuka servera potrasenie rukami a nastavenie zabezpečenej komunikácie SSL sa v programe Excel ignoruje.
Požadovanú stránku si však môžete prečítať presne rovnakým spôsobom
Aby sme to dokázali, používajme pripojenie SSL, ktoré používa služba Gmail spoločnosti Google (ktoré začína reťazcom „https“), a kóduj hovor tak, aby sme toto spojenie otvorili rovnako ako v prípade súboru.
Takto bude webová stránka čítať, akoby to bol jednoduchý súbor. Keďže najnovšie verzie programu Excel automaticky importujú HTML, po spustení príkazu Open sa stránka Gmail (bez dynamických objektov HTML) importuje do tabuľky. Cieľom SSL pripojení je výmena informácií, nielen prečítanie webovej stránky, takže sa za normálnych okolností nedostanete príliš ďaleko.
Aby ste toho mohli urobiť viac, musíte mať vo svojom programe Excel VBA nejaký spôsob, ako podporovať protokol SSL a možno aj podporu protokolu DHTML. Pravdepodobne je lepšie začať naplno Visual Basic namiesto Excel VBA. Potom použite ovládacie prvky ako Internet Transfer API WinInet a podľa potreby zavolajte objekty Excel. WinInet je však možné používať priamo z programu Excel VBA.
WinInet je API - aplikačné programovacie rozhranie - pre WinInet.dll. Používa sa hlavne ako jedna z hlavných súčastí programu Internet Explorer, ale môžete ju použiť priamo aj z kódu a použiť ju pre HTTPS. Napísanie kódu na používanie WinInet je prinajmenšom stredne ťažká úloha. Vo všeobecnosti ide o tieto kroky:
- Pripojte sa k serveru HTTPS a odošlite požiadavku HTTPS
- Ak server požaduje podpísaný klientsky certifikát, odošlite požiadavku po pripojení kontextu certifikátu
- Ak je server spokojný, relácia je overená
Existujú dva hlavné rozdiely v písaní kódu WinInet na používanie protokolu https namiesto bežného protokolu HTTP:
Mali by ste tiež pamätať na to, že funkcia výmeny prihlasovacieho mena a hesla je logicky nezávislá od šifrovania relácie pomocou protokolu https a SSL. Môžete urobiť jedno alebo druhé, alebo oboje. V mnohých prípadoch idú spolu, ale nie vždy. A implementácia požiadaviek WinInet nerobí nič pre to, aby automaticky reagovala na požiadavku na prihlásenie / heslo. Ak sú napríklad prihlasovacie meno a heslo súčasťou webového formulára, možno bude potrebné zistiť Názvy polí a aktualizujte polia z Excel VBA pred "zaúčtovaním" prihlasovacieho reťazca do systému Windows serverov. Správna reakcia na bezpečnosť webového servera je veľká časť toho, čo webový prehliadač robí. Na druhú stranu, ak sa vyžaduje autentifikácia SSL, mali by ste zvážiť použitie objektu InternetExplorer na prihlásenie z aplikácie VBA ...
Pointa je, že pomocou https a prihlásením na server z programu Excel VBA je možné, ale neočakávajte, že napíšete kód, ktorý to urobí za pár minút.