博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
cookies的常见方式
阅读量:6935 次
发布时间:2019-06-27

本文共 2334 字,大约阅读时间需要 7 分钟。

cookie有如下特点

  • 保存在客户端,一般由浏览器负责存储在本地。
  • 通常是加密存储的,不过由于存储在本地,很难保证数据不被非法访问,并不怎么安全,所以cookies中不宜保存敏感信息,如密码等。
  •  哪些信息需要保存作为cookie保存在客户端本地,保存多长时间,一般是由服务器决定的,所以HTTP协议中通过服务器返回的响应报文头中,有一个Set-Cookie域来指示浏览器或者其他客户端,在本地保存cookie信息。
  •  cookie保存在客户端本地的目的是为了下次访问网站的时候可以直接取出来,上送服务器,所以HTTP协议中通过客户端发送给服务器的请求报文头中,有一个cookies域专门用于存放这个信息,以便客户端将cookie信息发送给服务器。

cookies获取的4中方法

  • 重定向在url上
  • 返回body内容里
  • 返回的头部headers(Set-Cookies)
  • 一般在headers的cookie也可以通过r.cookies获取(Jar格式)

Cookies传到下个请求2中方法

  • 直接用cookies =(参数可以是字典,也可以是Jar)
  • Cookies也可以放headers头部传入

 cookies在返回url上

参考案例1:

import requestsimport urllib.parseimport urllib3urllib3.disable_warnings()  #,取消警告url = "https://zzk-s.cnblogs.com/"r_url = requests.get(url,verify=False)#通过使用fiddler抓包工具,发现过程是,出现重定向(302),因为没有cookies,导致403,没有权限访问#过程中发现,403的请求中cookies出现AspxAutoDetectCookieSupport=1,# 且请求url发生变化,https://zzk-s.cnblogs.com/?AspxAutoDetectCookieSupport=1#发现cookies的值出现在重新定向请求中?号后面print(r_url.status_code)print(r_url.url) # 打印重定向后的请求url#使用split("?")分割url#使用urllib.parse.psl将XXX=YYY这样格式的类型转换成列表(元组)形式#使用dict()将上面的元组转换成cookie可使用的字典形式cook =dict(urllib.parse.parse_qsl(r_url.url.split("?")[1]))print("打印出可用的cookie:",cook)r2 = requests.get(url,cookies =cook,verify = False)print(r2.url)print(r2.status_code)print(r2.content)

 

1 """ 2 cookies在返回url上 3 参考案例博客园找找看:http://zzk-s.cnblogs.com 4 """ 5 import  requests 6 from urllib.parse import parse_qsl 7 #1.访问首页 8 url = "http://zzk-s.cnblogs.com" 9 r = requests.get(url,verify=False)10 r_302 = (r.url)11 #重定向后cookies在url头部http://zzk-s.cnblogs.com/?AspxAutoDetectCookieSupport=112 print(r_302)13 #取问号后面的字符作为参数存储14 canshu = r_302.split("?")[-1]15 #获取cookies,转字典16 cook = dict(parse_qsl(canshu))17 print(cook) # 结果 {'AspxAutoDetectCookieSupport': '1'}18 data ={19 "Keywords":"冷枫孤雪"20 }21 #cookies的传入22 r1 = requests.get(url,cookies =cook,params=data)23 print(r1.text)

 

1 import requests 2 import re 3 from urllib.parse import parse_qsl 4 # 1.先访问首页 5 url = "http://zzk-s.cnblogs.com/s/blogpost" 6 r = requests.get(url, allow_redirects=False, verify=False) 7 #  第2种情况,cookie在重定向页面内容里 8 print(r.status_code) 9 print(r.text)10 # 正则提取:知道前后取中间,遇到字符加转义11 c = re.findall("blogpost\?(.+?)\">",r.text)12 cook =dict(parse_qsl(c[0]))13 print(cook)14 # cookies 传入15 data ={16 "Keywords":"冷枫孤雪"17 }18 r1 = requests.get(url,cookies =cook,params=data)19 print(r1.text)

 

转载于:https://www.cnblogs.com/fanjc/p/9830165.html

你可能感兴趣的文章
技巧:Vimdiff 使用(转)
查看>>
VirtualBox安装CentOS后如何安装增强功能
查看>>
3D数学知识简介
查看>>
AMD OpenCL大学课程(3)
查看>>
一种线程安全的单例模式实现
查看>>
memcached-1.4.4在ubuntu下编译的注意事项
查看>>
C# 常用命名空间
查看>>
NameValueCollection详解
查看>>
ERP系统中邮件提醒定时器框架的设计与应用
查看>>
android设置全屏
查看>>
Windows Server 2008 R2安装、使用WPSDK7.1、7.1.1遇到的问题
查看>>
新浪微博Python3客户端接口OAuth2
查看>>
SQL 列出某列有重复的记录
查看>>
POJ 3169 Layout(差分约束+SPFA)
查看>>
MVC3 URL 数据绑定
查看>>
ScrollViewer中元素焦点丢失问题
查看>>
linux上安装配置vsftpd
查看>>
精至手机药典Windows Phone 7版
查看>>
非使用FindControl方法找到深层嵌套的控件 Ver2
查看>>
Android 开发学习笔记(二)—— Activity和Intent
查看>>