代理理论讲解及应用
一、代理理论讲解
在做爬虫的过程中,经常会遇到这样的情况,例如:最初的爬虫程序会正常的运行,正常的抓取数据,但是可能过一段时间就会出现一些错误。你打开对应的网站一看,可能会看到“你的IP访问频率太高”等等提示。对应的这些情况出现的原因,就是门户网站所采取的某种反爬措施。
例如:服务器会检测某个IP在单位时间内请求的次数,如果在单位时间之内,某个IP发起请求的次数超过了某个阈值,那么这个服务器端就会直接拒绝该次请求,会返回给客户端一些个错误信息。
这种情况就可以称之为请求所对应的IP被服务器端“封掉了”(拉入黑名单)。
服务器端检测的是某个IP单位时间内请求的次数,我们如果借助某种方式来伪装我们的IP,让服务器端识别不出来是由我们本机的IP所发起的请求,这样的话就可以防止“封IP”这样的服务器端的行为,这样的行为就是一种有效的反反爬策略。
1. 代理的核心目的
- 破解封IP这种反爬机制。
2. 什么是代理?
- 代理实际上指的就是代理服务器。功能:代理网络用户去获取相关的网络信息。
- 代理服务器可以理解为是网络信息中的一个中转站。在我们正常请求一个服务器的网站时,我们发送请求给web服务器,web服务器会把响应数据回传给对应的客户端。
- 如果我们设置了代理服务器,实际上就是在我们本机和服务器之间搭建了一个桥梁,此时本机不是直接向web服务器发起请求,而是向这个代理服务器发起请求,请求会发送给代理服务器,代理服务器会把我们的请求中转发送给服务器,接着代理服务器再把web服务器返回的响应对象再回传给我们客户端(本机)。这样我们也可以正常的去访问web服务器中的这些个网页。
- 但是这个过程中,web服务器识别出的真实的IP就不是我们本机的IP了。因为我们并没有直接使用我们的本机IP将请求发送给服务器端,而是将请求发送给了代理服务器,代理服务器再将我们的请求转发给了web服务器端,这样的话我们就成功实现了IP的伪装。这也是代理的基本原理。
3. 代理的作用:
- 突破自身IP访问的限制。
- 隐藏自身真实的IP,避免被攻击。
4. 代理相关的网站:
5. 代理IP的类型:
- http:应用到http协议对应的url中
- https:应用到https协议对应的url中
6. 代理IP的匿名度
(1)透明:服务器知道该次请求使用了代理,也知道请求对应的真实IP
(2)匿名:知道使用了代理,不知道真实IP
(3)高匿:不知道使用了代理,更不知道真实的IP
二、代理在爬虫中的应用
1. 代理操作:
import requests
url = 'http://www.baidu.com/s?wd=IP'
headers = {
'User-Agent': 'Moz...'
}
page_text = requests.get(url=url, headers=headers,proxies={"http://":'183.247.199.111'}).text
# 持久化存储 打开ip.html若发现此IP就是本机的IP地址,则说明无代理
with open('ip.html','w',encoding='utf-8') as fp:
fp.write(page_text)
print('存储结束')