勤杂工

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5
统计
 

1验证码为图片/文字校验/短信验证码

a:比较省心的方式,要求开发在测试服去掉验证码

这种方法的优势:测试人员比较省心,开发工作量少

缺点:容易将问题代码发到线上,维护起来难,缺少验证码校验,功能不能完整测试

b:弄白名单账号,遇到白名单用户不需要验证码验证(或者万能验证码尤其是短信验证码),直接让登入

这种方法优势:测试人员省心

缺点:开发有一定的工作量,代码发上线有一定被爬的风险

c:通过在浏览器中新增cookie的方式,直接绕过验证码

缺点:测试人员需要有一定的代码量编写

优点:开发不需要动任何代码

下面说下自己亲身在ui自动化中如何通过增加cookie的方式绕过登入

1找开发询问:登入与否,在cookie是通过哪几个字段判断的

通过询问,了解到是jute_session_id 决定了用户是否登入

2验证开发说法是否正确

打开chrom浏览器,输入网址:

https://www.dxy.net/bbs/newweb-test/pc/home
登入用户名,密码
将cookie中jute_session_id 值复制下来,后续用到
退出用户的登入态
打开浏览器的开发者工具,找到appcation下的cookie

 

 

 将上面的cookie直接全部清空

然后在cookie中增加刚才登入用户名,密码后的 jute_session_id 的值

然后刷新浏览器,看是否是登入状态

刷新后发现是登入状态,说明确实是cookie中的jute_session_id 决定了用户的登入状态

3编写代码实现

实现方案,首先打开网址,将初始cookie值全部获取,

通过循环将未登入下的这个值删除

新增我们登入过后的这个cookie值

再次刷新页面

发现已经可以实现绕过图片验证码

以下是代码

driver = webdriver.Chrome()
#driver = webdriver.Firefox()
driver.get("https://www.dxy.net/bbs/newweb-test/pc/home")
time.sleep(1)
abd=driver.get_cookies()
cookie1={
"domain": "www.dxy.net",
"expiry": 1655949616,
"httpOnly": True,
"name": u"JUTE_SESSION_ID",
"path": "/",
"secure": True,
"value": jute
}
for cookie in abd:
if cookie["name"]=="JUTE_SESSION_ID":
driver.delete_cookie("JUTE_SESSION_ID")
driver.add_cookie(cookie1)
else:
driver.add_cookie(cookie1)
#driver.add_cookie(cookie1)
time.sleep(3)
driver.refresh()
期间遇到的问题
1直接通过add_cookie 的方式,发现登入不成功,主要原因是cookie在塞进去后,刷新页面又重新会生成一个未登入的cookie值覆盖
2add_cookie 的方法,是通过name 和value的方式将cookie中键值对放进去的
比如一开始我的cookie1={"jute_session_id":"jute"} 这种方式是不对的,正确的格式是{"name":"jute_session_id","value":"jute"} 这样才能是正确的写法,被坑大了

直接add_cookie()的方式其实也是适用的,但是适用那些开始访问不会生成对应cookie值的网址,这样是可以的(未做验证,纯属猜测)

以上就是在做ui自动化时自己如何绕开图片验证登入的真实案例












 

posted on   勤杂工  阅读(559)  评论(0编辑  收藏  举报
编辑推荐:
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
 
点击右上角即可分享
微信分享提示