python接口自动化——接口登录获取session、cookie

【参考】

方法一参考链接如下,直接获取返回的cookie失败,拿到的cookies是空。(因为登录的url返回用f12看着是空的,用Charles才能看到,进行了重定向,返回了重定向的url)

https://baijiahao.baidu.com/s?id=1781328761925882355&wfr=spider&for=pc

 

方法二参考链接如下,去拿session,再使用session去post、get等操作,成功

https://blog.51cto.com/u_16213378/11283949

 

【实际操作】

使用方法二,访问登录url之后,就获取到了session。

 1 import requests
 2 
 3 login_url="http://dlg.chinawyny.com/uaas/login"
 4 
 5 login_data={
 6 'username': '18xxxxxxxxx4',
 7 'password': 'e1xxxxxxxxxxxxxxxx057f20f883e'
 8 }
 9 
10 s=requests.session()
11 
12 res=s.post(url=login_url,data=login_data)
13 
14 res=s.get(url="http://dlg.chinawyny.com/api/front/user/list?pageNo=1&pageSize=10")
15 print(res.json())
View Code

 

还有一种情况,登录的url未返回session,需要继续访问重定向的url,才能获取到session。

 1 def user_login(self, username, password):
 2         """
 3         用户登录并返回cookie
 4         :param username:
 5         :param password:
 6         :return:
 7         """
 8         s = requests.session()
 9         uaas_login = "/uaas/login"
10         headers = {"Accept": "application/json,text/plain,*/*"}
11         s2 = s.post(self.base_url + uaas_login, headers=headers,
12                     data={"username": username, "password": hashlib.md5(password.encode()).hexdigest()})
13         s3 = s.get(s2.json()["data"]["recommendedRedirectURI"])
14         api_login = "/api/login"
15         s4 = s.get(self.base_url + api_login)
16         return s
View Code

登录后,直接用s.post s.query就可以请求别的接口了

posted @ 2024-08-29 17:57  hushuer  阅读(218)  评论(0编辑  收藏  举报