Vai ir iespējams piekļūt Web lapām, izmantojot HTTPS, un kurām ir nepieciešama pieteikšanās / parole, izmantojot Excel? Nu, jā un nē. Šeit ir darījums un kāpēc tas nav tik tiešs.
Pirmkārt, definēsim nosacījumus
HTTPS ir pēc vienošanās identifikators tā dēvētajam SSL (Secure Sockets Layer). Tam nav nekā kopīga ar parolēm vai pieteikumvārdiem kā tādiem. Tas, ko dara SSL, ir izveidots šifrēts savienojums starp tīmekļa klientu un serveri, lai informācija netiktu nosūtīta starp abiem "skaidri" - izmantojot nešifrētus pārraidījumus. Ja informācija satur pieteikuminformāciju un paroli, pārsūtīšanas šifrēšana tos aizsargā no ziņkārīgo acīm... bet paroļu šifrēšana nav prasība. Es izmantoju frāzi "pēc vienošanās", jo reālā drošības tehnoloģija ir SSL. HTTPS tikai signalizē serverim, ka klients plāno izmantot šo protokolu. SSL var izmantot daudzos citos veidos.
Tātad... ja jūsu dators nosūta URL serverim, kas izmanto SSL, un URL sākas ar HTTPS, jūsu dators saka serverim:
"Sveiks, servera kungs, paspiežamies rokās par šo šifrēšanas lietu, lai visu, ko mēs sakām, tagad varētu pārtvert kāds slikts puisis. Kad tas ir izdarīts, dodieties uz priekšu un atsūtiet man lapu, kurai adresēts URL. "
Serveris nosūtīs atpakaļ galveno informāciju SSL savienojuma iestatīšanai. Jūsu datora uzdevums ir kaut ko ar to izdarīt.
Tas ir "atslēga" (pun... labi, sorta paredzēts), lai saprastu lomu VBA programmā Excel. Programmēšanai VBA faktiski būtu jāveic nākamais solis un jāievieš SSL klienta pusē.
'Īstie' interneta pārlūki to automātiski dara un statusa rindiņā parāda nelielu bloķēšanas simbolu, lai parādītu, ka tas ir izdarīts. Bet, ja VBA vienkārši atver tīmekļa lapu kā failu un nolasa tajā esošo informāciju izklājlapas šūnās (ļoti izplatīts piemērs), Excel to nedarīs bez papildu programmēšanas. Servera žēlīgais piedāvājums paspiest rokas un izveidot drošu SSL komunikāciju Excel vienkārši ignorē.
Bet jūs varat lasīt pieprasīto lapu tieši tādā pašā veidā
Lai to pierādītu, izmantosim SSL savienojumu, ko izmanto Google Gmail pakalpojums (kas sākas ar “https”) un kodēsim zvanu, lai atvērtu šo savienojumu tāpat kā tas bija fails.
Šī vietne skan tāpat kā tas bija vienkāršs fails. Tā kā jaunākās Excel versijas automātiski importēs HTML, pēc Open paziņojuma izpildīšanas Gmail lapa (atskaitot dinamiskos HTML objektus) tiek importēta izklājlapā. SSL savienojumu mērķis ir informācijas apmaiņa, nevis tikai tīmekļa lapas lasīšana, tāpēc parasti tas nenovedīs jūs ļoti tālu.
Lai izdarītu vairāk, jums savā Excel VBA programmā ir jābūt kaut kā veidam, kas atbalsta gan SSL protokolu, gan varbūt arī DHTML. Jums, iespējams, labāk sākt ar pilnu Visual Basic nevis Excel VBA. Pēc tam izmantojiet vadīklas, piemēram, interneta pārsūtīšanas API WinInet, un pēc vajadzības izsauciet Excel objektus. Bet WinInet ir iespējams izmantot tieši no Excel VBA programmas.
WinInet ir API - lietojumprogrammu saskarne - WinInet.dll. Tas galvenokārt tiek izmantots kā viens no galvenajiem Internet Explorer komponentiem, taču jūs to varat izmantot arī tieši no sava koda un varat izmantot arī HTTPS. Kodu rakstīšana, lai izmantotu WinInet, ir vismaz vidējas grūtības. Parasti iesaistītās darbības ir šādas:
- Pievienojieties HTTPS serverim un nosūtiet HTTPS pieprasījumu
- Ja serveris pieprasa parakstītu klienta sertifikātu, pēc sertifikāta konteksta pievienošanas nosūtiet pieprasījumu vēlreiz
- Ja serveris ir apmierināts, sesija tiek autentificēta
Rakstot WinInet kodu, lai izmantotu https, nevis parasto HTTP, ir divas galvenās atšķirības:
Jums arī jāpatur prātā, ka pieteikšanās / paroles apmaiņas funkcija loģiski nav atkarīga no sesijas šifrēšanas, izmantojot https un SSL. Jūs varat darīt vienu vai otru, vai abus. Daudzos gadījumos viņi iet kopā, bet ne vienmēr. Un WinInet prasību ieviešana neko nedara, lai automātiski atbildētu uz pieteikšanās / paroles pieprasījumu. Ja, piemēram, pieteikumvārds un parole ir Web veidlapas daļa, iespējams, jums būs jāizdomā lauku nosaukumus un atjauniniet laukus no Excel VBA pirms pieteikšanās virknes "ievietošanas" serveris. Pareiza reakcija uz tīmekļa servera drošību ir liela daļa no tā, ko dara tīmekļa pārlūks. No otras puses, ja nepieciešama SSL autentifikācija, varat apsvērt iespēju izmantot objektu InternetExplorer, lai pieteiktos VBA iekšienē ...
Rezultāts ir tāds, ka ir iespējams izmantot https un pieteikties serverī no Excel VBA programmas, taču negaidiet, ka uzrakstīsit kodu, kas to dara tikai dažās minūtēs.