تهيئة وكيل لتنزيلات Python webdriver-manager
امنح Python webdriver-manager عميل HttpClient واعياً بالوكيل عبر WDMDownloadManager قبل استخدام مسار برنامج التشغيل المُعاد.
لا يُطبَّق وسيط --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 لهذه الجلسة مع الإبقاء على فحوص الشهادات.