我正在使用 selenium & selenium 线在我的项目。我写的流程登录谷歌云门户网站。
我进入我的谷歌云邮件,然后,按下继续在谷歌登录,然后它登录到gcp。
我得到了一些错误:
请求具有无效的身份验证凭据。需要OAuth 2访问令牌、登录Cookie或其他...
网络::错误代理连接失败
当我做同样的流程手动没有自动化,用同样的凭证,它工作得很好,没有任何网络错误。
我的Web驱动程序
from seleniumwire import webdriver
from seleniumwire.webdriver import ChromeOptions
def test_gcp_flow():
options = ChromeOptions()
options.add_experimental_option("detach", True)
options.add_argument('--no-sandbox')
options.add_argument('--single-process')
options.add_argument('--disable-dev-shm-usage')
options.add_argument("--start-maximized")
options.add_argument('--auto-open-devtools-for-tabs')
options.add_argument('--log-level=2')
options.add_argument('--disable-features=IsolateOrigins,site-per-process')
options.add_argument("--ignore_ssl")
options.add_argument('--ignore-ssl-errors')
options.add_argument('--ignore-certificate-errors')
options.add_argument("--disable-extensions")
options.add_argument("--disable-setuid-sandbox")
options.add_argument("--dns-prefetch-disable")
options.add_argument('ignore-certificate-errors')
options.add_argument('disable-web-security')
options.add_argument('--allow-insecure-localhost')
driver = webdriver.Chrome(options=options)
driver.get('....any-hidden-url')
# more flow actions - then it open gcp portal
我添加了openssl.cnf(如果没有这个openssl,它会显示TLS ssl问题),以便在使用Pycharm的测试中本地运行它:
openssl_conf = openssl_init
[openssl_init]
ssl_conf = ssl_sect
[ssl_sect]
system_default = system_default_sect
[system_default_sect]
Options = UnsafeLegacyRenegotiation
我尝试添加一些更改添加到Selenium驱动程序的chrome选项,但没有任何更改,仍然是相同的错误。
**我试着使用Firefox webdriver,它工作得很好,没有任何网络问题。**也许是任何铬缓存问题?因为几天前它工作我与铬。
我所期望的是,登录到gmail没有网络/令牌问题.
2条答案
按热度按时间yh2wf1be1#
我能想到两个可能的选择:
1.你的浏览器中有一个认证cookie,它没有在Selenium中使用。每个Selenium会话都是完全干净地启动的。你可以用
pickle
保存cookie,然后用Python将其注入Selenium web驱动程序。尽管如果你不能将其加密存储在安全的地方并在运行时获取它,我会避免使用它(否则--在某个时候,不管你认为你有多安全,它都会被偷)。顺便说一句,如果它的东西,你真的需要-你是一个付费客户,也许谷歌有一个可用的解决方案,为这种需要。
祝你好运!
gjmwrych2#
尝试使用 selenium 线与未检测到的铬驱动程序。
pip install selenium-wire
pip install undetected-chromedriver
我希望它能解决这个问题。