为了账号安全,请及时绑定邮箱和手机立即绑定

请问一下关于python测试接口时需要登录怎么解决?

/ 猿问

请问一下关于python测试接口时需要登录怎么解决?

四季花海 2019-07-24 19:15:17

python测试接口时需要登录怎么解决


查看完整描述

3 回答

?
慕容3067478

有些网页需要你登录之后才可以访问,你需要提供账户和密码。

只要在发送http请求时,带上含有正常登陆的cookie就可以了。

1.首先我们要先了解cookie的工作原理。

Cookie是由服务器端生成,发送给User-Agent(一般是浏览器),浏览器会将Cookie的key/value保存到某个目录下的文本文件内,下次请求同一网站时就发送该Cookie给服务器(前提是浏览器设置为启用cookie)。Cookie名称和值可以由服务器端开发自己定义,对于JSP而言也可以直接写入jsessionid,这样服务器可以知道该用户是否合法用户以及是否需要重新登录等。

2.之后我们要获取到用户正常登录的cookie.

python提供了cookieJar的库,只要把cookieJar的实例作为参数传到urllib2的一个opener里面。

然后访问一次登录的页面,cookie就已经保存下来了。之后通过这个实例访问所有的页面都带有正常登陆的cookie了。

以人人网为例子。

Python代码

  • #encoding=utf-8  

  • import urllib2  

  • import urllib  

  • import cookielib  

  • def renrenBrower(url,user,password):  

  • #登陆页面,可以通过抓包工具分析获得,如fiddler,wireshark  

  • login_page = "hLogin.do"  

  • try:  

  • #获得一个cookieJar实例  

  • cj = cookielib.CookieJar()  

  • #cookieJar作为参数,获得一个opener的实例  

  • opener=urllib2.build_opener(urllib2.HTTPCookieProcessor(cj))  

  • #伪装成一个正常的浏览器,避免有些web服务器拒绝访问。  

  • opener.addheaders = [('User-agent','Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)')]  

  • #生成Post数据,含有登陆用户名密码。  

  • data = urllib.urlencode({"email":user,"password":password})  

  • #以post的方法访问登陆页面,访问之后cookieJar会自定保存cookie  

  • opener.open(login_page,data)  

  • #以带cookie的方式访问页面  

  • op=opener.open(url)  

  • #读取页面源码  

  • data= op.read()  

  • return data  

  • except Exception,e:  

  • print str(e)  

  • #访问某用户的个人主页,其实这已经实现了人人网的签到功能。  

  • print renrenBrower("httm/home","用户名","密码") 


查看完整回答
反对 回复 2019-07-29
?
MMTTMM

1,关于requests
requests是python的一个http客户端库,设计的非常简单,专门为简化http测试写的。
2,开发环境
mac下面搭建开发环境非常方便。
sudo easy_install pip
sudo pip install requests

测试下:python命令行
import requests
>>> r = requests.get('', auth=('user', 'pass'))
>>> r.status_code
200
>>> r.headers['content-type']
'application/json; charset=utf8'
>>> r.encoding
'utf-8'
>>> r.text
u'{type:User...'
>>> r.json()
{u'private_gists': 419, u'total_private_repos': 77, ...}

开发工具,之前使用sublime,发现运行报错,不识别table字符。
IndentationError: unindent does not match any outer indentation level

非常抓狂的错误,根本找不到代码哪里有问题了。甚至开始怀疑人生了。
python的这个空格区分代码真的非常让人抓狂。开始怀念有大括号,分号的语言了。
彻底解决办法,直接换个IDE工具。使用牛刀,IDA开发。

直接下载社区版本即可,因为就是写个脚本啥的,没有用到太复杂的框架。

果然效果非常好,直接格式下代码,和java的一样好使,可以运行可以debug。右键直接运行成功。
3,测试接口
没有啥太复杂的,直接使用requests框架即可。
#!/usr/bin/python
# -*- coding: utf-8 -*-

################

import requests

#测试百度
def baidu_func(url):
headers = {}
params = {}
req = requests.post(url, headers=headers, params=params)
print(req.text)
if __name__ == '__main__':
url =
baidu_func(url)

4,总结
测试非常重要,尤其是对外的接口出现的漏洞,需要花时间去仔细测试,同时要仔细分析代码。
安全是挺重要的事情,要花时间去琢磨。
python学习还是非常容易学习的,一个小时就能把语法学会。
同时渗透测试,安全扫描的好多工具也是python写的。PyCharm CE版本的开发工具足够强大,能够帮你快速学习python。
如果想快速做点界面的开发,wxPython是非常不错的选择。



查看完整回答
反对 回复 2019-07-29
?
慕斯卡3215842

根据Testcase的具体业务逻辑用事先准备好的测试数据去调用封装好的API接口,验证实际返回结果是否与预期返回结果一致.
  测试数据可以以各种形式存放,如Excel数据表:
TestCaseName uname method Expected Result
TestCase1 aaaa GET ....
TestCase2 aaaa POST ....
TestCase3 bbbb GET ....
... ... ... ....

查看完整回答
反对 回复 2019-07-29

添加回答

回复

举报

0/150
提交
取消
意见反馈 邀请有奖 帮助中心 APP下载
官方微信