استخدام Visual Basic VBA مع HTTPS و SSL

click fraud protection

هل من الممكن الوصول إلى صفحات الويب باستخدام HTTPS والتي تتطلب تسجيل الدخول / كلمة المرور باستخدام Excel؟ حسنًا ، نعم ولا. ها هي الصفقة ولماذا ليست مستقيمة إلى الأمام.

أولاً ، دعنا نحدد المصطلحات

HTTPS هو بالإقناع المعرف لما يسمى SSL (طبقة المقابس الآمنة). هذا لا علاقة له بكلمات المرور أو تسجيلات الدخول على هذا النحو. ما يفعله SSL هو إعداد اتصال مشفر بين عميل ويب وخادم بحيث لا يتم إرسال أي معلومات بين الاثنين "في مكان واضح" - باستخدام عمليات الإرسال غير المشفرة. إذا كانت المعلومات تتضمن معلومات تسجيل الدخول وكلمة المرور ، فإن تشفير الإرسال يحميهم من أعين المتطفلين... ولكن تشفير كلمات المرور ليس شرطًا. استخدمت عبارة "بالاتفاقية" لأن تقنية الأمان الحقيقية هي SSL. يشير HTTPS فقط إلى الخادم الذي يخطط العميل لاستخدامه لهذا البروتوكول. يمكن استخدام SSL بعدة طرق أخرى.

لذلك... إذا أرسل جهاز الكمبيوتر الخاص بك عنوان URL إلى خادم يستخدم SSL وأن عنوان URL يبدأ بـ HTTPS ، فإن جهاز الكمبيوتر الخاص بك يقول للخادم:

"مرحبًا السيد سيرفر ، دعونا نصافح شيء التشفير هذا حتى لا يتم اعتراض أي شيء نقوله من الآن فصاعدًا من قبل شخص سيء. وعندما يتم ذلك ، امضي قدمًا وأرسل إلي الصفحة التي يتناولها عنوان URL ".

instagram viewer

سيرسل الخادم المعلومات الأساسية لإعداد اتصال SSL. الأمر متروك لجهاز الكمبيوتر الخاص بك للقيام بشيء ما في الواقع.

هذا هو "المفتاح" (التورية... حسنًا ، يقصد شيء) لفهم دور فبا في Excel. سيتعين على البرمجة في VBA اتخاذ الخطوة التالية فعليًا وتنفيذ SSL على جانب العميل.

تقوم متصفحات الويب "الحقيقية" بذلك تلقائيًا وتظهر لك رمز قفل صغير في سطر الحالة لتظهر لك أنه تم. ولكن إذا قام VBA بفتح صفحة الويب كملف وقراءة المعلومات الموجودة فيه في خلايا في جدول بيانات (مثال شائع جدًا) ، فلن يقوم Excel بذلك دون بعض البرمجة الإضافية. يتجاهل عرض الخادم اللطيف لمصافحة وإعداد اتصال SSL آمن من قبل Excel.

ولكن يمكنك قراءة الصفحة التي طلبتها بنفس الطريقة بالضبط

لإثبات ذلك ، دعنا نستخدم اتصال SSL الذي تستخدمه خدمة Gmail من Google (التي تبدأ بـ "https") ونرمز مكالمة لفتح هذا الاتصال تمامًا كما كان ملفًا.

هذا يقرأ صفحة الويب كما لو كان ملفًا بسيطًا. نظرًا لأن الإصدارات الأخيرة من Excel ستقوم باستيراد HTML تلقائيًا ، بعد تنفيذ العبارة Open ، يتم استيراد صفحة Gmail (باستثناء كائنات HTML الديناميكية) إلى جدول بيانات. الهدف من اتصالات SSL هو تبادل المعلومات ، وليس فقط قراءة صفحة ويب ، لذلك لن يؤدي ذلك عادةً إلى الوصول بك بعيدًا.

للقيام بالمزيد ، يجب أن يكون لديك طريقة ما في برنامج Excel VBA لدعم بروتوكول SSL وربما لدعم DHTML أيضًا. من المحتمل أن تكون أفضل حالًا بدءًا من الكامل البصرية الأساسية بدلاً من Excel VBA. ثم استخدم عناصر التحكم مثل WinInet API الخاصة بنقل الإنترنت واستدعاء كائنات Excel حسب الحاجة. ولكن من الممكن استخدام WinInet مباشرة من برنامج Excel VBA.

WinInet هو API - واجهة برمجة التطبيقات - إلى WinInet.dll. يتم استخدامه بشكل رئيسي كأحد المكونات الرئيسية لـ Internet Explorer ، ولكن يمكنك استخدامه مباشرة من التعليمات البرمجية الخاصة بك أيضًا ويمكنك استخدامه لـ HTTPS. كتابة التعليمات البرمجية لاستخدام WinInet هي مهمة متوسطة الصعوبة على الأقل. بشكل عام ، الخطوات المعنية هي:

  • اتصل بخادم HTTPS وأرسل طلب HTTPS
  • إذا طلب الخادم شهادة عميل موقعة ، فأعد إرسال الطلب بعد إرفاق سياق الشهادة
  • إذا كان الخادم راضيًا ، تتم المصادقة على الجلسة

هناك اختلافان رئيسيان في كتابة كود WinInet لاستخدام https بدلاً من HTTP العادي:

يجب أن تضع في اعتبارك أيضًا أن وظيفة تبادل تسجيل الدخول / كلمة المرور مستقلة منطقياً عن تشفير الجلسة باستخدام https و SSL. يمكنك القيام بأحد أو الآخر أو كليهما. في كثير من الحالات ، يذهبون معًا ، ولكن ليس دائمًا. ولا يقوم تنفيذ متطلبات WinInet بأي شيء للاستجابة تلقائيًا لطلب تسجيل الدخول / كلمة المرور. إذا كان ، على سبيل المثال ، تسجيل الدخول وكلمة المرور جزءًا من نموذج ويب ، فقد تضطر إلى معرفة أسماء الحقول وتحديث الحقول من Excel VBA قبل "نشر" سلسلة تسجيل الدخول إلى الخادم. تعد الاستجابة بشكل صحيح لأمان خادم الويب جزءًا كبيرًا مما يفعله متصفح الويب. من ناحية أخرى ، إذا كانت مصادقة SSL مطلوبة ، فيمكنك التفكير في استخدام كائن InternetExplorer لتسجيل الدخول من داخل VBA ...

خلاصة القول هي أن استخدام https وتسجيل الدخول إلى خادم من برنامج Excel VBA ممكن ، ولكن لا تتوقع كتابة الرمز الذي يفعل ذلك في بضع دقائق فقط.

instagram story viewer