selenium 设置header中的cookie跳过验证码

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了selenium 设置header中的cookie跳过验证码相关的知识,希望对你有一定的参考价值。

参考技术A 在selenium的登录中经常需要输入验证码,用了很多种方法,识别准确率都不高(比较靠谱的tesseract)。可以用下面几种方法来替代

我用的第三种方法,首先在浏览器手动登陆,然后查看request header复制到selenium中的header中

如何使用 python 将 cookie 设置为 selenium webdriver 中的特定域?

【中文标题】如何使用 python 将 cookie 设置为 selenium webdriver 中的特定域?【英文标题】:How to set a cookie to a specific domain in selenium webdriver with python? 【发布时间】:2014-09-15 04:06:25 【问题描述】:

您好 *** 用户。我想要实现的是防止在我的测试打开主页时弹出烦人的帮助框。到目前为止,这是我用来打开主页的方法:

def open_url(self, url):
    """Open a URL using the driver's base URL"""
    self.webdriver.add_cookie('name' : 'tour.index', 'value' : 'complete', 'domain' : self.store['base'] + url)
    self.webdriver.add_cookie('name' : 'tour.map', 'value' : 'complete', 'domain' : self.store['base'] + url)
    self.webdriver.get(self.store['base'] + url)

但是,我运行测试后返回的是这样的:

2014-07-23 15:38:19.453057: X Message: u'You may only set cookies for the current domain' ;

如何在实际加载基本测试域之前设置 cookie?

【问题讨论】:

【参考方案1】:

文档建议在设置 cookie 之前导航到虚拟 url(例如 404 页面或图像路径)。然后,设置 cookie,然后导航到您的主页。

Selenium Documentation - Cookies

...您需要位于 cookie 有效的域中。如果你 正在尝试在您开始与网站交互之前预设 cookie ...另一种选择是 在网站上找到一个较小的页面... (http://example.com/some404page)

因此,您的代码可能如下所示:

def open_url(self, url):
    """Open a URL using the driver's base URL"""

    dummy_url = '/404error'
    # Or this
    #dummy_url = '/path/to/an/image.jpg'

    # Navigate to a dummy url on the same domain.
    self.webdriver.get(self.store['base'] + dummy_url)

    # Proceed as before
    self.webdriver.add_cookie('name' : 'tour.index', 'value' : 'complete', 'domain' : self.store['base'] + url)
    self.webdriver.add_cookie('name' : 'tour.map', 'value' : 'complete', 'domain' : self.store['base'] + url)
    self.webdriver.get(self.store['base'] + url)

【讨论】:

为图像设置 cookie 给我一个例外:org.openqa.selenium.UnableToSetCookieException: You may only set cookie on html documents 要添加到此,如果您的 cookie 作为“路径”属性,则浏览器/驱动程序将需要在该路径上才能添加 cookie。

以上是关于selenium 设置header中的cookie跳过验证码的主要内容,如果未能解决你的问题,请参考以下文章

无需访问 Selenium 中的页面即可设置 Cookie

如何使用 python 将 cookie 设置为 selenium webdriver 中的特定域?

postman实现从response headers中获取cookie,并将其设置为环境变量

Requests添加Cookie

robotframework之使用cookies登陆

python:Fastapi - Cookie 和 Header