1.爬虫是个啥?
简单来说爬虫就是获取网页并提取和保存信息的自动化程序。
(1)获取网页
爬虫通过模拟人的行为去请求web服务器,获取服务器响应的过程。
(2)提取信息
从杂乱的服务器响应中(这里主要是指HTML源码)提取有用的信息的过程。
(3)保存信息
将提取到有效信息保存在本地,或者数据库的过程。
2.静/动态网页
(1)静态网页
静态网页指的是页面内容通过写好的THML,CSS来指定,不能根据客服端的请求灵活多变的显示内容。
(2)动态网页
动态网页指的是可以动态的解析客户端的请求关联数据库并且呈现出不同的页面内容,灵活多变。
3.会话和cookie
(1)无状态HTTP
HTTP 的无状态是指 HTTP 协议对事务处理没有记忆的能力,也就是说服务器不知道客户端是什么状态。 当我们向服务器发送请求后,服务器解析此请求,然后返回对应的响应,服务器负责完成
这个过程,而且这个过程是完全独立的,服务器不会记录前后状态的变化,也就是缺少状态记录。 所以造就了会话和cookie的出现。
(2)会话
会话在服务端,会话对象用来存储特定用户会话所需的属性及配置信息。 这样,当用户在应用程序的 Web 页之间跳转时,存储在会话对象中的变量将不会丢失,而是在整个用户会话中一直存在下去。当用户请求来自应用程序的 Web 页时如果该用户还没有会话, 则 Web 服务器将自动创建一个会话对象。 当会话过期或被放弃后,服务器将终止该会话。
(3)cookie
Cookie是为了辨别用户身份、 进行会话跟踪而存储在用户本地终端上的数据。
cookie的属性结构
属性 | 描述 |
---|---|
名称 | 该 Cookie 的名称。一旦创建,该名称便不可更改 |
值 | 如果值为 Unicode 字符,需要为字符编码。 如果值为二进制数据,则需要使用 BASE64 编码。 |
域 | 可以访问该Cookie 的域名 |
路径 | 该 Cookie 的使用路径。 如果设置为/path/ ,则只有路径为/path/ 的页面可以访问该Cookie。 如果设置为/,则本域名下的所有页面都可以访问该 Cookie 。 |
过期/最长时间 | 该Cookie 失效的时间, 单位为秒, 最长时间如果为正数,则该 Cookie 在 最长时间秒之后失效。 如果为负数,则关闭浏览器时 Cookie 即失效,浏览器也不会以任何形式保存该 Cookie 。 |
大小 | 此 Cookie 的大小 |
httponly | Cookie 的 httponly 属性。 若此属性为 true ,则只有在 HTTP 头中会带有此Cookie 的信息,而不能通过 document.cookie 来访问此 Cookie。 |
(4)会话维持
当客户端第一次请求服务器时,服务器会返回一个请求头中带有Set-Cookie 字段的响应给客户端,用来标记是哪一个用户,客户端浏览器会把 Cookies 保 存起来。 当浏览器下一次再请求该网站时,浏览器会把此 Cookies 放到请求头一起提交给服务器,Cookies 携带了会话 ID 信息,服务器检查该 Cookies 即可找到对应的会话是什么,然后再判断会话来以此来辨认用户状态。所以, Cookies 和会话的配合,一个处于客户端,一个处于服务端,二者共同协作,就实现了登录会话的控制。
4.代理的使用
(1)代理的分类
根据协议来分
FTP 代理服务器
HTTP 代理服务器
SSL/TLS 代理
RTSP 代理
Telnet 代理
POP3/SMTP 代理
SOCKS 代理
根据匿名程度区分
高度匿名代理:会将数据包原封不动地转发,在服务端看来就好像真的是一个普通客户端在访问,而记录的 IP 是代理服务器的 IP。
普通匿名代理: 会在数据包上做一些改动, 服务端上有可能发现这是个代理服务器,也有一定几率追查到客户端的真实IP。 代理服务器通常会加入的HTTP头有HTTP_VIA 和 HTTP_X_ FORWDED_FOR。
透明代理: 不但改动了数据包 还会告诉服务器客户端的真实 IP。 这种代理除了能用缓存技术提高浏览速度,能用内容过滤提高安全性之外,并无其他显著作用,最常见的例子是内网中的硬件防火墙。
间谍代理:指组织或个人创建的用于记录用户传输的数据,然后进行研究、 监控等目的的代理服务器。
(2)代理的作用
突破本身 IP 访问限制
访问一些单位或团体内部资惊
提高访问速度
隐藏丘实 IP
摘自《Python 3网络爬虫开发实战 》[崔庆才著]
内容有改动