באמצעות Visual Basic VBA עם HTTPS ו- SSL

האם ניתן לגשת לדפי אינטרנט עם HTTPS ומחייבים כניסה / סיסמה באמצעות Excel? ובכן, כן ולא. הנה העסקה ומדוע היא לא כל כך ישר.

ראשית, בואו נגדיר תנאים

HTTPS הוא על ידי אמנה המזהה של מה שמכונה SSL (שכבת שקעים מאובטחים). זה לא באמת קשור לסיסמאות או להתחברות ככאלה. מה ש- SSL עושה זה להגדיר חיבור מוצפן בין לקוח אינטרנט לשרת כך שלא יישלח מידע בין השניים "במצב ברור" - באמצעות שידורים לא מוצפנים. אם המידע כולל פרטי כניסה וסיסמא, הצפנת השידור מגינה עליהם מפני עיניים סקרניות... אך הצפנת סיסמאות אינה דרישה. השתמשתי בביטוי "על פי אמנה" מכיוון שטכנולוגיית האבטחה האמיתית היא SSL. HTTPS מאותתת רק לשרת שהלקוח מתכנן להשתמש בפרוטוקול זה. ניתן להשתמש ב- SSL במגוון דרכים אחרות.

אז... אם המחשב שלך שולח URL לשרת שמשתמש ב- SSL וכתובת האתר הזו מתחילה ב- HTTPS, המחשב שלך אומר לשרת:

"היי מר שרת, בואו נלחץ יד לדבר ההצפנה הזה כדי שכל מה שאנחנו אומרים מעכשיו לא יורט על ידי איזה בחור רע. וכשזה נעשה, קדימה ושלח לי את הדף שמופנה באמצעות כתובת האתר. "

השרת ישלח בחזרה את פרטי המפתח להגדרת חיבור SSL. על המחשב שלך לעשות משהו איתו בפועל.

instagram viewer

זה 'מפתח' (משחק מילים... ובכן, סורטה התכוון) להבנת תפקידו של VBA ב- Excel. התכנות ב- VBA תצטרך למעשה לבצע את הצעד הבא וליישם את ה- SSL בצד הלקוח.

דפדפני האינטרנט 'האמיתיים' עושים זאת באופן אוטומטי ומראים לך סמל נעילה קטן בשורת המצב כדי להראות לך שזה נעשה. אבל אם ה- VBA פשוט פותח את דף האינטרנט כקובץ וקורא את המידע בו בתאים בגיליון אלקטרוני (דוגמה נפוצה מאוד), Excel לא יעשה זאת בלי תכנות נוספת. ההצעה האדיבה של השרת ללחוץ יד ולהקים תקשורת SSL מאובטחת פשוט מתעלמת מאקסל.

אבל אתה יכול לקרוא את הדף שביקשת באותו אופן בדיוק

כדי להוכיח זאת, בואו ונשתמש בחיבור ה- SSL שמשמש את שירות הג'ימייל של גוגל (שמתחיל ב- "https") וקוד שיחה כדי לפתוח את החיבור בדיוק כמו שהיה קובץ.

זה קורא את דף האינטרנט כאילו היה קובץ פשוט. מכיוון שגרסאות אחרונות של Excel יובאו HTML באופן אוטומטי, לאחר ביצוע ההצהרה הפתוחה, עמוד Gmail (פחות אובייקטים של HTML דינמי) מיובא לגיליון אלקטרוני. המטרה של חיבורי SSL היא להחליף מידע, לא רק לקרוא דף אינטרנט, כך שבדרך כלל זה לא יגיע לך מאוד רחוק.

כדי לעשות יותר, אתה צריך להיות בדרך כלשהי, בתוכנת Excel VBA שלך, לתמוך גם בפרוטוקול SSL וגם אולי לתמוך ב- DHTML. כנראה שעדיף לך להתחיל עם המלא ויז'ואל בייסיק ולא VBA של Excel. לאחר מכן השתמש בפקדים כמו WinInet API של העברה לאינטרנט וקראו אובייקטים של Excel בהתאם לצורך. אבל אפשר להשתמש WinInet ישירות מתוכנית VBA של Excel.

WinInet הוא ממשק API - ממשק תכנות יישומים - ל- WinInet.dll. הוא משמש בעיקר כאחד המרכיבים העיקריים של Internet Explorer, אך אתה יכול להשתמש בו ישירות גם מהקוד שלך ותוכל להשתמש בו עבור HTTPS. כתיבת הקוד לשימוש ב- WinInet היא משימה לפחות בינונית. באופן כללי, הצעדים המעורבים הם:

  • התחבר לשרת HTTPS ושלח בקשת HTTPS
  • אם השרת מבקש אישור לקוח חתום, שלח שוב את הבקשה לאחר צירוף הקשר האישור
  • אם השרת מרוצה, ההפעלה מאומתת

ישנם שני הבדלים עיקריים בכתיבת קוד WinInet לשימוש ב- https ולא ב- HTTP הרגילה:

עליכם לזכור כי הפונקציה של החלפת כניסה / סיסמא אינה תלויה מבחינה לוגית בהצפנת ההפעלה באמצעות https ו- SSL. אתה יכול לעשות אחד או השני, או את שניהם. במקרים רבים הם כן הולכים יחד, אך לא תמיד. ויישום דרישות WinInet אינו עושה דבר כדי להגיב אוטומטית לבקשת כניסה / סיסמה. אם, למשל, הכניסה והסיסמה הם חלק מטופס אינטרנט, ייתכן שיהיה עליכם להבין את שמות השדות ולעדכן את השדות מ- Excel VBA לפני "פרסום" מחרוזת ההתחברות ל- שרת. תגובה נכונה לאבטחת שרת האינטרנט היא חלק גדול ממה שעושה דפדפן אינטרנט. מצד שני, אם נדרש אימות SSL, כדאי לשקול להשתמש באובייקט InternetExplorer בכדי להיכנס מתוך VBA ...

בשורה התחתונה, השימוש ב- https והתחברות לשרת מתוכנית VBA של Excel אפשרי, אך אל תצפו לכתוב את הקוד שעושה זאת תוך מספר דקות.

instagram story viewer