Selenium系列(10)-使用cookies绕过登录


什么是cookies

  • 网站为了辨别用户身份、进行 session 跟踪而储存在用户本地终端上的数据(通常是加密的)

使用步骤

伪代码实现如下:

  • 获取cookies通过get_cookies()方法
  • 再通过add_cookies()使用获取到的cookies

还是以企业微信为例,首先通过浏览器复用获取企业微信登录的cookies

cookies = driver.get_cookies()

再通过add_cookies()使用cookies进行登录

def test_cookies(self):
    driver = webdriver.Chrome()
    # 进入企业微信登录页
    driver.get("https://work.weixin.qq.com/")
    # 使用cookies登录
    cookies = [your_cookies]
    for cookie in cookies:
        driver.add_cookie(cookie)
    # 进入我的企业页面
    driver.get("https://work.weixin.qq.com/wework_admin/frame#profile")
    driver.find_element_by_id("menu_contacts").click()
    time.sleep(5)
    driver.quit()

通过以上方法,可以实现绕过企业微信扫码登录

?? ATTENTION:

  • cookies记录了登录后的信息,下次发送请求就会携带已登录的信息,可以做到免登录
  • 好处是不需要再做一次登录等操作了

一些坑

  • 在使用cookies登录的时候,遇到了一个“您的账号已在别处登录”的提示??(不要慌,重新获取一遍cookies),原因是我在浏览器复用获取cookies的时候重新登录过

  • 为什么要先打开登录页面再传cookies?——selenium的默认域名是data:,cookies中自带域名,发现当前域名不包含在cookies中时,会导致cookies设置失败??,可参考下图

  • 企业微信是有过期时间expiry的,所以cookies需要定期更新??

  • 如果企业微信在其他的地方登录过,最好也更新一下cookies??