多测师是一家拥有先进的教学理念,强大的师资团队,业内好评甚多的接口自动化测试培训机构!

17727591462

联系电话

您现在所在位置:接口自动化测试培训 > 新闻资讯

接口自动化测试-Selenium中的免密登陆与cookie操作

更新时间:2021-09-27 02:45:39 作者:admin 浏览:398

接口自动化测试-Selenium中的免密登陆与cookie操作

  网站登录

  现在各大平台在反爬虫功能上,可谓花样繁多。总结下来按照破解成功率排名,最高的是滑动解锁、其次是验证码数字、之后是一次点击对应的汉字,最后是想12306之前那种反人类的让你说那些是奶糖吧,哈哈......

  为什么我这么排序?很多人可能不赞同,认为验证码数字是最简单的......其实不然,因为验证码数字现在不仅是背景的色块,还穿插这很多混乱的线条,别说是系统识别,就是人仔细看都还会经常出错,所以成功率实在不高。至于滑动解锁,网上教程很多...剩下的两种就难度更高了....

  那么如何能跳过这些步骤?在访问前添加cookie,是最简单粗暴的办法!

接口自动化测试-Selenium中的免密登陆与cookie操作

  如何获取cookie

  当我们成功登陆网址后,网站会将登陆验证信息保存在浏览器的Headers中,我们通过F12即可获取,但直接从headers中看是long long 的字符串不方便审查,所以切换到cookie栏。

  在cookie中不仅有登陆凭证,还会有很多其他网站附带的属性。此时需要我们过滤掉无关的数据,仅保存我们需要的内容即可。

  你问我怎么甄别?如简书这样的,什么local、read_mode、default_font肯定是打酱油的属性,没必要关注。

  但上面的__yadk_uid等等的是否需要那就只能靠实验了.....先只加token,不行再尝试添加其他的呗。

  selenium与cookie有关的方法

  selenium中与cookie相关的方法有以下内容:

  .delete_all_cookies()

  .get_cookies()/ .get_cookie()

  .add_cookie()

  基本使用场景如下:

  当,为了清空或者二次刷新登陆的时候,使用delete_all_cookies删除浏览器所有的cookie数据。

  当当,为了获取系统某个或者所有cookie信息是使用get_cookies()/ .get_cookie()。

  当当当,我们需要为浏览器添加cookie时,使用add_cookie。这种场景最多....

  说的再多,不如来点实际的,设计一套思路来实现这三种方法:

  首先,我们访问简书

  然后点击登陆,输入用户名密码

  等待十秒用来手动完成验证方式

  获取get_cookie(key) 和get_cookies()

  退出chromedriver

  重新访问简书,并添加cookie

  再次访问url,看到已经完成了登陆....

  # -*- coding: utf-8 -*-

  # @Author : 王哥

  # @JianShu : Python

  # @Date : 2021/7/2 10:55

  # @Software : PyCharm

  # @version :Python 3.7.3

  # @File : selenium_cookie.py

  from selenium import webdriver

  import time

  driver = webdriver.Chrome()

  driver.get("https://www.jianshu.com/u/d23fd5012bed")

  driver.delete_all_cookies()

  driver.find_element_by_id('sign_in').click()

  driver.find_element_by_id('session_email_or_mobile_number').send_keys('user')

  driver.find_element_by_id('session_password').send_keys('password')

  driver.find_element_by_id('sign-in-form-submit-btn').click()

  # 此时我们手动进行登录验证操作操作

  time.sleep(10)

  # cookie 关键字

  key = 'remember_user_token'

  user_token = driver.get_cookie(key)

  print(user_token)

  cookies = driver.get_cookies()

  print(cookies)

  driver.quit()

  cookie = {'name': key, 'value': user_token['value']}

  driver = webdriver.Chrome()

  driver.get("https://www.jianshu.com/u/d23fd5012bed")

  driver.add_cookie(cookie)

  driver.get("https://www.jianshu.com/u/d23fd5012bed")

  time.sleep(3)

  driver.close()

  看看实现效果,为了不暴露用户名密码,所以代码中清空了用户名,暂停手动输入的。

  看到终端打印了cookie和cookies,cookie为字典,cookies为包裹了多个字典的列表。之后我们使用cookie进行二次登陆时,通过刷新两次界面看到右上角用户名由未登录变为了登陆。

  以上是关于Selenium中的免密登陆与cookie操作的介绍,由多测师亲自撰写。https://www.aichudan.com/

联系电话

17727591462

返回顶部