【Python3 爬虫】U04_cookie的使用

1.什么是cookie?

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

Set-cookie: NAME=VALUE Expires/Max-age=DATE Path=PATH Domain=DOMAIN_NAME SECURE

参数解释:

  • NAME:cookie的名字
  • VALUE:cookie的值
  • Expires: cookie的过期时间。
  • Path: cookie作用的路径。
  • Domain: cookie作用的域名。
  • SECURE:是否只在htps协议下起作用

2.使用cookielib库和HTTPCookieProcessor模拟登陆

Cookie是指网站服务器为了辨别身份和session跟踪,而储存在用户浏览器上的文本文件,Cookie可以保持登陆信息到用户下次与服务器的会话。
实战演练

  • 不使用cookie,直接访问
from urllib import request

# 不使用cookie去登录主页
tmp_url = 'http://www.renren.com/238656222/profile'

headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36'
}
req = request.Request(url=tmp_url,headers=headers)
resp = request.urlopen(req)
# print(resp.read().decode())
# 将返回的网站源码写入到文件中
with open('renren.html','w',encoding='utf-8') as f:
    f.write(resp.read().decode('utf-8'))

运行后,在浏览器打开下载的renren.html,如下:

from urllib import request

tmp_url = 'http://www.renren.com/238656222/profile'

headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36',
    'Cookie':'anonymid=k63l1pld-bmvm58; _r01_=1; taihe_bi_sdk_uid=e010145001347915db9751467f2cd0ea; _ga=GA1.2.1477590665.1580561077; depovince=GW; ick_login=b0a0dff4-179b-4cda-ae35-fbf3e97f9912; taihe_bi_sdk_session=602eb6642e983c664e81de65e367d143; _de=02B2EB92B8F71ACD92522705638FE3D8; ick=c1f8dd1e-4910-4c57-ac6c-b83ac1076c06; __utma=151146938.1477590665.1580561077.1580561077.1585144279.2; __utmc=151146938; __utmz=151146938.1585144279.2.2.utmcsr=renren.com|utmccn=(referral)|utmcmd=referral|utmcct=/; __utmb=151146938.4.10.1585144279; jebecookies=80d8ee16-c0e2-4a18-8fbf-7a53f40793e2|||||; p=7619396d7fce293085bc7b12b502a2da2; first_login_flag=1; ln_uact=18298377941; ln_hurl=http://hdn.xnimg.cn/photos/hdn221/20130527/1710/h_main_kCBe_44640000035d111a.jpg; t=bd1094d556c2c9d7e0c270a25abc53862; societyguester=bd1094d556c2c9d7e0c270a25abc53862; id=422522252; xnsid=ee08367c; ver=7.0; loginfrom=null; wp_fold=0; jebe_key=03183a84-908b-4464-a274-effbad2465bd%7C328749f653f1c822a5c17f3cffb81c7e%7C1585144561819%7C1%7C1585144563940'
}
req = request.Request(url=tmp_url,headers=headers)
resp = request.urlopen(req)
# print(resp.read().decode())
# 将返回的网站源码写入到文件中
with open('renren2.html','w',encoding='utf-8') as f:
    f.write(resp.read().decode('utf-8'))

此时已经成功的登录到主页了

猜你喜欢

转载自www.cnblogs.com/OliverQin/p/12571022.html
今日推荐