【问题标题】:Authentication cookies not reusable with selenium chromedriver身份验证 cookie 不能与 selenium chromedriver 重用
【发布时间】:2021-02-04 01:52:28
【问题描述】:

我正在使用 selenium 3.141.0 和 chromedriver 86.0.4240.22 登录网站,存储 cookie。在下一次会话期间,我希望使用现有的 cookie 来防止再次登录。但是,它不起作用。一切似乎都运行良好,但站点 https://primexbt.com 不确认现有的 cookie。我能做什么?

    options = Options()
    options.add_argument('--dns-prefetch-disable')
    options.add_argument('--no-sandbox')
    options.add_argument('--lang=en-US')
    options.add_argument('--disable-setuid-sandbox')
    chrome_prefs = {
        'intl.accept_languages': 'en-US',
    }
    options.add_experimental_option('prefs', chrome_prefs)
    self.driver = webdriver.Chrome(options=options)

    # load cookies
    cookies = get_cookies()
    if cookies:
        self.driver.get(self.URL_PRIMEXBT)
        for cookie in cookies:


            self.driver.add_cookie(cookie)

【问题讨论】:

    标签: python selenium authentication selenium-chromedriver


    【解决方案1】:

    默认情况下 - 一个新的 ChromeDriver 会话会创建一个新的配置文件数据目录 - 因此您没有上一个会话的 cookie。我建议:

    1. 使用包含您的授权 cookie 的配置文件数据启动 WebDriver
    options.add_argument('user-data-dir')
    
    1. 通过直接 http 调用/API 调用进行授权,绕过 WebDriver(以加快测试速度) - 并将响应 cookie 传递给 WebDriver
    2. 或存储授权 cookie 并加载它们 - 例如使用此解决方案: How to save and load cookies using Python + Selenium WebDriver

    【讨论】:

    • 正如我所说,我正在正确保存和加载 cookie,我可以在调试过程中看到这一点。
    • 你能分享一下 get_cookies 的实现吗?
    • 你能检查一下正确设置的cookie的cookie属性是否与add_cookie selenium方法添加的cookie的属性相同(尤其是-域)?
    • 嗨,如果我使用options.add_argument('user-data-dir,它就可以工作。如果你可以用那个替换子弹,那么我会接受。使用配置文件,我什至不需要重新添加包含的 cookie。从你的第一句话中得到了这个想法,谢谢:)
    • 嗨 - 我已经通过配置文件数据启动 WebDriver 添加了这个解决方案
    猜你喜欢
    • 1970-01-01
    • 2011-09-21
    • 2011-06-24
    • 1970-01-01
    • 2011-06-30
    • 2016-01-14
    • 1970-01-01
    • 2016-10-13
    • 1970-01-01
    相关资源
    最近更新 更多