「软件测试」 抓包token的理解

博客介绍了国内常用的Oauth2.0授权协议,通过令牌授权避免隐私问题。还阐述抓包技能,可用于模拟登陆、服务器性能分析等。重点解释了Cookie、Session和Token,Cookie解决HTTP无状态问题,Session保存用户状态,Token类似Session ID,还说明了使用Session而非仅用Cookie的原因。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

国内大部分的授权协议都是Oauth2.0。这个协议简单的说通过给用户提供一个令牌(token),而不是通过用户密码来授权,这样的一个好处时,可以方便开发者开发软件,而使用者不需要将密码提供给开发者从而避免一些隐私的问题。 

通过token证明你可以有资格对这个测试环境中的页面进行抓包。

其实抓包是一个很简单的概念,只要对http协议有基本的了解就可以,网上有大量的可以抓包的库。其实只要时基本的实现了http协议的客户端都可以抓包。比如说Python的url,bcloud就是在此基础上实现的。我找到的java的库是okhttp,之前似乎还有httpclient,没用过不多说了。就我用过的url和okhttp来说感觉都差不多,毕竟http协议也不会有太大变化了。 
抓包其实不光是用在模拟登陆,很多很多地方都用得到,比如说做服务器的时候需要分析性能或者分析bug之类的,比如写爬虫之类的,是一个比较基本的技能。

抓包有很多中方法,除了用库分析以外,也有一些软件可以抓包,一般来说如果时浏览器抓包的,浏览器自身自带了很多分析工具网上教程也很多,搜搜就有。 
但是浏览器抓包也有一些不好的地方。有些数据的信息时看不了的。比如说gzip格式的数据,json没有分析之类的,需要自己分析。通常来说都是用web浏览器抓包作为分析资料,用库来模拟实现web浏览器过程。

Cookie、Session 和 token

这里尝试解释一下,如果以后发现问题再修改,其实没完全理清楚。

Cookie出现的主要目的是为了解决HTTP无状态的问题,是HTTP拓展协议。就好像之前所说的问题,用来保存用户的状态信息,比如说用户名,密码信息,购物车信息等等。Cookie通过浏览器来在客户端管理,不同浏览器之间互相独立。也有说法cookie分为内存和硬盘两种储存方式,硬盘上的cookie是浏览器共享的。

Cookie主要有名字、值、缓存时间、路径和域: 
名字和域就是键值对没什么好说的。 
Cookie有缓存时间限制,如果超过时限会消失,如果cookie没有设置缓存时间,则时间为本次会话,浏览器窗口关闭后就消失了。 
路径和域构成了Cookie的作用范围,传送给服务器的cooki必须是作用范围大于请求资源的域才传送。 
Cookie有大小限制,最大4k。另外浏览器通常也也限制每个站点cookie的数量和cookie的总量。

cookie产生的方式:正常来说是通过浏览器或者说http交互的,但是实际上也可以通过程序语言自己构建cookie。

Session:

可以说Cookie是客户端对用户信息的储存,而Session则是实现保存用户状态信息的机制。 
通常来说当用户发像服务器发起一个链接,则服务器会建立一个Session,并且保存这个Session的历史内容,并且向用户发送一个Session ID。通常来说本次Session在用户完成会话之后就关闭了,但是服务器并不会删除这些信息而是将其作为历史记录绑定到用户储存起来。当下一次用户再次连接服务器后,通常来说根据Cookie来再次验证用户,然后结合用户历史记录重新生成一个Session并且重新发送一个SessionID。 
但是还有一点需要说明。通常来说用户并不会通知服务器关闭Session。服务器通常来说会保持Sessioon一段时间,也需是几分钟,几个小时,几天都有可能。如果在此期间,依然用相同的SessionID去访问资源的话,那服务器同样是相应请求的。 
用户可以通过Session ID来实现有状态的会话,但是Session理论上说也可以时无状态的,但是一般不会这样用。

广义上说Session并不是必须再Http协议上,可以再很多层上实现:以OSI为标准:

  • 应用层: 
    • HTTP session:
    • telnet:
  • 会话层: 
    • 基于SIP(Session Initiation protocol)的网络电话
  • 传输层:

    • TCP session

    对于没有实现正式的Session层的传送协议比如说(UDP)或者说存在时间非常短协议(HTTP),需要再更高层上实现Sesssion。典型的就是HTTP Cookie来帮助实现的状态初始化。

