آرگومان --proxy-server کروم پس از شروع مرورگر اعمال می‌شود. 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 اضافی مدیر را می‌پذیرد و اعتبارسنجی پاسخ را حفظ می‌کند. انتخاب پروکسی به کلاینت دانلود تعلق دارد؛ وقتی ناوبری هم به پروکسی نیاز دارد، کروم را جداگانه پیکربندی کنید.

trust_env=False پیکربندی این Session را صریح می‌کند، از جمله غیرفعال‌کردن انتخاب بستهٔ CA برگرفته از محیط. اگر مسیر دانلود به CA سازمانی نیاز دارد، بستهٔ موردنظر را در تنظیم verify این Session فراهم کنید و بررسی‌های گواهی را حفظ کنید.

مقالات مرتبط