使用cookie操作的形式绕过验证码,进行免登录
验证码在当今的软件中应用非常广泛,如手机App,网页网站等,很多地方在利用这种机制来规避一些安全和隐私问题。
在自动化测试过程时,其中验证码的一种处理思路是通过cookie操作的形式来绕过验证码甚至是二维码等安全机制。而且这种方法和思路相对来说也是简便一些。
示例:通过百度网盘的登录场景来演示cookie实现自动化登录。
步骤1:通过脚本抓取初次打开百度网盘首页的cookie:
fromseleniumimportwebdriver 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:
fromseleniumimportwebdriver 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:09fromseleniumimportwebdriverimporttime 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'}]# 写入cookieforcookieincookies:driver.add_cookie(cookie)time.sleep(3)# 访问网站,查看是否是登录状态driver.get('https://pan.baidu.com/')# 关闭浏览器driver.quit()