Token

有了Cookie和Session的知识,那token就比较好解释了,Token我理解的话就是Session ID的一种。

Cookie和Sesssion其实没有什么可以比较的东西,只能说通过Cookie,再更上一层次的设计上实现了为无状态的HTTP协议的Session机制。

token并不是cookie的一种,可以是cookie验证后的产物,但是token可以以cookie的形式储存,传递的时候也可以用cookie的形式来传送,也可以写入url里传送,也就时所谓的URL重写技术。另外Cookie通常是浏览器维护的,但是token不一定,可以以其他终端的形式维护。

唯一需要说明的是,为何有了Cookie还需要实现Session而不是只用Cookie:

一方面Cookie本身有一定的限制:

  • 首先,cookie并不是万能的。cookie有很多限制,比如说不能跨域访问。跨域访问还有很多其他的问题需要考虑,这里不赘述了。此外token还是一种常用的防止CSRF的手段。
  • 其次,cookie是明文传送的。除非你使用https的协议,http协议是明文传递的。明文传递cookie很容易被盗取,但是token就不会有这么明显的意义。
  • 此外,即使不考虑安全的问题。每次都通过cookie来验证用户状态也是一个麻烦的问题。耗费了大量的资源且不必要。服务器验证之后给用户一个有一定时限的token,这样用户可以通过token免去验证的烦恼。
  • 最后,Cookie本身时可以删除的。

另一方面Session并不只是实现了记录的内容。更多的时候用于标示和跟踪用户的作用。

### 软件测试面试高频问题及规则总结 #### 高频规则概述 软件测试面试中涉及的核心规则主要包括以下几个方面: 1. **测试计划的重要性**:编写软件测试计划的主要目标是发现更多软件缺陷,确保测试范围覆盖功能需求,并采用切实可行的测试方法和工具[^1]。 2. **质量管理必要性**:未经测试的软件难以保证其质量,因此在团队中引入软件测试至关重要。测试不仅有助于发现问题,还能提供关于软件质量的关键反馈[^2]。 3. **测试报告的作用**:测试报告用于评估软件质量,记录已解决和未解决问题的状态,并指导后续改进措施。此外,还需关注线上环境验证以及用户反馈处理,以便不断优化测试用例库[^3]。 --- #### 常见高频问题及其解答 ##### 1. 如何制定有效的软件测试计划? 制定有效测试计划需遵循“5W”原则: - What(做什么):明确测试的目标和具体任务。 - Why(为什么做):解释测试的意义,强调对产品质量的影响。 - When(何时做):设定测试的时间表,包括启动时间和完成时间。 - Where(在哪里):指定测试资源的位置,如测试文档存储路径或测试环境配置说明。 - How(如何做):描述具体的测试方法和技术手段,例如手动测试还是自动化测试。 --- ##### 2. 测试过程中为什么要进行质量控制? 质量控制是为了确保交付的产品满足预期标准。通过测试可以识别潜在问题并促使开发人员快速修正这些问题。最终发布的软件应基于详尽的测试报告来证明其可靠性[^2]。 --- ##### 3. 缺陷分析的目的有哪些? 缺陷分析旨在深入挖掘问题根源,从而减少未来类似错误的发生概率。这一步骤对于提升产品稳定性非常重要,同时也有助于改善整体用户体验[^3]。 --- ##### 4. 抓包技术的应用场景是什么? 抓包技术广泛应用于网络通信调试领域。例如,在HTTP协议下可借助Wireshark查看TCP三次握手过程是否存在异常情况或者确认数据传输中断的具体原因(比如客户端关闭连接或是服务端重置连接)。这种诊断方式特别适合排查复杂的交互流程中的故障点[^4]。 --- ##### 5. 接口依赖关系下的测试策略? 当存在前置条件时(如同步登录状态后再访问其他API),建议先单独验证基础接口的功能正常与否再继续下一步操作。以Postman为例,可通过链式请求实现自动化的身份认证机制,即先执行登录动作保存Token值随后将其注入至待测资源头字段内完成授权校验[^5]。 ```javascript // Postman脚本示例:提取登录返回token供后续使用 pm.test("Login successful
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值