selenium 通过添加cookie免登录

【目的】

通过登录成功后获取浏览器的cookie,再次打开界面通过添加cookie数据达到免登陆效果

一、selenium通过添加cookies免登陆

1、通过selenium登录成功,登录成功后,使用driver.get_cookies()获取获取所有cookies

2、将cookies数据保存

3、登录任一界面,未登录跳转至登录界面

4、读取cookies文件获取cookie,使用driver.add_cookie()添加

5、刷新该界面,界面显示已登录状态

友情提醒:cookie中的httponly如果值为True,则无法通过该方式登陆

代码参考:
 

#coding=utf-8
import json
from selenium import webdriver
import requests
class cookies:
    def __init__(self,driver):
        self.driver=driver

    #获取cookies保存到文件
    def save_cookie(self):
        cookies=self.driver.get_cookies()
        json_cookies=json.dumps(cookies)
        with open('d:/cookies_csnd.json','w') as f:
            f.write(json_cookies)
    #读取文件中的cookie
    def add_cookie(self):
        self.driver.delete_all_cookies()
        dict_cookies={}
        with open('d:/cookies.json','r',encoding='utf-8') as f:
            list_cookies=json.loads(f.read())
        for i in list_cookies:
            self.driver.add_cookie(i)
if __name__ == '__main__':
    driver=webdriver.Chrome()

    #进行登录

driver.find_element_by_xpath('//div/ul/li[@class="user"]/input').send_keys("xxxxxxxxxx")
driver.find_element_by_xpath('//div/ul/li[@class="password"]/input').send_keys("123456")
driver.find_element_by_xpath('//div/ul/li[@class="jump"]/button').click()   
cookies=cookies(driver)
cookies.save_cookie()#保存cookies
driver.delete_all_cookies()#删除当前所有的cookies
#打开想要跳转的界面,此步不可缺少,不然会报错
driver.get("xxxxxxxxx")
cookies.add_cookies()#添加cookie
driver.get("xxxxxxxxx")#重新打开,该界面显示登录状态

cookie内容解读:

  • name:cookie的名称

  • value:cookie对应的值,动态生成的

  • domain:服务器域名

  • expiry:Cookie有效终止日期

  • path:Path属性定义了Web服务器上哪些路径下的页面可获取服务器设置的Cookie

  • httpOnly:防脚本攻击

  • secure:在Cookie中标记该变量,表明只有当浏览器和Web Server之间的通信协议为加密认证协议时

猜你喜欢

转载自blog.csdn.net/qq_35577990/article/details/89812933
今日推荐