Получить URL-адрес от Selenium ChromeDriver с Docker Контейнер, запущенный с параметром HTTPS_PROXY для аутентифицированного прокси - PullRequest
0 голосов
/ 18 июня 2020

Невозможно запустить Selenium Chromedriver в автономном режиме с аутентифицированным прокси (например, user:qwerty@44.55.66.77: 8000). Поэтому я решил создать Chromedriver без проксирования, и для созданного драйвера я пытаюсь получить доступ к веб-ресурсу (предположим, это будет run.py для моего приложения):

chrome_options = webdriver.ChromeOptions()
chrome_options.add_argument("--headless")
chrome_options.add_argument("--no-sandbox")
chrome_options.add_argument("window-size=1400,2100")
chrome_options.add_argument("--disable-gpu")
driver = webdriver.Chrome(chrome_driver, chrome_options=chrome_options)

driver.get('https://2ip.ru')
print(driver.page_source)

Затем я хочу запустить этот run.py в моем прокси-контейнере Docker.

My Dockerfile:

FROM python:3.8

RUN apt-get update
RUN apt-get install -y git
RUN apt-get install -y net-tools iputils-ping
RUN apt-get install -y gconf-service libasound2 libatk1.0-0 libcairo2 libcups2 libfontconfig1 libgdk-pixbuf2.0-0 libgtk-3-0 libnspr4 libpango-1.0-0 libxss1 fonts-liberation libappindicator1 libnss3 lsb-release xdg-utils

RUN wget -q -O - https://dl-ssl.google.com/linux/linux_signing_key.pub | apt-key add -
RUN echo 'deb [arch=amd64] http://dl.google.com/linux/chrome/deb/ stable main' | tee /etc/apt/sources.list.d/google-chrome.list
RUN apt-get update
RUN apt-get install -y google-chrome-stable

RUN mkdir -p /usr/src/soft/
WORKDIR /usr/src/soft/
COPY chromedriver .

COPY git_key .
RUN eval $(ssh-agent) && \
    ssh-add /usr/src/soft/git_key && \
    ssh-keyscan -H 10.20.30.40 >> /etc/ssh/ssh_known_hosts && \
    git clone git@10.20.30.40:user/app.git /usr/src/soft/app
WORKDIR /usr/src/soft/app
RUN pip install --no-cache-dir -r requirements.txt
CMD ["python", "run.py"]

После этого я создаю свой Docker Изображение, назовем его робот .

Наконец, мне нужно запустить контейнер Docker. И есть мой вопрос.

Если я запустил его без указания параметра HTTPS_PROXY env, все в порядке (приложение запустится и вернет html):

docker run --rm robot

Но если я попытаюсь запустить он с параметром:

docker run --env HTTPS_PROXY="https://user:password@host:port" --rm robot

Docker контейнер работает, но возвращает пустую строку для html.

Мой вопрос: :

  1. Как я могу запустить docker контейнер с аутентифицированным прокси и получить URL-адрес в Selenium Chrome Browser в моем python приложении?
  2. Или как запустить selenium-браузер с аутентифицированный прокси?
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...