使用cookie操作的形式绕过验证码,进行免登录

验证码在当今的软件中应用非常广泛,如手机App,网页网站等,很多地方在利用这种机制来规避一些安全和隐私问题。
在自动化测试过程时,其中验证码的一种处理思路是通过cookie操作的形式来绕过验证码甚至是二维码等安全机制。而且这种方法和思路相对来说也是简便一些。

示例:通过百度网盘的登录场景来演示cookie实现自动化登录。
步骤1:通过脚本抓取初次打开百度网盘首页的cookie:

from selenium import webdriver

driver = webdriver.Chrome()
driver.get('https://pan.baidu.com/')
cookies = driver.get_cookies()
print(cookies)
driver.quit()

执行代码后得到cookie的详情:
[{‘domain’: ‘.baidu.com’, ‘expiry’: 1679491301, ‘httpOnly’: False, ‘name’: ‘BAIDUID_BFESS’, ‘path’: ‘/’, ‘sameSite’: ‘None’, ‘secure’: True, ‘value’: ‘95FF9F733C38131EAA8CE70BF5C423A9:FG=1’}, {‘domain’: ‘.baidu.com’, ‘expiry’: 1679491300, ‘httpOnly’: False, ‘name’: ‘BAIDUID’, ‘path’: ‘/’, ‘secure’: False, ‘value’: ‘95FF9F733C38131EAA8CE70BF5C423A9:FG=1’}]

步骤2:登录百度网盘,再抓取一次cookie:

from selenium import webdriver

driver = webdriver.Chrome()
driver.maximize_window()
driver.get('https://pan.baidu.com/')
driver.implicitly_wait(10)
driver.find_element_by_xpath('//input[@id="TANGRAM__PSP_4__userName"]').send_keys('输入账号')
driver.find_element_by_xpath('//input[@id="TANGRAM__PSP_4__password"]').send_keys('输入密码')
driver.find_element_by_xpath('//input[@id="TANGRAM__PSP_4__submit"]').click()
cookies = driver.get_cookies()
print(cookies)
driver.quit()

步骤3:比较一下两次得到的cookie值的差别,找出哪些项是在第一次cookie值中没有的。通过添加这些缺少的值,来实现自动化登录。

# coding = utf-8
# Author: wh
# Date: 2022/3/22 21:09

from selenium import webdriver
import time

driver = webdriver.Chrome()
driver.get('https://pan.baidu.com/')
cookies= [{'domain': '.pan.baidu.com', 'httpOnly': False, 'name': 'Hm_lpvt_7a3960b6f067eb0085b7f96ff5e660b0', 'path': '/', 'secure': False, 'value': '1613827179'},
          {'domain': '.pan.baidu.com', 'expiry': 1645363178, 'httpOnly': False, 'name': 'Hm_lvt_7a3960b6f067eb0085b7f96ff5e660b0', 'path': '/', 'secure': False, 'value': '1613827179'},
          {'domain': '.pan.baidu.com', 'expiry': 1616505578, 'httpOnly': True, 'name': 'STOKEN', 'path': '/', 'secure': False, 'value': 'a1abe64bd378e143476f2d856a1e5a7080aff1abc2ecd89f32ea5e90a9345e17'},
          {'domain': 'pan.baidu.com', 'httpOnly': False, 'name': 'csrfToken', 'path': '/', 'secure': False, 'value': 'DllTNBH92jJnSmaaheqBlCVP'},
          {'domain': 'pan.baidu.com', 'expiry': 4205827178, 'httpOnly': False, 'name': 'pan_login_way', 'path': '/', 'secure': False, 'value': '1'},
          {'domain': '.baidu.com', 'expiry': 1873027176, 'httpOnly': True, 'name': 'BDUSS_BFESS', 'path': '/', 'sameSite': 'None', 'secure': True, 'value': 'dBZktEYzQxVH5WVzBBYndldVN1SFpzNHJXM1B5ajBLamZvcE9PbmJ1eG9tVmhnSVFBQUFBJCQAAAAAAAAAAAEAAACR-JXzu6LHxbe76srX0wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGgMMWBoDDFgQ1'},
          {'domain': '.pan.baidu.com', 'expiry': 1613913578, 'httpOnly': True, 'name': 'PANPSC', 'path': '/', 'secure': False, 'value': '7228614414795236799%3AHSTAF2Xekfpr2hRSrOsG6kYemHfSgA%2FTpMk%2BQbyzAbdSghkg9EtPCY8c7lMN%2Fy07vd10u1h12sgr2wqYbSNJzI5Z7CUEEVIfuYpAOs4Qb65E2OlLZIpvWpwI2lYmdZVOf9Ocgd2LBDwKxMOTh0nUJJC9qgHiau%2FldS8c7ndIzLExGZiuUUeCaoX0p6z9lD8V7g%2B5PM2vWus%3D'},
          {'domain': '.baidu.com', 'expiry': 1873027176, 'httpOnly': True, 'name': 'BDUSS', 'path': '/', 'secure': False, 'value': 'dBZktEYzQxVH5WVzBBYndldVN1SFpzNHJXM1B5ajBLamZvcE9PbmJ1eG9tVmhnSVFBQUFBJCQAAAAAAAAAAAEAAACR-JXzu6LHxbe76srX0wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGgMMWBoDDFgQ1'},
          {'domain': '.baidu.com', 'expiry': 1645363164, 'httpOnly': False, 'name': 'BAIDUID', 'path': '/', 'secure': False, 'value': '9B84713A7600A60235F0E15E206A8C3D:FG=1'}]
# 写入cookie
for cookie in cookies:
    driver.add_cookie(cookie)
time.sleep(3)
# 访问网站,查看是否是登录状态
driver.get('https://pan.baidu.com/')
# 关闭浏览器
driver.quit()
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值