才开始学习接口自动化。卡在第一步了,对于一个登录的post接口,有账号、密码、验证码三项。我该如何用cookies进行登录绕过验证,后台去掉验证不现实,没有权限。
抓包抓到的信息,是在登录页面输入账号、密码、验证码发出请求后,会重定向到另一个get接口,登录成功,然后得到返回的cookie值。
我在网上寻找解决方法,得到的全是从我手中文档复制粘贴的内容,如下。
url = "https://passport.cnblogs.com/user/signin" headers = {
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64; rv:44.0) Gecko/20100101 Firefox/44.0"
} # get 方法其它加个 ser-Agent 就可以了
s = requests.session()
r = s.get(url, headers=headers,verify=False)
print r.cookies
c = requests.cookies.RequestsCookieJar()
c.set('.CNBlogsCookie', '这里是抓到的') # 填上面抓包内容c.set('.Cnblogs.AspNetCore.Cookies','这里是抓到的') # 填上面抓包内容
c.set('AlwaysCreateItemsAsActive',"True") c.set('AdminCookieAlwaysExpandAdvanced',"True") s.cookies.update(c)
print s.cookies
我在输入这一段时,没有找到requests.cookies.RequestsCookieJar()这种方法,因为文档是17年的,也找不到响应的资料,是否已经更换了语法。
如果确实更换了语法,我能用这种方法绕过验证码吗;还是要再加重定向获取和传参,重定向后将除验证码外的data传到get里,再加入cookie去绕过登录
实在弄不清楚,望解答
打开浏览器的开发者工具,正常操作一遍,然后看看cookie是什么内容,在你的请求中加入这些cookie。你用的是python代码吧。类似这样:
import requests
cookies = {'enwiki_session': '17ab96bd8ffbe8ca58a78657a918558'}
r = requests.post('http://wikipedia.org', cookies=cookies)
试了一下确实可行,现在接口自动化的学习卡住了,很苦恼
@巴巴一个蓝: 测试接口一般不考虑cookie这些的吧,你是做的页面的自动化吧
@wang_yb: 做的接口的,页面自动的公司不太好开展
固定账号下发固定验证码