Cookie
很多网页在进入时是需要登录的
用户登录会有如下流程:
- 请求端带着用户名密码发起请求
- 服务端进行校验
- 服务端返回时会同时返回一个cookie(一些乱七八糟的代码),cookie 理解为一个服务端对于电脑的一个身份标识,下次带着cookie访问服务器,服务端就会返回与 cookie 相关的信息
比如我想看到这个账号的书架里有哪些书,我可以这样做:
1.登录->得到cookie
2.带着cookie请求书架对应url->得到该账户书架上的内容
注意:两个操作必须连续起来做,因此,使用session(会话)进行请求(session相当于一连串的请求,保持登录状态,且过程中的 cookie 不会丢失,可使用get、requests等)
登录请求
登录后,有个 login 里面的参数就是我们带着发起请求的信息
我们发起请求的 url 就有了,带着参数发起请求
import requests
# 发起会话
session = requests.session()
# 指定url和参数
url = 'https://passport.17k.com/ck/user/login'
data = {
'loginName': '账号',
'password': '密码'
}
# 带着会话发起请求(模拟用户登录)
resp = session.post(url, data=data)
# 返回的是用户信息
print(resp.text)
# 返回的是cookie字串
print(resp.cookies)
此时我们就得到 cookie 了
带着 cookie 请求书架信息
一番寻找后发现书架的信息在右边这个shelf包里,我们带着 cookie 对这个url发起请求就可以得到书架的数据了,返回的是json形式的数据
注:不能直接requests.get()这个url,因为刚才的那个 session 保存上下文会话,知道用户的cookie是什么,这样才能在再次发送请求的时候知道前面的 cookie 是什么
# 拿着session请求
resp=session.get('https://user.17k.com/ck/author2/shelf?page=1&appKey=2406394919')
# 得到响应数据
print(resp.json())
总结
在遇到登录后才能操作的情况,用session 保存上下文会话