python3网络爬虫开发第三章基本库的使用(3)之cookie

Cooikes

Cookie是什么? Cookie 是一小段文本信息,伴随着用户请求和页面在 Web 服务器和浏览器之间传递。Cookie 包含每次用户访问站点时 Web 应用程序都可以读取的信息

就是网站为了辨别用户进行会话跟踪存储在用户本地的信息,主要是为了维持当前会话。如用户名登陆一次后后续不用登陆。

为什么需要Cookie因为HTTP协议是无状态的,对于一个浏览器发出的多次请求,WEB服务器无法区分是不是来源于同一个浏览器。所以,需要额外的数据用于维护会话。 Cookie 正是这样的一段随HTTP请求一起被传递的额外数据。

Cookie能做什么? Cookie只是一段文本,所以它只能保存字符串。而且浏览器对它有大小限制以及它会随着每次请求被发送到服务器,所以应该保证它不要太大。 Cookie的内容也是明文保存的,有些浏览器提供界面修改,所以,不适合保存重要的或者涉及隐私的内容。

Cookie 的限制。大多数浏览器支持最大为 4096 字节的 Cookie。由于这限制了 Cookie 的大小,最好用 Cookie 来存储少量数据,或者存储用户 ID 之类的标识符。用户 ID 随后便可用于标识用户,以及从数据库或其他数据源中读取用户信息。浏览器还限制站点可以在用户计算机上存储的 Cookie 的数量。大多数浏览器只允许每个站点存储 20 Cookie;如果试图存储更多 Cookie,则最旧的 Cookie 便会被丢弃。有些浏览器还会对它们将接受的来自所有站点的 Cookie 总数作出绝对限制,通常为 300 个。

通过前面的内容,我们了解到Cookie是用于维持服务端会话状态的,通常由服务端写入,在后续请求中,供服务端读取。下面本文将按这个过程看看Cookie是如何从服务端写入,最后如何传到服务端以及如何读取的

Session又称为会话状态,是Web系统中最常用的状态,用于维护和当前浏览器实例相关的一些信息。我们控制用户去权限中经常用到Session来存储用户状态,这篇文章会讲下Session的存储方式、在web.config中如何配置SessionSession的生命周期等内容。

session其实分为客户端Session和服务器端Session

  当用户首次与Web服务器建立连接的时候,服务器会给用户分发一个 SessionID作为标识。SessionID是一个由24个字符组成的随机字符串。用户每次提交页面,浏览器都会把这个SessionID包含在 HTTP头中提交给Web服务器,这样Web服务器就能区分当前请求页面的是哪一个客户端。这个SessionID就是保存在客户端的,属于客户端Session

  其实客户端Session默认是以cookie的形式来存储的,所以当用户禁用了cookie的话,服务器端就得不到SessionID

Cookie的处理需要Handler

获取网站的cookie

import urllib.request,http.cookiejar

cookie=http.cookiejar.CookieJar()

handler=urllib.request.HTTPCookieProcessor(cookie)

opener=urllib.request.build_opener(handler)

response=opener.open('http://www.baidu.com')

for item in cookie:

print(item.name+'='+item.value)

 

BAIDUID=E0E65152D031551D9456C274577F6E4D:FG=1

BIDUPSID=E0E65152D031551D9456C274577F6E4D

H_PS_PSSID=1428_26459_21116_26350_22073

PSTM=1530173355

BDSVRTM=0

BD_HOME=0

 

首先创建了CookieJar()对象,然后用HTTPCookieProcessor构建一个Handler,handler对象传入build_opener()构建opener,最后打开目标网址,获取cookie.

这里输出了每个cookie的名称和值。

 

猜你喜欢

转载自blog.csdn.net/weixin_41358871/article/details/80844981