Python selenium 使用cookie跳过验证码

为了防止网站被恶意注册,很多的网站都在登录页面加入了识别文字,识别图片,拖动拼图的方式来识别机器人,但是如果我们要用这个网站做UI自动化测试,登录的时候就会很麻烦,每次都要手动输入验证码之类的,使用cookie登录就能很好的解决这个问题。
cookie登录原理:第一次登录网站的时候手动输入信息,然后把cookie保存下载,cookie信息中存了一些可以识别用户身份的信息,第二次登录网站的时候,加载cookie,服务器就会通过cookie中的信息去识别用户,然后登录成功。所以cookie登录主要分为两大步,一是获取cookie,二是添加cookie。

获取cookie

import requests
import time
import json
from selenium import webdriver

# 先打开需要登录的网址
driver = webdriver.Chrome()
driver.get("https://www.jianshu.com/sign_in")
# 输入用户名密码点击登录
driver.find_element_by_id("session_email_or_mobile_number").send_keys("username")
driver.find_element_by_id("session_password").send_keys("password")
driver.find_element_by_id("sign-in-form-submit-btn").click()
time.sleep(10) # 手动验证时间
# ----  获得cookies   -----
cookie = driver.get_cookies()
print(cookie)  # list
# 将cookies数据存入文件
cookie_data_file = "D:\CookieData.json"
json.dump(cookie,open(cookie_data_file,"w"))

登录时添加cookie

# ---- cookie 登录-----
# 打开网址
driver = webdriver.Chrome()
driver.get("https://www.jianshu.com/sign_in")
# 从cookie json文件读取python数据
cookie_data_file = "D:\CookieData.json"
python_data = json.load(open(cookie_data_file))
print(python_data)
# 添加cookie
for cookie in python_data:
    driver.add_cookie(cookie)
# 登录成功的页面地址
driver.get("https://www.jianshu.com/")

但是有一个问题是,使用cookie登录成功之后,页面就自动关闭了,没有办法进行后续操作,关闭原因是代码自动调用了service模块的stop方法,所以想要页面不关闭,可以设置足够的等待时间(time.sleep(n))来完成后续操作。

  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值