Konfigurera en proxy för Python webdriver-manager-nedladdningar
Ge Python webdriver-manager en proxy-medveten HttpClient via WDMDownloadManager innan den returnerade driver path används.
Chromens --proxy-server-argument gäller först efter att webbläsaren startat. webdriver-manager kan behöva en proxy tidigare, medan den slår upp en kompatibel drivrutin och laddar ner dess arkiv.
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()
Det här utdraget förutsätter de befintliga beroendena webdriver-manager och Requests. Den valda proxy-lyssnaren är HTTP för båda målschemana. För tillåtna offentliga drivrutinsnedladdningar tillhandahåller HTTP-proxylistan kandidater för sessionens proxy-URL:er. Håll Session vid liv tills hanterarens installation eller cacheuppslag är klart och skicka sedan driver_path till programmets vanliga Selenium-tjänsteuppsättning.
Den anpassade get-metoden accepterar hanterarens extra HTTP-argument och behåller valideringen av svaret. Proxyvalet tillhör nedladdningsklienten; konfigurera Chrome separat när navigeringen också behöver en proxy.
trust_env=False gör den här sessionens konfiguration explicit, inklusive att inaktivera miljöhärledd val av CA-paket. Om nedladdningsvägen kräver en organisations-CA, ange det avsedda paketet i sessionens verify-inställning och behåll certifikatkontrollerna.