Selenium基础 — Selenium实现绕过验证码登陆

1、验证码问题

对于web 应用来说,大部分的系统在用户登录时,都要求用户输入验证码。验证码的类型的很多,有字母数字的,有汉字的,甚至还要用户输入一条算术题的答案的。对于系统来说,使用验证码可以有效果的防止采用机器猜测方法对口令的刺探,在一定程度上增加了安全性。但对于测试人员来说,不管是进行性能测试,还是自动化测试都是一个棘手的问题。

遍历序列

2、处理验证码的方法

(1)去掉验证码

这是最简单的方法,对于开发人员来说,只是把验证码的相关代码注释掉即可,如果是在测试环境,这样做可省去了测试人员不少麻烦,如果自动化脚本是要在正式环境跑,这样就给系统带来了一定的风险。(风险大)

软件测试项目实战

(2)设置万能码

去掉验证码的主要是安全问题,为了应对在线系统的安全性威胁,可以在修改程序时不取消验证码,而是程序中留一个“后门”,设置一个“万能验证码”,只要用户输入这个“万能验证码”,程序就认为验证通过,否则按照原先的验证方式进行验证。

python数据分析

(3)验证码识别技术

例如可以通过Python-tesseract来识别图片验证码,Python-tesseract 是光学字符识别Tesseract CR引擎的Python 封装类。能够读取任何常规的图片文件(JPG, GIF ,PNG , TIFF 等)。不过,目前市面上的验证码形式繁多,目前任何一种验证码识别技术,识别率都不是100% 。(玩玩还行,工作中不推荐)

内存越界

(4)记录cookie

通过向浏览器中添加cookie 可以绕过登录的验证码,这是比较有意思的一种解决方案。我们可以在用户登录之前,通过add_cookie()方法将用户名密码写入浏览器cookie ,再次访问系统登录链接将自动登录。

FSMC原理

3、Selenium实现绕过验证码登陆

"""
1.学习目标
    掌握验证码处理方式
2.操作步骤
    2.1 获取登录后的cookie
        通过浏览器F12或抓包工具
    2.2 将登录后的cookie添加到脚本中
        driver.add_cookie(字典格式)
    2.3 执行刷新操作
        driver.refresh()
3.需求
    获取百度登录后的cookie,实现免登陆
4.总结
    4.1 首先登录一次
    4.2 明确哪些cookie和登录相关
        (1)如果明确哪些cookie是保存用户信息,添加相应的cookie就好
        (2)如果不知道哪些cookie是保存用户信息的
            @1 可以把登陆后的cookie全部添加进去。
            @2也可以登陆前和登陆后分别获取cookie,
            登陆后多出来的cookie就是和登陆相关的用户信息cookie。
    4.3 使用cookie做免登陆,原来登录的账号不能退出的
"""
# 1.导入selenium
from selenium import webdriver
from time import sleep

# 2.打开浏览器
driver = webdriver.Chrome()

# 3.打开页面
url = "http://www.baidu.com/"
driver.get(url)
sleep(2)

"""
4. 登陆一次百度网站
    通过浏览器F12或抓包工具,获取cookie,
    火狐浏览器方便获取
"""

"""
5. 添加百度登录后的cookie  
    要确定哪些cookie是和用户信息先关的。
    百度中BAIDUID和BDUSS两个cookie是和用户信息相关的。
    这两个cookie就可以实现百度免登录。
    
    测公司自己项目的时候,需要用cookie实现免登录,
    需要问一下开发,和用户个人信息相关的登陆数据是哪些cookie。
    加载这些条cookie信息就可以实现免登录。
"""
cookies = [{"name": "BAIDUID", "value": "026CB67282F2B6C4F2AC6880EAEFE5A6:FG=1"},
           {"name": "BDUSS",
            "value": "pJckQ3aXdEVi1ZaUVpalpDfjhmQTlpZW9mfnNCMUFCdDFCNUpZajB3TG5sdlJlRVFBQUFBJCQAAAAAAAAAAAEAAAAzO-pLc2RqYWtzZGs3AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOcJzV7nCc1eYX"}]

# 6. 遍历cookies列表,添加cookie
for cookie in cookies:
    driver.add_cookie(cookie)

# 7. 刷新页面
driver.refresh()
sleep(3)

# 8.关闭浏览器
driver.quit()

"""
注意:
当你手动点击退出登陆,你所加载这这些cookie就失效了。
如果还需要通过cookie实现免登录,就要重新获取cookie信息。
"""

4、总结

  • 通过上面例子我们可以知道,查看访问百度所获得的cookie中,也没有看到有“sessionID”的数据,所以说“sessionID”名字是其他的名字也是一样的,后端拿到这些cookie之后,只需要知道这个数据就是session,然后拿去和数据库里的进行比对就行了。
  • 使用cookie 进行登录最大的难点是如何获得用户名密码的name ,如果找到不到name 的名字,就没办法向value 中输用户名、密码信息。可以通过get_cookies()方法来获取登录的所有的cookie 信息,从而进行找到用户名、密码的name 对象的名字。当然最简单的方法还是询问前端开发人员。

最后我这里给你们分享一下我所积累和真理的文档和学习资料有需要是领取就可以了

1、学习思路和方法

这个大纲涵盖了目前市面上企业百分之99的技术,这个大纲很详细的写了你该学习什么内容,企业会用到什么内容。总共十个专题足够你学习

数字签名

计算机

2、想学习却无从下手,该如何学习?

这里我准备了对应上面的每个知识点的学习资料、可以自学神器,已经项目练手。

阻塞赋值

制造

AHB2

3、软件测试/自动化测试【全家桶装】学习中的工具、安装包、插件….

GDB调试器

单例模式

android课设

4、有了安装包和学习资料,没有项目实战怎么办,我这里都已经准备好了往下看

application

5、如何领取这些配套资料和学习思路图,以及项目实战源码。

这些资料都已经让我准备在一个php网页里面了,可以在里面领取扫码或者进Q群交流都可以暗号和备注是111哦

rockchip

最后送上一句话:
世界的模样取决于你凝视它的目光,自己的价值取决于你的追求和心态,一切美好的愿望,不在等待中拥有,而是在奋斗中争取。
如果我的博客对你有帮助、如果你喜欢我的文章内容,请 “点赞” “评论” “收藏” 一键三连哦

文件夹

LBPH

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注