中易网

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

答案:1  悬赏:10  
解决时间 2021-01-27 01:25
python测试接口时需要登录怎么解决
最佳答案
有些网页需要你登录之后才可以访问,你需要提供账户和密码。
只要在发送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","用户名","密码") 
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
头上贴一个封字的动漫人物
毛肚和百叶的区别。
梦幻西游这70级简易衣服卖多少钱合适
如何嗅出佛教骗子的味道
大华投资靠谱吗
1分钟仰卧起坐技巧(详细)28个及格 36个良好
羊肉1斤煮多少
左图为同一地点不同天气状况的昼夜温度变化图
YY安全中心怎样注册?
什么情况使用子程序,什么是子程序的套深?
在C语言程序中,表达式5%2的结果是什么
沙河市育才学校地址在什么地方,想过去办事
如何报名香港托福????
求office2013安装包,百度云。谢谢
泊头小饰品批发/两元店市场在哪?
推荐资讯
阴阳师里,食梦兽在御魂几层啊?
电化学里,负电位上的响应峰是氧化峰还是还原
大话西游3转女人角色叫什么名
什么是线电压单相线路负荷
黄金时代健身俱乐部地址在什么地方,我要处理
如何一次性新建多个文件夹?
小花的窝地址在什么地方,想过去办事
如何确定循环水泵的规格型号?
魅族mX3手机怎样
宁波钢铁VS宝新不锈钢,哪个更有发展前途呢?
房贷100万5年利息多少
早上下雨鸡会打鸣吗?
手机登qq时,显示手机磁盘不足,清理后重新登
刺客的套装怎么选啊?