为啥爬虫爬来的网页源码是这样的 错误412?

之前看的是《Python网络爬虫权威指南》,看到了第三章,进度有些慢,可能是我领悟比较低。本来打算一本一本来,现在觉得变通一下可能比较好,所以想先补一下基础知识。

/,输入URL后回车:

首先观察第一个网络请求.

  • 第一列 Name:请求的名称,一半会将URL的最后一部分当作名称。
  • 第二列 Status:响应的状态码,这里显示200,代表响应是正常的。
  • 第三列 Type:请求的文档类型。document,代表我们这次请求的是一个HTML文档,内容就是一些HTML代码。
  • 第四列 Initiator:请求源。用来标记请求是由哪个对象或进程发起的。
  • 第五列 Size:从服务器下载的文件和请求的资源大小。如果是从缓存中取得的资源,则该列会显示from cache。
  • 第六列 Time:发起请求到获取响应所用的时间。

/s?wd=Python,这里参数wd表示要搜寻的关键字。

POST请求达索在表单提交时发起。比如一个登录表单,输入用户名和密码后,点击“登录”按钮,这通常会发起一个POST请求,其数据通常以表单的形式传输,而不会体现在URL中。

GET和POST请求方法区别:

  • GET请求中的参数包含在URL里,数据可以在URL中看到,而POST请求的URL不会包含这些数据,数据都是通过表单形式传输的,会包含在请求体中。
  • GET请求提交的数据最多只有1024个字节,而POST方式是没有限制的。

表2-1 其他请求方法

类似于GET请求,只不过返回的响应中没有具体的内容,用于获取报头
从客户端向服务器传送的数据取代指定文档中的内容
请求服务器删除指定的页面
把服务器当作跳板,让服务器代替客户端访问其他网页
允许客户端查看服务器的性能
回显服务器收到的请求,主要用于测试或诊断

用来说明服务器要使用的附加信息。

Accept:请求报头域,用于指定客户端可接受哪些类型的信息。

Host:用于指定请求资源的主机IP和端口号,其内容为请求URL的原始服务器或网关的位置。

Cookie这是网站为了辨别用户进行会话跟踪而存储在用户本地的数据。它的主要功能是维持当前访问会话。

Referer:此内容用来标识这个请求是从哪个页面发过来的,服务器可以拿到这一信息并作相应的处理。

User-Agent简称UA,它是一个特殊的字符串头,可以使服务器识别客户i使用的操作系统及版本、浏览器及版本等信息。在做爬虫时加上此信息,可以伪装成浏览器,否则可能会被识别出。

Content-Type:也叫做互联网媒体类型或者MIME类型,在HTTP协议消息头中,它用来表示具体请求中的媒体类型信息。

请求体一般承载的内容是POST请求的表单数据,而对于GET请求,请求体则为空。

在爬虫中,如果构造POST请求,需要使用正确的Content-Type,不然可能导致POST提交后无法正常响应。

,则所有以zhihu.com结尾的域名都可以访问该Cookie。

  • Max-Age:该Cookies失效的时间,单位为秒,常和Expires一起使用,通过它可以计算出其有效时间。Max-Age为正数,则该Cookie在Max Age秒之后失效。如果为负数,则关闭浏览器时失效,浏览器也不会以任何形式保存该Cookie。
  • Path:该Cookie的使用路径,如果设置为/path/,则只有路径为/path/的页面可以访问该Cookie。如果设置为/,则本域名下的所有页面都可以访问该Cookie
  • Secure:该Cookie是否仅被使用安全协议传输,安全协议有HTTPS和SSL等,在网络上传输数据之前先将数据加密。默认为false

2.5 代理的基本原理

服务器会检测某个IP在单位时间内的请求次数,如果超过了这个阈值,就会直接拒绝服务,返回一些错误信息,这种情况可以称为封IP。

代理实际上指的就是代理服务器,英文叫做proxy server,它的功能时代理网络用户去取得网络信息。

  • FTP代理服务器:主要用于访问FTP服务器,一般有上传、下载以及缓存功能,端口一般为21、2121等。
  • HTTP 代理服务器:主要用于访问网页,一般有内容过滤和缓存功能,端口一般为80、8080、3128等。
  • SSL/TLS代理:主要用于访问加密网站,一般有SSL或TLS加密功能(最高支持128位加密强度),端口一般为443。
  • RTSP代理:主要用于访问Real流媒体服务器,一般有缓存功能,端口一般为554。
  • Telnet代理:主要用于telnet远程控制(黑客入侵计算机时常用于隐藏身份),端口一般为23。
  • POP3/SMTP代理:主要用于POP3/SMTP方式收发邮件,一般有缓存功能,端口一般为11025。
  • SOCKS代理:只是单纯传递数据包,不关心具体协议和用法,所以速度快很多,一般有缓存功能,端口一般为1080。SOCKS代理协议又分为SOCKS4和SOCKS5,前者只支持TCP,而后者支持TCP和UDP,还支持各种身份验证机制、服务器端域名解析等。简单来说,SOCKS4能做到的SOCKS5都可以做到,但SOCKS5能做到的SOCKS4不一定能做到。
  • 高度匿名代理:会将数据包原封不动地转发,在服务端看来就好像真的是一个普通客户端在访问,而记录的IP是代理服务器的IP。
  • 普通匿名代理:会在数据包上做一些改动,服务端上有可能发现这是个代理服务器,也有一定几率追查到客户端的真实IP。代理服务器通常会加入的HTTP头有HTTPVIA和HTPXFORSMARDED FOR。
  • 透明代理:不但改动了数据包,还会告诉服务器客户端的真实IP。这种代理除了能用缓存技术提高浏览速度,能用内容过滤提高安全性之外,并无其他显著作用,最常见的例子是内网中的硬件防火墙。
  • 间课代理:指组织或个人创建的用于记录用户传输的数据,然后进行研究、监控等目的的代理服务器。
}

我要回帖

更多关于 网站反爬虫 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信