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??