Използване на Visual Basic VBA с HTTPS и SSL

Възможен ли е достъп до уеб страници с HTTPS и които изискват влизане / парола с помощта на Excel? Е, да и не. Ето сделката и защо не е толкова пряка напред.

Първо, нека да определим термините

HTTPS е по конвенция идентификатора за това, което се нарича SSL (Secure Sockets Layer). Това всъщност няма нищо общо с паролите или влизанията като такива. Това, което прави SSL, е да създаде криптирана връзка между уеб клиент и сървър, така че да не се изпраща информация между двете „на ясно“ - с помощта на нешифровани предавания. Ако информацията включва информация за вход и парола, криптирането на предаването ги предпазва от любопитни очи... но криптирането на паролите не е изискване. Използвах израза „по конвенция“, защото истинската технология за сигурност е SSL. HTTPS сигнализира само на сървъра, че клиентът планира да използва този протокол. SSL може да се използва по различни други начини.

И така... ако вашият компютър изпрати URL на сървър, който използва SSL и този URL адрес започва с HTTPS, вашият компютър казва на сървъра:

instagram viewer

„Здравейте, господин сървър, нека да се ръкуваме с това криптиране, така че каквото и да кажем отсега нататък, да не бъде прихванат от някой лош човек. И когато това стане, продължете напред и ми изпратете страницата, адресирана от URL адреса. "

Сървърът ще изпрати обратно основната информация за настройка на SSL връзка. От вашия компютър зависи всъщност да направите нещо с него.

Това е "ключово" (pun... е, сорта предназначен) за разбиране на ролята на VBA в Excel. Програмирането в VBA ще трябва действително да направи следващата стъпка и да приложи SSL от страна на клиента.

Уеб браузърите „Real“ правят това автоматично и ви показват малък символ на заключване в реда на състоянието, за да ви покажат, че е направено. Но ако VBA просто отвори уеб страницата като файл и прочете информацията в нея в клетки в електронна таблица (много често срещан пример), Excel няма да направи това без допълнително програмиране. Благодатното предложение на сървъра да се ръкува и да настрои сигурна SSL комуникация просто се игнорира от Excel.

Но можете да прочетете страницата, която поискахте, по абсолютно същия начин

За да го докажем, нека използваме SSL връзката, която се използва от услугата Gmail на Google (която започва с „https“) и кодираме обаждане, за да отворите тази връзка, точно както е файл.

Това чете уеб страницата, като че е обикновен файл. Тъй като последните версии на Excel ще импортират HTML автоматично, след изпълнение на оператора Open, страницата на Gmail (минус динамичните HTML обекти) се импортира в електронна таблица. Целта на SSL връзките е обмен на информация, а не просто четене на уеб страница, така че обикновено това няма да ви стигне много далеч.

За да направите повече, трябва да имате някакъв начин във вашата Excel VBA програма да поддържате SSL протокола и може би да поддържате и DHTML. Вероятно е по-добре да започнете с пълното Visual Basic а не Excel VBA. След това използвайте контроли като Internet Transfer API WinInet и извикайте Excel обекти, ако е необходимо. Но е възможно да използвате WinInet директно от програма на Excel VBA.

WinInet е API - интерфейс за програмиране на приложения - към WinInet.dll. Използва се главно като един от основните компоненти на Internet Explorer, но можете да го използвате и директно от вашия код и можете да го използвате за HTTPS. Написването на кода за използване на WinInet е поне задача със средна трудност. Като цяло, включените стъпки са:

  • Свържете се с HTTPS сървъра и изпратете HTTPS заявка
  • Ако сървърът поиска подписан клиентски сертификат, изпратете отново заявката, след като прикачите контекста на сертификата
  • Ако сървърът е удовлетворен, сесията се удостоверява

Има две основни разлики в писането на WinInet кода за използване на https, а не на обикновения HTTP:

Трябва също да имате предвид, че функцията за обмен на вход / парола е логически независима от криптиране на сесията с помощта на https и SSL. Можете да направите едно или друго, или и двете. В много случаи те вървят заедно, но не винаги. И прилагането на изискванията на WinInet не прави нищо, за да отговори автоматично на заявка за влизане / парола. Ако например входът и паролата са част от уеб формуляр, тогава може да се наложи да разберете имена на полетата и актуализирайте полетата от Excel VBA, преди да "публикувате" входния низ в сървър. Правилното реагиране на сигурността на уеб сървъра е голяма част от това, което прави уеб браузърът. От друга страна, ако се изисква SSL удостоверяване, може да помислите за използване на обекта InternetExplorer за влизане от VBA ...

Долната линия е, че използването на https и влизането в сървър от Excel VBA програма е възможно, но не очаквайте да напишете кода, който го прави само за няколко минути.

instagram story viewer