Cấu hình proxy cho các lần tải xuống của Python webdriver-manager
Cung cấp cho Python webdriver-manager một HttpClient nhận biết proxy thông qua WDMDownloadManager trước khi dùng driver path được trả về.
Đối số --proxy-server của Chrome chỉ có hiệu lực sau khi trình duyệt khởi động. webdriver-manager có thể cần proxy sớm hơn, trong lúc tra cứu trình điều khiển tương thích và tải xuống kho lưu trữ của nó.
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()
Đoạn này giả định các phụ thuộc webdriver-manager và Requests hiện có. Trình lắng nghe proxy được chọn là HTTP cho cả hai lược đồ đích. Đối với các lần tải xuống trình điều khiển công khai được phép, danh sách proxy HTTP cung cấp ứng viên cho các URL proxy của phiên. Giữ Session còn sống cho đến khi quá trình cài đặt hoặc tra cứu bộ nhớ đệm của trình quản lý hoàn tất, sau đó chuyển driver_path cho thiết lập dịch vụ Selenium thông thường của ứng dụng.
Phương thức get tùy chỉnh chấp nhận các đối số HTTP bổ sung của trình quản lý và giữ nguyên việc xác thực phản hồi. Việc chọn proxy thuộc về ứng dụng tải xuống; hãy cấu hình Chrome riêng khi điều hướng cũng cần proxy.
trust_env=False làm rõ cấu hình của Session này, bao gồm việc tắt chọn gói CA bắt nguồn từ môi trường. Nếu tuyến tải xuống cần CA của tổ chức, hãy cung cấp gói mong muốn trong cài đặt verify của Session này trong khi vẫn giữ các kiểm tra chứng chỉ.