Apakah mungkin untuk mengakses halaman web dengan HTTPS dan yang memerlukan login / kata sandi menggunakan Excel? Ya dan tidak. Ini kesepakatannya dan mengapa itu tidak terlalu jelas.
Pertama, Ayo Tetapkan Ketentuan
HTTPS adalah dengan perjanjian pengidentifikasi untuk apa yang disebut SSL (Secure Sockets Layer). Itu tidak benar-benar ada hubungannya dengan kata sandi atau login seperti itu. Apa yang SSL lakukan adalah mengatur koneksi terenkripsi antara klien web dan server sehingga tidak ada informasi yang dikirim antara keduanya "di tempat kosong" - menggunakan transmisi yang tidak terenkripsi. Jika informasi tersebut termasuk informasi login dan kata sandi, mengenkripsi transmisi melindunginya dari mencongkel mata... tetapi mengenkripsi kata sandi bukanlah keharusan. Saya menggunakan frasa "oleh konvensi" karena teknologi keamanan sebenarnya adalah SSL. HTTPS hanya memberi sinyal ke server bahwa klien berencana menggunakan protokol itu. SSL dapat digunakan dalam berbagai cara lain.
Jadi... jika komputer Anda mengirim URL ke server yang menggunakan SSL dan URL itu dimulai dengan HTTPS, komputer Anda mengatakan ke server:
"Hei, Tuan Server, mari kita berjabat tangan atas masalah enkripsi ini sehingga apa pun yang kita katakan mulai sekarang tidak akan disadap oleh orang jahat. Dan ketika itu selesai, silakan kirimi saya halaman yang dituju oleh URL. "
Server akan mengirim kembali informasi utama untuk mengatur koneksi SSL. Terserah komputer Anda untuk benar-benar melakukan sesuatu dengannya.
Itu 'kunci' (pun... well, agak dimaksudkan) untuk memahami peran VBA dalam Excel. Pemrograman dalam VBA harus benar-benar mengambil langkah berikutnya dan mengimplementasikan SSL pada sisi klien.
Browser web 'Nyata' melakukannya secara otomatis dan menunjukkan kepada Anda simbol kunci kecil di baris status untuk menunjukkan kepada Anda bahwa itu telah dilakukan. Tetapi jika VBA hanya membuka halaman web sebagai file dan membaca informasi di dalamnya menjadi sel dalam spreadsheet (contoh yang sangat umum), Excel tidak akan melakukannya tanpa pemrograman tambahan. Tawaran ramah server untuk berjabat tangan dan mengatur komunikasi SSL aman hanya akan diabaikan oleh Excel.
Tetapi Anda Dapat Membaca Halaman yang Anda Minta dengan Cara yang Sama
Untuk membuktikannya, mari kita gunakan koneksi SSL yang digunakan oleh layanan Gmail Google (yang dimulai dengan "https") dan kode panggilan untuk membuka koneksi itu sama seperti file.
Ini membaca halaman web seperti itu adalah file sederhana. Karena versi Excel terbaru akan mengimpor HTML secara otomatis, setelah pernyataan Open dijalankan, halaman Gmail (minus objek Dynamic HTML) diimpor ke spreadsheet. Tujuan koneksi SSL adalah untuk bertukar informasi, bukan hanya membaca halaman web, jadi ini biasanya tidak akan membuat Anda terlalu jauh.
Untuk berbuat lebih banyak, Anda harus memiliki beberapa cara, dalam program Excel VBA Anda, untuk mendukung protokol SSL dan mungkin juga mendukung DHTML. Anda mungkin lebih baik memulai dengan penuh Dasar visual daripada Excel VBA. Kemudian gunakan kontrol seperti Internet Transfer API WinInet dan panggil objek Excel sesuai kebutuhan. Tetapi dimungkinkan untuk menggunakan WinInet langsung dari program Excel VBA.
WinInet adalah API - Antarmuka Pemrograman Aplikasi - untuk WinInet.dll. Ini terutama digunakan sebagai salah satu komponen utama Internet Explorer, tetapi Anda dapat menggunakannya langsung dari kode Anda juga dan Anda dapat menggunakannya untuk HTTPS. Menulis kode untuk menggunakan WinInet setidaknya merupakan tugas dengan tingkat kesulitan sedang. Secara umum, langkah-langkah yang terlibat adalah:
- Sambungkan ke server HTTPS dan kirim permintaan HTTPS
- Jika server meminta sertifikat klien yang ditandatangani, kirim ulang permintaan setelah melampirkan konteks sertifikat
- Jika server puas, sesi dikonfirmasi
Ada dua perbedaan utama dalam penulisan kode WinInet untuk menggunakan https daripada HTTP biasa:
Anda juga harus ingat bahwa fungsi pertukaran login / kata sandi secara logis independen dari enkripsi sesi menggunakan https dan SSL. Anda dapat melakukan satu atau yang lain, atau keduanya. Dalam banyak kasus, mereka pergi bersama, tetapi tidak selalu. Dan menerapkan persyaratan WinInet tidak melakukan apa pun untuk merespons secara otomatis permintaan login / kata sandi. Jika, misalnya, login dan kata sandi adalah bagian dari formulir web, maka Anda mungkin harus mencari tahu nama bidang dan perbarui bidang dari Excel VBA sebelum "memposting" string masuk ke server. Menanggapi dengan benar keamanan server web adalah bagian besar dari apa yang dilakukan browser web. Di sisi lain, jika otentikasi SSL diperlukan, Anda dapat mempertimbangkan menggunakan objek InternetExplorer untuk masuk dari dalam VBA ...
Intinya adalah bahwa menggunakan https dan masuk ke server dari program Excel VBA adalah mungkin, tetapi jangan berharap untuk menulis kode yang melakukannya hanya dalam beberapa menit.