Scrapy爬虫框架补充内容三(代理及其基本原理介绍)

Posted 积土成山,风雨兴焉

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Scrapy爬虫框架补充内容三(代理及其基本原理介绍)相关的知识,希望对你有一定的参考价值。

前言:(本文参考维基百科及百度百科所写)

当我们使用爬虫抓取数据时,有时会产生错误比如:突然跳出来了403 Forbidden 或者网页上出现以下提示:您的ip访问频率太高 或者时不时跳出一个验证码需要你输入,这是由于网站采取了反爬虫措施:服务器会检查某个固定的ip在单位时间内请求的次数,如果发现请求过于频繁就会封掉你的ip,就像你一直找人办事,突然有一天帮你办事的人不乐意了,就对你说滚!(即我们的ip被封了!),这里我们引入一个全新的概念:代理


 

 1、What is 代理?

技术分享图片

答:代理也叫代理服务器(Proxy server),它的作用是代表用户去获取网络信息(这里给小伙伴们做个类别:比如说你要去买房子,但是你没路子,这是怎么办呢?我们一般都会去找房产中介,让中介去帮我们到开发商处获取第一手房屋交易信息,而这里的中介就相当于代理服务器,我们就是客户端了,而开发商就相当于存有大量数据的远程服务器了!)-----小伙伴们明白了吗?

2、代理工作原理图解:(这里我们只介绍正向代理服务器)

技术分享图片

3、为什么要使用代理?

答:伪装我们自己的ip

(1)突破自带ip限制,访问一些平时不能访问的网站,这里我们以google推出中国为例,你的计算机是无法访问google的但一旦设置代理,就可以突破限制

(2)访问特定单位或群体的内部资源

(3)提高访问的速度

(4)隐藏我们自身真时的ip,一个ip永久了会很容易被封,特别是你使用爬虫大量爬取网站时,后期我们专门介绍爬虫代理的使用

4、代理分类

(1)根据代理的协议划分:

FTP代理服务器:主要用于访问FTP服务器,一般有上传、下载以及缓存功能,端口一般为21、2121等

HTTP代理服务器:主要用于访问网页,一般有内容过滤和缓存功能,端口一般为80、8080、3128等

SSL/TLS代理:主要用于访问加密网站,一般有SSL或TLS加密功能(最高支持128位加密强度),端口一般为443

RTSP代理:主要用于访问Real流媒体服务器,一般有缓存功能,端口一般为554

Telnet代理:主要用于telnet远程控制(黑客入侵计算机时常用于隐藏身份),端口一般为23

POP3/SMTP代理:主要用于POP3/SMTP方式收发邮件,一般有缓存功能,端口一般为110/25

SOCKS代理:只是单纯传递数据包,不关心具体协议和用法,所以速度快很多,一般有缓存功能,端口一般为108

SOCKS代理协议又分为SOCKS4和SOCKS5,前者只支持TCP,而后者支持TCP和UDP,还支持各种身份验证机制、服务器端域名解析等(简单理解:后者是前者的升级版)

(2)根据匿名程度划分:

高度匿名代理:会将数据包原封不动地转发,在服务端看来就好像真的是一个普通客户端在访问,而记录的IP是代理服务器的IP

普通匿名代理:会在数据包上做一些改动,服务端上有可能发现这是个代理服务器,也有一定几率追查到客户端的真实IP。代理服务器通常会加入的HTTP头有HTTP_VIAHTTP_X_FORWARDED_FOR

透明代理:不但改动了数据包,还会告诉服务器客户端的真实IP。这种代理除了能用缓存技术提高浏览速度,能用内容过滤提高安全性之外,并无其他显著作用,最常见的例子是内网中的硬件防火墙

间谍代理:指组织或个人创建的用于记录用户传输的数据,然后进行研究、监控等目的的代理服务器

(3)是否付费:

免费代理:比如你可以上西刺(http://www.xicidaili.com)上找到大量的随机代理,但这些代理的使用率相当低,你需要随时跟换代理

付费代理:毕竟出钱了吧,稳定性肯定优于免费的

5、总结

代理顾名思义就是代表你去访问远程的服务器并获取你想要的信息,这里对于下面我们写的小爬虫我们可以使用免费代理,毕竟谁也不是富二代或管二代,但对于大型爬虫项目,如需使用代理,还是推荐各位小伙伴,花钱得花在刀口上吧!

以上是关于Scrapy爬虫框架补充内容三(代理及其基本原理介绍)的主要内容,如果未能解决你的问题,请参考以下文章

Python爬虫面试常见问题

动态IP代理软件有话说:天下爬虫框架皆出Scrapy

从零开始写Python爬虫 --- 2.1 Scrapy 爬虫框架的安装与基本介绍

Scrapy爬虫框架

python爬虫之scrapy框架

python学习之三 scrapy框架