Korzystanie z Visual Basic VBA z HTTPS i SSL

Czy można uzyskać dostęp do stron internetowych za pomocą HTTPS i wymagających logowania / hasła przy użyciu programu Excel? Cóż, tak i nie. Oto oferta i dlaczego nie jest tak prosta.

Najpierw określmy warunki

HTTPS jest umownie identyfikator tego, co nazywa się SSL (Secure Sockets Layer). To tak naprawdę nie ma nic wspólnego z hasłami lub loginami jako takimi. Protokół SSL ustanawia szyfrowane połączenie między klientem internetowym a serwerem, tak aby żadne informacje nie były przesyłane między nimi „w sposób jawny” - przy użyciu niezaszyfrowanych transmisji. Jeśli informacje obejmują dane logowania i hasła, szyfrowanie transmisji chroni je przed wścibskimi oczami... ale szyfrowanie haseł nie jest wymagane. Użyłem wyrażenia „zgodnie z konwencją”, ponieważ prawdziwą technologią bezpieczeństwa jest SSL. HTTPS sygnalizuje tylko serwerowi, że klient planuje użyć tego protokołu. SSL może być używany na wiele innych sposobów.

Więc... jeśli komputer wysyła adres URL do serwera korzystającego z protokołu SSL, a ten adres URL zaczyna się od HTTPS, komputer mówi do serwera:

instagram viewer

„Hej, panie serweru, podajmy coś szyfrującego, aby cokolwiek powiedzieliśmy odtąd, nie zostało przechwycone przez jakiegoś złego faceta. A kiedy to zrobisz, prześlij mi stronę adresowaną przez URL ”.

Serwer odeśle kluczowe informacje na temat konfiguracji połączenia SSL. Twój komputer musi coś z tym zrobić.

To jest „klucz” (pun... no cóż, w pewnym sensie zamierzony) do zrozumienia roli VBA w programie Excel. Programowanie w VBA musiałoby faktycznie zrobić następny krok i zaimplementować SSL po stronie klienta.

„Prawdziwe” przeglądarki internetowe robią to automatycznie i pokazują mały symbol kłódki w linii statusu, aby pokazać, że zostało to zrobione. Ale jeśli VBA po prostu otworzy stronę internetową jako plik i wczyta zawarte w niej informacje do komórek w arkuszu kalkulacyjnym (bardzo częsty przykład), Excel nie zrobi tego bez dodatkowego programowania. Łaskawa oferta serwera, aby uścisnąć dłoń i skonfigurować bezpieczną komunikację SSL, jest po prostu ignorowana przez Excela.

Ale stronę, o którą prosiłeś, możesz przeczytać dokładnie w ten sam sposób

Aby to udowodnić, użyjmy połączenia SSL, które jest używane przez usługę Gmaila Google (która zaczyna się od „https”) i zakoduj połączenie, aby otworzyć to połączenie, tak jakby to był plik.

Czyta stronę internetową, jakby to był prosty plik. Ponieważ najnowsze wersje programu Excel automatycznie importują HTML, po wykonaniu polecenia Otwórz strona Gmaila (minus Dynamiczne obiekty HTML) jest importowana do arkusza kalkulacyjnego. Celem połączeń SSL jest wymiana informacji, a nie tylko czytanie strony internetowej, więc zwykle nie zajdzie to daleko.

Aby zrobić więcej, musisz mieć jakiś sposób, w swoim programie Excel VBA, aby obsługiwać zarówno protokół SSL, jak i być może także obsługę DHTML. Prawdopodobnie lepiej zacząć od pełnego Visual Basic zamiast Excel VBA. Następnie użyj elementów sterujących, takich jak WinInet interfejsu API transferu internetowego i w razie potrzeby wywoływaj obiekty Excel Możliwe jest jednak korzystanie z WinInet bezpośrednio z programu Excel VBA.

WinInet to API - interfejs programowania aplikacji - do WinInet.dll. Jest używany głównie jako jeden z głównych składników programu Internet Explorer, ale można go również używać bezpośrednio z kodu i można go używać do HTTPS. Napisanie kodu do korzystania z WinInet to zadanie o średnim stopniu trudności. Ogólnie rzecz biorąc, wymagane są następujące kroki:

  • Połącz się z serwerem HTTPS i wyślij żądanie HTTPS
  • Jeśli serwer poprosi o podpisany certyfikat klienta, wyślij żądanie ponownie po dołączeniu kontekstu certyfikatu
  • Jeśli serwer jest zadowolony, sesja jest uwierzytelniana

Istnieją dwie główne różnice w pisaniu kodu WinInet do używania protokołu https zamiast zwykłego HTTP:

Należy również pamiętać, że funkcja wymiany loginu / hasła jest logicznie niezależna od szyfrowania sesji przy użyciu https i SSL. Możesz zrobić jedno lub drugie albo jedno i drugie. W wielu przypadkach idą w parze, ale nie zawsze. Zaimplementowanie wymagań WinInet nic nie robi, aby automatycznie odpowiedzieć na żądanie logowania / hasła. Jeśli na przykład login i hasło są częścią formularza internetowego, może być konieczne wymyślenie nazwy pól i zaktualizuj pola z Excel VBA przed „wysłaniem” ciągu logowania do serwer. Prawidłowe reagowanie na bezpieczeństwo serwera WWW jest dużą częścią tego, co robi przeglądarka internetowa. Z drugiej strony, jeśli wymagane jest uwierzytelnianie SSL, możesz rozważyć użycie obiektu InternetExplorer do zalogowania się z poziomu VBA ...

Najważniejsze jest to, że korzystanie z https i logowanie do serwera z programu Excel VBA jest możliwe, ale nie spodziewaj się, że napiszesz kod, który to robi w ciągu kilku minut.

instagram story viewer