Headless Chrome с использованием Selenium - 401 Несанкционированный доступ - PullRequest
0 голосов
/ 09 октября 2018

Я пытаюсь автоматизировать несколько задач на веб-странице.

Для этого я использую Python, Selenium и Google Chrome.

Веб-странице, которую я, к сожалению, не могу опубликовать здесь, требуются имя пользователя и пароль.Я вошел в систему как пользователь на веб-странице уже через мой обычный браузер Google Chrome.

Когда я запускаю свой код и пытаюсь выполнить задачи в автономном режиме, я получаю сообщение «401 - Несанкционированный: доступотказано из-за неверных учетных данных ".Я запечатлел это сообщение используя скриншот в Python.Error screenshot Однако, если я делаю те же самые шаги в обычном режиме (не без головы), веб-страница позволяет мне делать все, потому что я уже вошел в систему как пользователь.

ИзСообщение об ошибке, я понимаю, что мне нужно войти в систему. Однако мой вопрос: почему страница позволяет мне выполнять все задачи, когда она находится в видимом режиме, но блокирует меня, когда в режиме без головы?В обоих случаях я уже вошел в систему через мой обычный браузер Google Chrome.

Есть ли способ обойти это безголовый режим?

Пожалуйста, найдите мой код ниже:

import time, datetime, sys, os, openpyxl,logging
from unidecode import unidecode
start_time = time.time()
from datetime import datetime
os.system("cls")
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.common.exceptions import TimeoutException
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
from selenium.webdriver.chrome.options import Options

CHROME_PATH = 'C:\\Program Files(x86)\\Google\\Chrome\\Application\\chrome.exe'
CHROMEDRIVER_PATH = 'C:\\Users\\'+userID+'\\'+filename+'\\chromedriver.exe'
WINDOW_SIZE = "1920,1080"

chrome_options = Options()  
#chrome_options.add_argument("--headless")  
chrome_options.add_argument("--window-size=%s" % WINDOW_SIZE)
chrome_options.add_argument("disable-gpu")
chrome_options.add_argument("disable-infobars")
chrome_options.add_argument("--disable-notifications")
chrome_options.binary_location = CHROME_PATH

browser = webdriver.Chrome(executable_path=CHROMEDRIVER_PATH,chrome_options=chrome_options)
time.sleep(1)
browser.get("*****enter URL here*****")#unfortunately I cannot show the URL here
os.system("cls")
time.sleep(2)

1 Ответ

0 голосов
/ 12 мая 2019

из https://github.com/RobCherry/docker-chromedriver#usage

Примечание. По умолчанию ChromeDriver ограничивает доступ к локальным подключениям.Чтобы разрешить внешние подключения, вы можете передать пользовательскую переменную среды CHROMEDRIVER_WHITELISTED_IPS.По умолчанию это значение равно 127.0.0.1, но это может быть любой список IP-адресов, разделенных запятыми.Установка значения пустым разрешит все удаленные подключения.

docker run --name chromedriver -p 127.0.0.1::4444 -e CHROMEDRIVER_WHITELISTED_IPS='' robcherry/docker-chromedriver:latest

магия: -e CHROMEDRIVER_WHITELISTED_IPS=''

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...