美文网首页
Python下selenium添加cookies免登陆

Python下selenium添加cookies免登陆

作者: 飞飞飞段啊 | 来源:发表于2019-11-11 15:33 被阅读0次
    先来看selenium对cookies的几种操作方法
    1. 获取cookies
    from selenium import webdriver
    
    driver = webdriver.Chrome()
    driver.get_cookise()   #  获取cookies
    driver.get_cookies(name)  # 获取指定的cookies
    
    1. 删除cookies
    driver.delete_all_cookies()  # 删除所有的cookies
    driver.delete_cookies(name)   # 删除指定的cookies
    

    3.添加cookies

    driver.add_cookie(dict)  # 添加cookies
    
    利用add_cookies()方法实现免登:先看add_cookies()源码
    def add_cookie(self, cookie_dict):
            """
            Adds a cookie to your current session.
    
            :Args:
             - cookie_dict: A dictionary object, with required keys - "name" and "value";
                optional keys - "path", "domain", "secure", "expiry"
    
            Usage:
                driver.add_cookie({'name' : 'foo', 'value' : 'bar'})
                driver.add_cookie({'name' : 'foo', 'value' : 'bar', 'path' : '/'})
                driver.add_cookie({'name' : 'foo', 'value' : 'bar', 'path' : '/', 'secure':True})
    
            """
            self.execute(Command.ADD_COOKIE, {'cookie': cookie_dict})
    

    1.add_cookies()方法接收一个字典对象,并且包含name和value两个必须参数,另外其他可选参数

    • domain:服务器域名

    • expiry:Cookie有效终止日期

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

    • httpOnly:防脚本攻击

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

    看下driver.get_cookies()返回来的cookies
    from selenium import webdriver
    import time
    
    driver = webdriver.Chrome()
    driver.get("https:/www.baidu.com")
    time.sleep(2)
    cookies = driver.get_cookise()
    print(cookies)
       
    [{'domain': '.baidu.com', 'httpOnly': False, 'name': 'H_PS_PSSID', 'path': '/', 'secure': False, 'value': '1424_21124_29567_29221_28701'}, {'domain': '.baidu.com', 'expiry': 1604992419.804755, 'httpOnly': False, 'name': 'BAIDUID', 'path': '/', 'secure': False, 'value': '2A6E0F8C263C683AEA1BFF21DE639859:FG=1'}, {'domain': '.baidu.com', 'expiry': 3720940066.804666, 'httpOnly': False, 'name': 'BIDUPSID', 'path': '/', 'secure': False, 'value': '2A6E0F8C263C683A7B6EE4EF1E57E39A'}, {'domain': '.baidu.com', 'httpOnly': False, 'name': 'delPer', 'path': '/', 'secure': False, 'value': '0'}, {'domain': '.baidu.com', 'expiry': 3720940066.804696, 'httpOnly': False, 'name': 'PSTM', 'path': '/', 'secure': False, 'value': '1573456418'}, {'domain': '.baidu.com', 'expiry': 1573542820.41061, 'httpOnly': False, 'name': 'BDORZ', 'path': '/', 'secure': False, 'value': 'B490B5EBF6F3CD402E515D22BCDA1598'}, {'domain': 'www.baidu.com', 'expiry': 1574320420, 'httpOnly': False, 'name': 'BD_UPN', 'path': '/', 'secure': False, 'value': '12314753'}, {'domain': 'www.baidu.com', 'httpOnly': False, 'name': 'BD_HOME', 'path': '/', 'secure': False, 'value': '0'}]
    

    cookies 是一个列表,包含了cookies的name和对应的value值以及domain、httpOnly、secure、path几个键,因为没有登录状态,所以有的name是没有expire过期时间这个键的。

    实现免登陆的方式就可以先利用selenium第一次模拟登录返回登录之后的cookies,然后保存再使用add_cookies()去拿网页源码
    注意使用add_cookies()之前先get()一次,删除全部的cookies然后add_cookies()

    相关文章

      网友评论

          本文标题:Python下selenium添加cookies免登陆

          本文链接:https://www.haomeiwen.com/subject/ewjtictx.html