Argumen --proxy-server Chrome hanya terpakai selepas pelayar dimulakan. webdriver-manager mungkin memerlukan proksi lebih awal, semasa mencari pemacu yang serasi dan memuat turun arkibnya.

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()

Coretan ini menganggap kebergantungan webdriver-manager dan Requests sedia ada. Pendengar proksi yang dipilih ialah HTTP untuk kedua-dua skema destinasi. Untuk muat turun pemacu awam yang dibenarkan, senarai proksi HTTP menyediakan calon untuk URL proksi sesi. Kekalkan Session hidup sehingga pemasangan atau carian cache pengurus selesai, kemudian serahkan driver_path kepada persediaan perkhidmatan Selenium biasa aplikasi.

Kaedah get tersuai menerima argumen HTTP tambahan pengurus dan mengekalkan pengesahan respons. Pilihan proksi milik klien muat turun; konfigurasikan Chrome secara berasingan apabila navigasi juga memerlukan proksi.

trust_env=False menjadikan konfigurasi Session ini eksplisit, termasuk menyahdayakan pemilihan bundle CA yang diperoleh daripada persekitaran. Jika laluan muat turun memerlukan CA organisasi, sediakan bundle yang dimaksudkan pada tetapan verify Session ini sambil mengekalkan semakan sijil.

Artikel berkaitan