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())
还有一种情况,登录的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
登录后,直接用s.post s.query就可以请求别的接口了