لا يُطبَّق وسيط --proxy-server في Chrome إلا بعد بدء المتصفح. قد يحتاج webdriver-manager إلى وكيل في وقت أبكر، أثناء البحث عن برنامج تشغيل متوافق وتنزيل أرشيفه.

import requests
from webdriver_manager.chrome import ChromeDriverManager
from webdriver_manager.core.download_manager import WDMDownloadManager
from webdriver_manager.core.http import HttpClient

class ProxyHttpClient(HttpClient):
    def __init__(self, session):
        self.session = session

    def get(self, url, params=None, **kwargs):
        kwargs.setdefault('timeout', 30)
        response = self.session.get(url, params=params, **kwargs)
        self.validate_response(response)
        return response

with requests.Session() as session:
    session.trust_env = False
    session.proxies.update({
        'http': 'http://proxy.example:8080',
        'https': 'http://proxy.example:8080',
    })
    downloader = WDMDownloadManager(ProxyHttpClient(session))
    driver_path = ChromeDriverManager(download_manager=downloader).install()

تفترض هذه القطعة وجود اعتماديتي webdriver-manager وRequests. مستقبِل الوكيل المختار هو HTTP لكلا مخططي الوجهة. ولتنزيلات برامج التشغيل العامة المسموح بها، توفّر قائمة وكلاء HTTP مرشّحين لعناوين URL الخاصة بالوكيل في الجلسة. أبقِ Session حيّة حتى يكتمل تثبيت المدير أو البحث في ذاكرة التخزين المؤقت، ثم مرّر driver_path إلى إعداد خدمة Selenium المعتاد في التطبيق.

تقبل طريقة get المخصصة وسائط HTTP الإضافية الخاصة بالمدير وتحافظ على التحقق من الاستجابة. اختيار الوكيل يخص عميل التنزيل؛ هيّئ Chrome بشكل منفصل عندما يحتاج التنقل أيضاً إلى وكيل.

يجعل trust_env=False تهيئة هذه الجلسة صريحة، بما في ذلك تعطيل اختيار حزمة CA المستمدّة من البيئة. وإذا كان مسار التنزيل يتطلب CA المؤسسة، فوفّر الحزمة المقصودة في إعداد verify لهذه الجلسة مع الإبقاء على فحوص الشهادات.

مقالات ذات صلة