Selenium 添加Cookie实现绕过登录流程

有些简单的网站我们可以简单的send key来输入账户密码就可以登录,但是有很多网站需要验证码之类的就不太好用了,这时候就体现到了cookie登录的优点了

 

创建demo.py

from selenium import webdriver

import time

import json

 

#填写webdriver的保存目录

driver = webdriver.Chrome('../chromedriver.exe')

 

#记得写完整的url 包括http和https

driver.get('https://www.baidu.com')

 

#程序打开网页后20秒内手动登陆账户

time.sleep(30)

 

with open('cookies.txt','w') as cookief:

    #将cookies保存为json格式

    cookief.write(json.dumps(driver.get_cookies()))

 

driver.close()

 

创建demo2.py

from selenium import webdriver

import time

import json

 

#填写webdriver的保存目录

driver = webdriver.Chrome()

 

#记得写完整的url 包括http和https

driver.get('https://www.baidu.com')

#首先清除由于浏览器打开已有的cookies

driver.delete_all_cookies()

 

 

with open('cookies.txt','r') as cookief:

    #使用json读取cookies 注意读取的是文件 所以用load而不是loads

    cookieslist = json.load(cookief)

    for cookie in cookieslist:

        driver.add_cookie(cookie)

# 刷新页面

driver.refresh()

 

解决Cookie时效性字段

from selenium import webdriver

import json

 

#填写webdriver的保存目录

driver = webdriver.Chrome('../chromedriver.exe')

 

#记得写完整的url 包括http和https

driver.get('https://www.baidu.com')

#首先清除由于浏览器打开已有的cookies

driver.delete_all_cookies()

 

with open('cookies.txt','r') as cookief:

    #使用json读取cookies 注意读取的是文件 所以用load而不是loads

    cookieslist = json.load(cookief)

 

    # 方法1 将expiry类型变为int

    for cookie in cookieslist:

        #并不是所有cookie都含有expiry 所以要用dict的get方法来获取

        if isinstance(cookie.get('expiry'), float):

            cookie['expiry'] = int(cookie['expiry'])

        driver.add_cookie(cookie)

 

driver.refresh()

import time
import json

#填写webdriver的保存目录
driver = webdriver.Chrome('../chromedriver.exe')

#记得写完整的url 包括http和https
driver.get('https://www.baidu.com')

#程序打开网页后20秒内手动登陆账户
time.sleep(30)

with open('cookies.txt','w') as cookief:
#将cookies保存为json格式
cookief.write(json.dumps(driver.get_cookies()))

driver.close()
posted @ 2020-08-20 23:21  老祝头  阅读(1546)  评论(0编辑  收藏  举报