Python webdriver-manager 다운로드를 위한 프록시 구성
반환된 driver path를 사용하기 전에 WDMDownloadManager를 통해 Python webdriver-manager에 프록시를 인식하는 HttpClient를 제공합니다.
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 설정에 의도한 번들을 제공하십시오.