Chrome का --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 आर्ग्युमेंट स्वीकार करती है और प्रतिक्रिया सत्यापन बनाए रखती है। इसका प्रॉक्सी चयन डाउनलोड क्लाइंट का है; जब नेविगेशन को भी प्रॉक्सी चाहिए तो Chrome को अलग से कॉन्फ़िगर करें।

trust_env=False इस Session के कॉन्फ़िगरेशन को स्पष्ट करता है, जिसमें पर्यावरण-व्युत्पन्न CA बंडल चयन अक्षम करना शामिल है। यदि डाउनलोड मार्ग को संगठन का CA चाहिए, तो प्रमाणपत्र जाँच बनाए रखते हुए इस Session की verify सेटिंग में इच्छित बंडल दें।

संबंधित लेख