web自动化-绕过登录
两个方法:
1、常用的方法: 第一种方法是登录后查看网站的 cookie,请求 url 的时候把 cookie 带上(缺点是:cookie有时间限制。优点:简单,方便)
2、添加cookies的方式:思路是:先对比登录前和登录后的cookies区别,查看登录后cookies里那些值是多出来的,然后通过添加cookies的方式,将值添加进去;这样就可以达到跳过登录的效果。(缺点:逻辑性比较复杂,代码量多。优点:可以保证每次cookies都是有效的)
具体操作步骤:
1、通过抓包工具,分享登录前与登录后的cookies信息


2、通过不同的方式,需要添加到cookies里的值(重点:怎么去动态获取这些值)
class DictJson:
@staticmethod
def case_ins_dict_json(username, password):
# CaseInsensitiveDict 也是一种字典抽象类。转字典
# 获取时间
h_data = UserLogin().pc_user_login(username=username, password=password)[0]
headers_data = dict(h_data)
set_cookie = headers_data['Set-Cookie']
c = set_cookie.split(';')[2]
expires = c.split('=')[1]
ans_time = int(time.mktime(time.strptime(expires, '%a, %d-%b-%Y %H:%M:%S %Z'))) # 获取user_ticket
c_data = UserLogin().pc_user_login(username=username, password=password)[1]
a = dict(c_data)['cookies']
user_ticket = a.split('\"')[11]
return ans_time, user_ticket
CaseInsensitiveDict:
可知,CaseInsensitiveDict是从MutableMapping派生的,即其父类是MutableMapping,中文名叫“可变映射”,那么这个MutableMapping到底是何方神圣?
从Python3的官方文档中可以找到它,具体在 8.4. collections.abc — Abstract Base Classes for Containers中可以找到它的定义
| ABC | Inherits from | Abstract Methods | Mixin Methods | | -------------- | ------------- | -------------------------------------------------------- | ------------------------------------------------------------ | | MutableMapping | Mapping | getitem, setitem, delitem, iter, len | Inherited Mapping methods and pop, popitem, clear, update, and setdefault |
我们可以简单的认为,这是一个字典抽象类,你只要自己实现了其中的getitem, setitem, delitem, iter, len方法即可实现一个自己的字典,而CaseInsensitiveDict正是基于此构造了自己的数据结构。
split(): Python split() 通过指定分隔符对字符串进行切片,如果参数 num 有指定值,则分隔 num+1 个子字符串 ---------https://www.runoob.com/python/att-string-split.html
time.strptime() : Python time strptime() 函数根据指定的格式把一个时间字符串解析为时间元组。------------------https://www.runoob.com/python/att-time-strptime.html
3、将获取到的值,添加到cookies里
class GetLogin:
def __init__(self, driver):
self.dr = driver
# 读取url def cookie_login(self, url, username, password):
"""带cookie登录绕过验证码"""
# 获取user_ticket
user_ticket = DictJson().case_ins_dict_json(username=username, password=password)[1]
# 获取时间戳
expiry_time = DictJson().case_ins_dict_json(username=username, password=password)[0]
time.sleep(2)
# 打开浏览器
GetBrowser(driver=self.dr).open_browser(url=url) # 添加cookie
c_ticket = {
'domain': '.veryeast.cn',
'expiry': expiry_time,
'httpOnly': False,
'path': '/',
'secure': False,
'name': 'ticket',
'value': user_ticket
}
c_name = {
'domain': '.veryeast.cn',
'expiry': expiry_time,
'httpOnly': False,
'path': '/',
'secure': False,
'name': 'username',
'value': username
}
c_user_type = {
'domain': '.veryeast.cn',
'expiry': expiry_time,
'httpOnly': False,
'path': '/',
'secure': False,
'name': 'user_type',
'value': '2'
} GetBrowser(driver=self.dr).add_cookies(cookie=c_ticket)
GetBrowser(driver=self.dr).add_cookies(cookie=c_name)
GetBrowser(driver=self.dr).add_cookies(cookie=c_user_type) # 等待3S
time.sleep(3)
# 刷新页面
GetBrowser(driver=self.dr).refresh_browser()
4、刷新页面,即可实现登录
web自动化-绕过登录的更多相关文章
- Web自动化---解决登录页面随机验证码问题
一.抛出问题 在日常的测试工作中,遇到了这样一个登录页面,如下图: 像我们之前做过UI自动化的同学就知道,自动输入账号和密码,这个简单,但是怎么样来识别验证码呢?验证码的形式有多种,有纯数字的,纯字母 ...
- 【Python web自动化】之读取配置文件参数,利用cookie返回值进行跳过验证码进行登录操作
当进行Python的Web自动化时,会涉及到验证码问题,该如何跳过执行呢,下面请看代码: 1.首先新建配置文件*.ini格式 config.ini [db] #基础地址: baseurl = http ...
- python+pytest接口自动化(9)-cookie绕过登录(保持登录状态)
在编写接口自动化测试用例或其他脚本的过程中,经常会遇到需要绕过用户名/密码或验证码登录,去请求接口的情况,一是因为有时验证码会比较复杂,比如有些图形验证码,难以通过接口的方式去处理:再者,每次请求接口 ...
- python之web自动化验证码识别解决方案
验证码识别解决方案 对于web应用程序来讲,处于安全性考虑,在登录的时候,都会设置验证码,验证码的类型种类繁多,有图片中辨别数字字母的,有点击图片中指定的文字的,也有算术计算结果的,再复杂一点就是滑动 ...
- Selenium Web 自动化 - 项目实战(三)
Selenium Web 自动化 - 项目实战(三) 2016-08-10 目录 1 关键字驱动概述2 框架更改总览3 框架更改详解 3.1 解析新增页面目录 3.2 解析新增测试用例目录 3. ...
- Selenium WebDriver对cookie进行处理绕过登录验证码
现在几乎所有登录页面都会带一个验证码,做起自动化这块比较麻烦, 所以要绕过网站的验证码. 首先需要手动登录一次你的测试网站,去chrome的F12里获取这个网站的cookie信息,找到对应的保存登录信 ...
- Web自动化框架之五一套完整demo的点点滴滴(excel功能案例参数化+业务功能分层设计+mysql数据存储封装+截图+日志+测试报告+对接缺陷管理系统+自动编译部署环境+自动验证false、error案例)
标题很大,想说的很多,不知道从那开始~~直接步入正题吧 个人也是由于公司的人员的现状和项目的特殊情况,今年年中后开始折腾web自动化这块:整这个原因很简单,就是想能让自己偷点懒.也让减轻一点同事的苦力 ...
- Web自动化框架搭建——前言
1.web测试功能特性 a.功能逻辑测试(功能测试),这一块所有系统都是一致的,比如数据的添加.删除.修改:功能测试案例设计感兴趣和有时间的话可以另外专题探讨: b.浏览器兼容性测试,更重要的是体验这 ...
- java web SSO单点登录
第一篇: Web应用系统的演化总是从简单到复杂,从单功能到多功能模块再到多子系统方向发展. .当前的大中型Web互联网应用基本都是多系统组成的应用群,由多个web系统协同为用户提供服务. 多系统应用群 ...
随机推荐
- kubernetes 基础知识
1. kubernetes 包含几个组件 Kubernetes是什么:针对容器编排的一种分布式架构,是自动化容器操作的开源平台. 服务发现.内建负载均衡.强大的故障发现和自我修复机制.服务滚动升级和在 ...
- MySQL全面瓦解6:查询的基本操作
概述 提到查询,就回到我们第四篇的SQL语言分类了,DQL(Data QueryLanguage),也就是数据查询语言,实际就是从数据库中获取数据的一种命令方式.我们给数据库发送一个查询语句的命令,数 ...
- Netty源码解析 -- ChannelPipeline机制与读写过程
本文继续阅读Netty源码,解析ChannelPipeline事件传播原理,以及Netty读写过程. 源码分析基于Netty 4.1 ChannelPipeline Netty中的ChannelPip ...
- 使用Haproxy代理rabbitmq集群,用keepalive保证haproxy高可用
原文地址:https://www.jianshu.com/p/440b8e1d5339 使用Haproxy代理rabbitmq集群 上一篇文章教了rabbitmq集群搭建.但是这样搭建出来的集群是3个 ...
- 云计算之路-出海记-小目标:Hello World from .NET 5.0 on AWS
品尝过船上的免费晚餐,眺望着 aws 上搭建博客园海外站的宏伟目标,琢磨着眼前可以实现的小目标,不由自主地在屏幕上敲出了 -- "Hello World!",就从这个最简单朴实的小 ...
- linux磁盘已满,查看那个目录文件最占磁盘空间并解决没有内存不耗费资源删除
df -Th查看磁盘空间占用情况 [root@IntelRC-Nginx-N023 ~]# df -Th Filesystem Type Size Used Avail Use% Mounted on ...
- TCP性能分析与调优策略
网络传输 传播延迟: 消息从发送端到接收端需要的时间,是信号传播距离和速度的函数 传输延迟: 把消息中的所有比特转移到链路中需要的时间,是消息长度和链路速率的函数 处理延迟: 处理分组首部.检查位错误 ...
- RBAC设计前期设计
//s用户表 create table userinfo( id int(18) primaryk key auto_increment, username varchar(50) not null ...
- MYSQL字段
这里我的测试环境是wampserver 选择数据库 选择表 或者创建数据库和表 SHOW DATABASES; 查看数据库 CREATE DATABASE 数据库名; 创建数据库 在 MySQL 中, ...
- 超值干货 | 建议收藏:精美详尽的 HTTPS 原理图注意查收!
作为一个有追求的程序员,了解行业发展趋势和扩充自己的计算机知识储备都是很有必要的,特别是一些计算机基础方面的内容,就比如本篇文章要讲的计算机网络方面的知识.本文将为大家详细梳理一下 HTTPS 的实现 ...