个人理解:
最近迷上了python爬虫,想来这还是我最初接触python的目的之一。在开始爬虫前,有必要要先了解一下代理,因为没有代理的爬虫,就感觉是一只死虫子。现在各大中小型网站基本都有反爬虫措施,而代理是绕过这些限制最有效的方法之一。
0x00 代理原理
代理实际上指的是代理服务器(proxy sever),他的功能是代理用户去获得网络信息。形象地说,他是网络信息的中转站。在我们正常访问一个网站时,时发送了请求跟Web服务器,Web服务器把相应传回给我们。如果设置代理,实际上是在本机和服务器之间搭了一个桥,此时本机不是直接向web服务器发送请求,而是向代理服务器发送请求,然后代理服务器再发送给web服务器,接着w代理服务器把web服务器返回的相应转发给本机,这样我们就可以正常访问网页。但这个过程服务器识别出的IP不再是我们本机的IP,就实现了IP伪装,这就是代理原理。
0x01 代理的作用
-
突破自身IP访问限制,访问一些平时不能访问的站点
-
访问一些单位或团体内部资源,比如使用教育网内地址段免费代理服务器,就可以用于对教育网开放的各类FTP下载上传,以及各类资料查询共享等服务。
-
提高访问速度:通常代理服务器都设置一个较大的硬盘缓冲区,当有外界的信息通过时,同时也将其保存到缓冲区中,当其他用户再访问相同的信息时,则直接由缓冲区中取出信息,传给用户,以提高访问速度。
-
隐藏真实IP:上网者也可以通过这种方法隐藏自己的IP,免受攻击。对于爬虫来说,我们用代理就是为了隐藏自身IP,防止自身的IP被封锁。
0x02 根据匿名程度分类
正常访问头
REMOTE_ADDR = 真实IP
HTTP_VIA = 空值或无此头
HTTP_X_FORWARDED_FOR = 空值或无此头
透明代理(Transparent Proxies):目标服务器能够检测到真实IP。
使用透明代理,对方服务器可以知道你使用了代理,并且知道你的真实IP。透明代理访问对方服务器所带的HTTP头信息如下:
REMOTE_ADDR = 代理服务器IP
HTTP_VIA = 代理服务器IP
HTTP_X_FORWARDED_FOR = 真实IP
透明代理将真实IP发送给了对方服务器,因此无法达到隐藏身份的目的
(普通)匿名代理(Anonymous Proxies)
对方服务器无法检测到真实IP,但能够检测到使用了代理。匿名代理访问对