cookie学习

cookie介绍

什么是cookie:
在网站中,http请求是无状态的。也就是说即使第一次和服务器连接后并且登入成功后,第二次请求服务器依然不能知道当前请求是哪个用户。cookie的出现就是为了解决这个问题,第一次登入服务器返回一些数据(cookie)给游览器,然后游览器保存在本地,当该用户发送第二次请求时,就会自动的把上次请求储存的cookie数据自动的携带给服务器,服务器通过游览器携带的数据就能判断当前用户是哪个了。cookie储存的数据是有限的,不同游览器有不同的储存大小,但一般不超过4kb
cookie的格式:

Set-Cookie:NAME-VALUE;Expires/Max-age-DATE;Path=PATH;Domain=DOMAIN;SECURE

参数含义:
NAME:cookie的名字
VALUE:cookie的值
Expires:cookie的过期时间
Path:cookie作用的路径
Domain:cookie作用的域名
SECURE:是否只有https协议下起作用

案例演示

访问人人网大鹏的主页,分为使用cookie和不使用cookie

不使用cookie

#encoding utf-8
# 大鹏董成鹏主页,http://www.renren.com/880151247/profile

from urllib import  request

#1.不使用cookie去请求大鹏主页

dapeng_url="http://www.renren.com/880151247/profile"

headers={'Use-Agent':"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.106 Safari/537.36"}
req=request.Request(url=dapeng_url,headers=headers)
resp=request.urlopen(req)
with open('renrer.html','w') as fp:
    #write函数必须写入一个str的数据类型
    #resp.read()读出来的是一个bytes数据类型
    fp.write(resp.read().decode('utf-8'))

结果只能访问到登入界面

使用cookie

from urllib import  request

#2.使用cookie去请求大鹏主页

dapeng_url="http://www.renren.com/880151247/profile"

headers={'Use-Agent':"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.106 Safari/537.36",
        'Cookie':"anonymid=kbp6ig6hqfl6sw; depovince=GW; _r01_=1; JSESSIONID=abciUMdt1Yt9McrS5uxlx; ick_login=70414fef-1357-429e-bae3-d7499aa5c5c1; taihe_bi_sdk_uid=65779e764ef54a03d7eacf40f2533e21; taihe_bi_sdk_session=c3cd118e612729f25444cc843999a709; ick=611a819a-648a-4d7e-afae-befc4f0f5038; t=a2956cc5fba1c6046d3124241990c8219; societyguester=a2956cc5fba1c6046d3124241990c8219; id=974641159; xnsid=28a363e2; XNESSESSIONID=8af4bd50f92c; jebecookies=00cec67a-aadc-4df8-8897-f43f72dc8a78|||||; ver=7.0; loginfrom=null; jebe_key=9669959b-f7a4-4026-8841-4677474a8264%7C8e94499d41e4fb5a899d8432aee352a5%7C1592751204542%7C1%7C1592751356726; jebe_key=9669959b-f7a4-4026-8841-4677474a8264%7C8e94499d41e4fb5a899d8432aee352a5%7C1592751204542%7C1%7C1592751356729; wp_fold=0" }
req=request.Request(url=dapeng_url,headers=headers)
resp=request.urlopen(req)
with open('renrer.html','w',encoding='utf-8') as fp:
    #write函数必须写入一个str的数据类型
    #resp.read()读出来的是一个bytes数据类型
    fp.write(resp.read().decode('utf-8'))

可以直接访问大鹏的主页

保存cookie信息到本地

保存cookie到本地,可以使用cookiejar的save方法,并且需要指定一个文件名

from urllib import request
from http.cookiejar import MozillaCookieJar

cookiejar=MozillaCookieJar('cookie.txt')
handler=request.HTTPCookieProcessor(cookiejar)
opener=request.build_opener(handler)
resp=opener.open('http://httpbin.org/cookies/set?course=math')

cookiejar.save(ignore_discard=True)

将本地cookie信息上传

from urllib import request
from http.cookiejar import MozillaCookieJar

cookiejar=MozillaCookieJar('cookie.txt')
cookiejar.load(ignore_discard=True)
handler=request.HTTPCookieProcessor(cookiejar)
opener=request.build_opener(handler)
resp=opener.open('http://httpbin.org/cookies')
#cookiejar.save(ignore_discard=True)

for cookie in cookiejar:
    print(cookie)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值