python接口自动化10-token登录

前言

有些登录不是用cookie来验证的,是用token参数来判断是否登录。

token传参有两种一种是放在请求头里,本质上是跟cookie是一样的,只是换个单词而已(王老吉换成加多宝而已);另外一种是在url请求参数里,这种更直观。

一、登录返回token

1.如下图的这个登录,无cookies

2.但是登录成功后有返回token

二、请求头带token

1.登录成功后继续操作其它页面,发现post请求的请求头,都会带token参数

2.这种请求其实比cookie更简单,直接把登录后的token放到头部就行

三、token关联

1.用脚本实现登录,获取token参数,获取后传参到请求头就可以了

2.如果登录有验证码,前面的脚本登录步骤就省略了,自己手动登录后获取token

# coding:utf-8
import requests

header = {   # 登录抓包获取的头部
        "User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64; rv:44.0) Gecko/20100101 Firefox/44.0",
        "Accept": "*/*",
        "Accept-Language": "zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3",
        "Accept-Encoding": "gzip, deflate",
        "Content-Type": "application/x-www-form-urlencoded; charset=UTF-8",
        "X-Requested-With": "XMLHttpRequest",
        "Content-Length": "423",
        "Connection": "keep-alive"
        }

body = {"key1": "value1",
        "key2": "value2"}  # 这里账号密码就是抓包的数据

s = requests.session()
login_url = "http://xxx.login"   # 自己找带token网址
login_ret = s.post(login_url, headers=header, data=body)
# 这里token在返回的json里,可以直接提取
token = login_ret.json()["token"]

# 这是登录后发的一个post请求
post_url = "http://xxx"
# 添加token到请求头
header["token"] = token
# 如果这个post请求的头部其它参数变了,也可以直接更新
header["Content-Length"]="9"
body1 = {
         "key": "value"
         }
post_ret = s.post(post_url, headers=header, data=body1)
print post_ret.content

四、其它token

  1. 返回token的值,有的藏在cookie里,有的直接在返回的json里,也有的在返回的xml页面或者html里,形式各种各样,自己去找。
  2. 传token的方式也有几种,有的传在头部,有的在url里。

原文发布于微信公众号 - 从零开始学自动化测试(yoyoketang)

原文发表时间:2017-06-13

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏编程

R基础——数据的导入与导出(下)

前面两篇文章介绍了导入导出csv文件,txt文件,xlsx文件,接下来,将介绍R连接数据库,从数据库中导入数据。 在我工作中,使用的是sql server,所以...

2418
来自专栏cmazxiaoma的架构师之路

FastDFS蛋疼的集群和负载均衡(四)之排查访问失败问题

2352
来自专栏菩提树下的杨过

hadoop 2.6全分布安装

这一步完成后,最好重启一次系统,以便生效。然后可以用ping master(或slave01、slave02)试下,正常的话,应该能ping通

1601
来自专栏中国白客联盟

Phpshell Bypass Safedog

(php的function介绍可以看这里:http://www.php.net/manual/zh/functions.user-defined.php)

1393
来自专栏云计算教程系列

如何在CentOS 7上配置Apache内容缓存

缓存是一种通过允许更快访问的方式临时存储共同请求的内容来提高服务器性能的方法。通过减少一些资源密集型操作来加速处理和交付。

2430
来自专栏拂晓风起

Flash:彻底理解crossdomain.xml、跨swf调用。

1793
来自专栏运维

关于too many files open的解决办法

当我们用一些大的测试程序时,有时可能会报错,too many files open之类的错误,系统默认的同时打开文件数是1024,可以用这个命令查看: #uli...

1132
来自专栏农夫安全

【docker复现】分享几个小实例漏洞

漏洞1 Node.jsnode-serialize 反序列化 • Node.js存在反序列化远程代码执行漏洞,Node.js的node-serialize库中存...

48811
来自专栏搜云库

CentOs7.3 Hadoop 用户 ssh 免密登录

环境 三台虚拟机(IP): 192.168.252.121 192.168.252.122 192.168.252.123 1.修改主机名 修改三台主机名,以此...

2679
来自专栏散尽浮华

python升级后带来的几个小问题

1)python升级带来的yum异常:File "/usr/bin/yum", line 30 原因:这是因为yum采用Python作为命令解释器,这可以从/...

2625

扫码关注云+社区

领取腾讯云代金券