HTTPS ve SSL ile Visual Basic VBA kullanma

HTTPS ile ve Excel kullanarak giriş / şifre gerektiren web sayfalarına erişmek mümkün müdür? Evet, hayır. İşte anlaşma ve neden bu kadar basit değil.

İlk olarak, Şartları Tanımlayalım

HTTPS: Kongre tarafından SSL (Güvenli Yuva Katmanı) adı verilen kimliğin tanımlayıcısı. Bunun gerçekten şifreler veya girişlerle ilgisi yoktur. SSL'nin yaptığı, bir web istemcisi ile sunucu arasında şifrelenmiş bir bağlantı kurmaktır, böylece şifresiz iletiler kullanılarak iki "açıkta" arasında hiçbir bilgi gönderilmez. Bilgiler giriş ve şifre bilgilerini içeriyorsa, iletimi şifrelemek meraklı gözlerden korur... ancak şifreleri şifrelemek bir gereklilik değildir. Gerçek güvenlik teknolojisi SSL olduğu için "kural gereği" ifadesini kullandım. HTTPS, yalnızca istemcinin bu protokolü kullanmayı planladığı sunucuya sinyal gönderir. SSL, çeşitli başka şekillerde kullanılabilir.

Yani... bilgisayarınız SSL kullanan bir sunucuya bir URL gönderiyorsa ve bu URL HTTPS ile başlıyorsa, bilgisayarınız sunucuya şunu söylüyor:

instagram viewer

"Hey Bay Sunucu, bu şifreleme olayını el sıkışalım, böylece bundan sonra söylediğimiz her şey kötü bir adam tarafından yakalanmayacak. Ve bu bittiğinde, devam edin ve bana URL tarafından adreslenen sayfayı gönderin. "

Sunucu, SSL bağlantısı kurmak için önemli bilgileri geri gönderecektir. Aslında onunla bir şeyler yapmak bilgisayarınıza kalmış.

Rolünü anlamak için 'anahtar' (pun... iyi, sorta amaçlı) VBA Excel'de. VBA'daki programlama bir sonraki adımı atmalı ve SSL'yi istemci tarafına uygulamalıdır.

'Gerçek' web tarayıcıları bunu otomatik olarak yapar ve durum satırında yapıldığını gösteren küçük bir kilit sembolü gösterir. Ancak VBA sadece web sayfasını bir dosya olarak açar ve içindeki bilgileri bir e-tablodaki hücrelere okursa (çok yaygın bir örnek), Excel ek programlama olmadan bunu yapmaz. Sunucunun el sıkışmak ve güvenli SSL iletişimi kurmak için sunduğu zarif teklif Excel tarafından göz ardı edilir.

Ancak İstediğiniz Sayfayı Tam Olarak Aynı Şekilde Okuyabilirsiniz

Bunu kanıtlamak için, Google'ın Gmail hizmeti ("https" ile başlayan) tarafından kullanılan SSL bağlantısını kullanalım ve bu bağlantıyı bir dosya gibi açmak için bir çağrıyı kodlayalım.

Bu, web sayfasını basit bir dosya gibi okur. Excel'in son sürümleri HTML'yi otomatik olarak içe aktaracağından, Open deyimi yürütüldükten sonra Gmail sayfası (Dinamik HTML nesneleri eksi) bir e-tabloya alınır. SSL bağlantılarının amacı, sadece bir web sayfasını okumakla kalmayıp bilgi alışverişi yapmaktır, bu normalde sizi çok ileriye götürmez.

Daha fazlasını yapmak için, Excel VBA programınızda hem SSL protokolünü hem de DHTML'yi de desteklemenin bir yolu olması gerekir. Muhtemelen dolu ile başlamak daha iyi Visual Basic Excel VBA yerine. Sonra Internet Transfer API WinInet gibi kontrolleri kullanın ve Excel nesnelerini gerektiği gibi çağırın. Ancak WinInet'i doğrudan bir Excel VBA programından kullanmak mümkündür.

WinInet bir API - Uygulama Programlama Arayüzü - WinInet.dll. Temel olarak Internet Explorer'ın ana bileşenlerinden biri olarak kullanılır, ancak doğrudan kodunuzdan da kullanabilir ve HTTPS için kullanabilirsiniz. WinInet kullanmak için kod yazmak en azından orta zorlukta bir görevdir. Genel olarak, ilgili adımlar şunlardır:

  • HTTPS sunucusuna bağlanın ve bir HTTPS isteği gönderin
  • Sunucu imzalı bir istemci sertifikası isterse, sertifika içeriğini ekledikten sonra isteği yeniden gönderin
  • Sunucu memnunsa, oturumun kimliği doğrulanır

WinInet kodunu yazarken, normal HTTP yerine https kullanmak için iki büyük fark vardır:

Ayrıca, bir oturum açma / parola değiştirme işlevinin, oturumu https ve SSL kullanarak şifrelemekten mantıksal olarak bağımsız olduğunu da unutmayın. Birini veya diğerini veya her ikisini birden yapabilirsiniz. Çoğu durumda, birlikte giderler, ancak her zaman değil. WinInet gereksinimlerini uygulamak, bir oturum açma / parola isteğine otomatik olarak yanıt vermek için hiçbir şey yapmaz. Örneğin, oturum açma adı ve parola bir web formunun parçasıysa, alanların adlarını girin ve giriş dizesini " sunucusu. Bir web sunucusunun güvenliğine doğru bir şekilde yanıt vermek, web tarayıcısının yaptıklarının büyük bir parçasıdır. Öte yandan, SSL kimlik doğrulaması gerekiyorsa, VBA içinden oturum açmak için InternetExplorer nesnesini kullanmayı düşünebilirsiniz ...

Sonuç olarak, https kullanmak ve bir Excel VBA programından bir sunucuya giriş yapmak mümkündür, ancak bunu yapan kodu birkaç dakika içinde yazmayı beklemeyin.