Použití jazyka VBA s HTTPS a SSL

click fraud protection

Je možné přistupovat k webovým stránkám pomocí protokolu HTTPS, které vyžadují přihlášení / heslo pomocí Excelu? Ano, ano a ne. Tady je obchod a proč to není tak přímočaré.

Nejprve definujme podmínky

HTTPS je konvencí identifikátor toho, čemu se říká SSL (Secure Sockets Layer). To ve skutečnosti nemá nic společného s hesly nebo přihlašovacími údaji. Co SSL dělá, je nastavit šifrované spojení mezi webovým klientem a serverem tak, aby mezi nimi nebyly zasílány žádné informace „in clear“ - pomocí nešifrovaných přenosů. Pokud informace obsahují přihlašovací údaje a heslo, šifrování přenosu je chrání před zvědavými očima... ale šifrování hesel není vyžadováno. Použil jsem frázi „konvencí“, protože skutečnou bezpečnostní technologií je SSL. HTTPS signalizuje serveru pouze to, že klient plánuje použití tohoto protokolu. SSL lze použít mnoha dalšími způsoby.

Takže... pokud váš počítač odešle URL na server, který používá SSL a tato URL začíná HTTPS, váš počítač říká serveru:

"Hej, pane Servere, potřásáme si rukama nad touto šifrovací věcí, takže ať už cokoli řekneme od nynějška, nezachytí ho nějaký špatný člověk." A když se tak stane, pokračujte a pošlete mi stránku, na kterou se odkazuje URL. “

instagram viewer

Server odešle zpět klíčové informace pro nastavení připojení SSL. Je na vašem počítači, aby s tím skutečně něco udělal.

To je 'klíč' (slovní hříčka... no, Sorta zamýšlel) pochopit roli VBA v Excelu. Programování ve VBA by muselo ve skutečnosti učinit další krok a implementovat SSL na straně klienta.

„Skutečné“ webové prohlížeče to provedou automaticky a ve stavovém řádku vám ukážou malý symbol zámku, který vám ukáže, že to bylo hotovo. Pokud však VBA pouze otevře webovou stránku jako soubor a přečte informace v ní do buněk v tabulce (velmi běžný příklad), Excel to bez dalšího programování neudělá. Laskavá nabídka serveru potřást rukou a nastavit zabezpečenou komunikaci SSL se Excelem ignoruje.

Můžete si však přečíst požadovanou stránku přesně stejným způsobem

Abychom to dokázali, použijeme připojení SSL, které používá služba Gmail společnosti Google (které začíná řetězcem „https“), a kódováním hovoru otevřete toto připojení stejně jako v případě souboru.

To čte webovou stránku, jako by to byl jednoduchý soubor. Protože nejnovější verze aplikace Excel automaticky importují HTML, po spuštění příkazu Otevřít se stránka Gmail (bez dynamických objektů HTML) importuje do tabulky. Cílem SSL připojení je výměna informací, nejen čtení webové stránky, takže se za normálních okolností nedostanete příliš daleko.

Chcete-li udělat více, musíte v programu Excel VBA nějakým způsobem podporovat protokol SSL a možná také podporu protokolu DHTML. Pravděpodobně je lepší začít od plného Visual Basic spíše než Excel VBA. Poté použijte ovládací prvky, jako je WinInet rozhraní Internet Transfer API, a podle potřeby volejte objekty Excel. WinInet je ale možné použít přímo z programu Excel VBA.

WinInet je rozhraní API - Application Programming Interface - to WinInet.dll. Používá se hlavně jako jedna z hlavních součástí aplikace Internet Explorer, ale můžete ji použít také přímo z kódu a použít ji pro HTTPS. Zápis kódu pro použití WinInet je přinejmenším středně obtížný úkol. Obecně se jedná o tyto kroky:

  • Připojte se k serveru HTTPS a odešlete požadavek HTTPS
  • Pokud server požádá o podepsaný klientský certifikát, odešlete požadavek po připojení kontextu certifikátu
  • Pokud je server spokojen, relace je ověřena

Existují dva hlavní rozdíly v psaní kódu WinInet pro použití https namísto běžného protokolu HTTP:

Mějte také na paměti, že funkce výměny přihlašovacího / hesla je logicky nezávislá na šifrování relace pomocí https a SSL. Můžete udělat jeden nebo druhý, nebo obojí. V mnoha případech jdou spolu, ale ne vždy. A implementace požadavků WinInet nedělá nic pro automatickou odpověď na požadavek na přihlášení / heslo. Pokud jsou například přihlašovací jméno a heslo součástí webového formuláře, možná budete muset zjistit názvy polí a aktualizujte pole z Excel VBA před "zaúčtováním" přihlašovacího řetězce do server. Správná reakce na zabezpečení webového serveru je velkou součástí toho, co webový prohlížeč dělá. Na druhou stranu, pokud je vyžadováno ověřování SSL, měli byste zvážit použití objektu InternetExplorer k přihlášení z VBA ...

Sečteno a podtrženo, je možné použít https a přihlásit se na server z programu Excel VBA, ale neočekávejte, že napíšete kód, který jej provede během několika minut.

instagram story viewer