5.Cookies

一、Cookies基础:

cookie={u'domain': u'.cnblogs.com',

                   u'name': u'.CNBlogsCookie',

                   u'value': u'xxxx',

                   u'expiry': 1554959887,

                   u'path': u'/',

                   u'httpOnly': True,

                   u'secure': False}

1.cookies一般由浏览器保存到客户端

2.cookies存储一般都是加密的

3.cookies组成:name,value,expire(过期时间)。 抓包时,一般只能抓到name和value

4.保存在客户端本地的cookies内容,时间,一般由服务器或开发决定, 所以HTTP协议中通过服务器返回的响应报文中,有一个Set-Cookies域来指示浏览器或者其他客户端,在本地保存cookies信息

5.cookie是放到头部的

6.发送请求的时候,请求头中的cookies, 如:cookies:aaa=1; bbb=2

 

二、Cookie获取:

1. 从返回的url中获取Cookie

1)使用正则表达式获取字符串,放在请求头中;请求时传给headers

2)通过正则表达式获取,再用分割的方法,分割字符串,添加到cookies中(字典格式);请求时传给cookies

2. 从返回的头部获取Cookie

从r.headers中,用key值获取cookie,然后参考第一点中的2个说明;可以传给headers/cookies

一般headers的cookie也可以用r.cookies获取cookie,返回的时Jar包格式。

Jar包格式的cookie, 可以通过dict() 转成字典格式; 也可以直接传给cookies

3. 从返回的body中获取Cookie, 通过r.cookies获取(Jar格式)或者通过正则表达式获取

 

其他:

1.重定向302, 禁止重定向 allow_redirects = False

2.print(r.history)   #请求的历史记录,返回对象 

   print(r.history[0].url)  #获取第一个对象的url

 

三、请求时传cookies

1.cookies可以放在头部,传字符串(多个的时候,如:name1=value1; name2=value2)

h = {"Cookie": "name1=value1; name2=value2"}
r = requests.post(url, headers=h)

2.cookies可以单独传cookies=xxx,传 字典格式/Jar包格式

cook = {
"name1": "value1",
"name2": "value2"
} r = requests.post(url, cookies=cook)

 

四、实例:禅道登录,获取cookie,访问登录后的页面

1.发送登录的请求,返回set-cookie;

2.获取cookies:print(r.cookies)  Jar格式的cookies; 可以转换成字典,dict(r.cookies)

注:Jar格式的cookies,在请求时,可以直接传给cookies

3.请求时带上cookies

posted on 2019-12-14 15:46  水晶的晶  阅读(20)  评论(0)    收藏  举报