Cookie,有时也用其复数形式 Cookies。类型为“小型文本文件”,是某些网站为了辨别用户身份,进行Session跟踪而储存在用户本地终端上的数据(通常经过加密),由用户客户端计算机暂时或永久保存的信息。
一个 Web 站点可能会为每一个访问者产生一个唯一的ID, 然后以 Cookie 文件的形式保存在每个用户的机器上。如果使用浏览器访问 Web, 会看到所有保存在硬盘上的 Cookie。在这个文件夹里每一个文件都是一个由“名/值”对组成的文本文件,另外还有一个文件保存有所有对应的 Web 站点的信息。在这里的每个 Cookie 文件都是一个简单而又普通的文本文件。透过文件名, 就可以看到是哪个 Web 站点在机器上放置了Cookie(当然站点信息在文件里也有保存)。
所以,我们可以通过Cookie登录某个网站,从而跳过各种验证。
Cookie组成
Cookie是一段不超过4KB的小型文本数据,由一个名称(Name)、一个值(Value)和其它几个用于控制Cookie有效期、安全性、使用范围的可选属性组成。
- Name/Value
设置Cookie的名称以及相对应的值,对于认证Cookie,Value值包括Web服务器所提供的访问令牌。 - Expires属性
设置Cookies的生存期,有两种存储类型的Cookie:会话性与持久性,Expires属性缺省时,为会话性Cookie,仅保存在客户端内存中,并在用户关闭浏览器时失效。持久性Cookie会保存在用户的硬盘中,直至生存期到或用户直接在网页中单击“注销”等按钮结束会话时才会失效。 - Path属性
定义了Web站点上可以访问该Cookie的目录 - Domain属性
指定了可以访问该Cookie的Web站点或域,Cookie机制并未遵循严格的同源策略,允许一个子域可以设置或获取其父域的Cookie,当需要实现单点登录方案时,Cookie的上述特性非常有用,然而也增加了Cookie受攻击的危险。 - Secure属性
指定是否使用HTTPS安全协议发送的Cookie,使用HTTPS安全协议,可以保护Cookie在浏览器和Web服务器间的传输过程中不被窃取和篡改。 - HTTPOnly属性
用于防止客户端脚本通过document.cookie属性访问Cookie。有助于保护Cookie不被跨站脚本攻击窃取或篡改。但是,HTTPOnly的应用仍存在局限性,一些浏览器可以阻止客户端脚本对Cookie的读取操作,但允许写操作,此外,大多数浏览器仍允许通过XMLHTTP对象读取HTTP响应中的Set-Cookie头。
获取Cookie
这里以淘宝为例,在登录后,F12,选择Network
找到这个文件
在右侧Headers里找到cookie
这里就是你登录时向服务器发送的cookie。
我们在获取到这个cookie后就可以在爬虫里面使用cookie登录网站了
构造cookie
###
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/44.0.2403.157 Safari/537.36'}
cookies = {"你登录后的cookies值"}
###
之后再发送请求的时候把headers参数添加进去即可用过cookie登录网页。
由于cookie大多都有时间限制,即有效期,所以我们可以通过session或者其他方法登录网页,然后通过document.cookie或者其他方法获取cookie。