Я решил эту проблему, используя BrowserMob-Proxy . Из их README:
BrowserMob Proxy allows you to manipulate HTTP requests and responses, capture HTTP content, and export performance data as a HAR file.
Для Python3 я сделал следующее:
Предварительные требования:
BrowserMob-Proxy установлен и работает
Для Ма c Я использовал HomeBrew:
?> brew install browsermob-proxy
?> brew services start browsermob-proxy
Настройка локальной среды python3 с помощью pipenv (или вашего виртуального менеджера env)
?> brew install pipenv
?> pipenv --python 3.8
?> pipenv install browsermobproxy
?> pipenv install selenium
?> pipenv install ....
Возможность аутентификации с источником данных для вашей веб-страницы. Так как я использовал службу GCP, я следовал порядку, опубликованному в документации IAP, для получения токена аутентификации, найденного здесь: Аутентификация из учетной записи службы
Упрощенный код для добавление прокси:
from selenium.webdriver import ChromeOptions
import browsermobproxy
# 1. Do whatever you need to do to get your token
token = get_auth_token()
# 2. Create browsermob client and add auth to headers
client = browsermobproxy.Client("localhost:9090") # port depends on your own setup
client.headers({"Authorization": "Bearer {}".format(token)})
# 3. Create browser (can vary wildly based on your own needs)
chrome_options = ChromeOptions()
chrome_options.add_argument("--ignore-certificate-errors") # I needed this, you may not
caps = chrome_options.to_capabilities()
client.add_to_capabilities(caps) # This is important!
# create driver instance with your capabilities