前言
Cookie
Cookie 是指某些网站服务器为了辨别用户身份和进行Session跟踪,而储存在用户浏览器上的文本文件,Cookie可以保持登录信息到用户下次与服务器的会话。
Cookie原理
HTTP是无状态的面向连接的协议, 为了保持连接状态, 引入了Cookie机制 Cookie是http消息头中的一种属性,包括:
Cookie名字(Name)
Cookie的值(Value)
Cookie的过期时间(Expires/Max-Age)
Cookie作用路径(Path)
Cookie所在域名(Domain),
使用Cookie进行安全连接(Secure)。
前两个参数是Cookie应用的必要条件,另外,还包括Cookie大小(Size,不同浏览器对Cookie个数及大小限制是有差异的)。
Cookie由变量名和值组成,根据 Netscape公司的规定,Cookie格式如下:
Set-Cookie: NAME=VALUE;Expires=DATE;Path=PATH;Domain=DOMAIN_NAME;SECURE
Cookie应用
Cookies在爬虫方面最典型的应用是判定注册用户是否已经登录网站,用户可能会得到提示,是否在下一次进入此网站时保留用户信息以便简化登录手续。
使用Cookies获取qq空间登陆后界面
在网页登录qq空间,进入说说界面,F12或检查,刷新一下,找到网页主题文件,复制cookies
# -*- coding:UTF-8 -*-
import urllib2
headers = {
"Host":"user.qzone.qq.com",
"Connection":"keep-alive",
"Upgrade-Insecure-Requests":"1",
"user-agent":" Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.181 Safari/537.36",
"accept":"text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8",
"Accept-Language":"zh-CN,zh;q=0.9",
"Cookie": "****************************"
}
request = urllib2.Request("https://user.qzone.qq.com/2844194604", headers = headers)
response = urllib2.urlopen(request)
print response.read()
结果:一段巨大的html
模拟登录要注意几点:
- 登录一般都会先有一个HTTP GET,用于拉取一些信息及获得Cookie,然后再HTTP POST登录。
- HTTP POST登录的链接有可能是动态的,从GET返回的信息中获取。
- password 有些是明文发送,有些是加密后发送。有些网站甚至采用动态加密的,同时包括了很多其他数据的加密信息,只能通过查看JS源码获得加密算法,再去破解加密,非常困难。
- 大多数网站的登录整体流程是类似的,可能有些细节不一样,所以不能保证其他网站登录成功。
有问题留言,我尽力帮助