gpt4 book ai didi

python-3.x - 使用 Selenium 的 headless Chrome - 401 未经授权的访问

转载 作者:行者123 更新时间:2023-12-05 05:14:18 25 4
gpt4 key购买 nike

我正在尝试自动执行网页上的一些任务。

为此,我使用 Python、Selenium 和 Google Chrome。

很遗憾,我无法在此处发布该网页,它需要用户名和密码。我已经通过普通的 google chrome 浏览器以用户身份登录网页。

当我运行我的代码并尝试以 headless 模式执行任务时,我收到一条消息“401 - 未经授权:由于凭据无效,访问被拒绝”。我使用 python 中的屏幕截图捕获了这条消息。 Error screenshot但是,如果我在正常模式(不是 headless 模式)下执行完全相同的步骤,则该网页允许我执行所有操作,因为我已经以用户身份登录。

从错误消息中,我了解到我需要登录。但是,我的问题是:为什么页面在可见模式下允许我执行所有任务,但在 headless 模式下却阻止我执行所有任务?在这两种情况下,我都已经通过普通的 google chrome 浏览器登录了。

有没有办法在 headless 模式下解决这个问题?

请在下面找到我的代码:

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)

最佳答案

来自 https://github.com/RobCherry/docker-chromedriver#usage

Note: ChromeDriver restricts access to local connections by default. To allow external connections, you can pass in a custom CHROMEDRIVER_WHITELISTED_IPS environment variable. By default, this is set to 127.0.0.1, but this can by any comma separated list of IP addresses. Setting the value as empty will allow all remote connections.

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

神奇的是:-e CHROMEDRIVER_WHITELISTED_IPS=''

关于python-3.x - 使用 Selenium 的 headless Chrome - 401 未经授权的访问,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52711352/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com