爬虫HTTP代理的异常处理及作用

198 篇文章 0 订阅
189 篇文章 0 订阅

1、代理服务
“代理”这个词听起来好像很神秘,有点“高大上”的感觉。
但其实HTTP协议里对它并没有什么特别的描述,它就是在客户端和服务器原本的通信链路中插入的一个中间环节,也是一台服务器,但提供的是“代理服务”。
所谓的“代理服务”就是指服务本身不生产内容,而是处于中间位置转发上下游的请求和响应,具有双重身份:面向下游的用户时,表现为服务器,代表源服务器响应客户端的请求;而面向上游的源服务器时,又表现为客户端,代表客户端发送请求。
代理有很多的种类,例如匿名代理、透明代理、正向代理和反向代理。
这里研究最常见的反向代理,它在传输链路中更靠近源服务器,为源服务器提供代理服务。
2、代理的作用
为什么要有代理呢?换句话说,代理能干什么、带来什么好处呢?
你也许听过这样一句至理名言:“计算机科学领域里的任何问题,都可以通过引入一个中间层来解决”(在这句话后面还可以再加上一句“如果一个中间层解决不了问题,那就再加一个中间层”)。TCP/IP协议栈是这样,而代理也是这样。
由于代理处在HTTP通信过程的中间位置,相应地就对上屏蔽了真实客户端,对下屏蔽了真实服务器,简单的说就是“欺上瞒下”。在这个中间层的“小天地”里就可以做很多的事情,为HTTP协议增加更多的灵活性,实现客户端和服务器的“双赢”。
代理最基本的一个功能是负载均衡。因为在面向客户端时屏蔽了源服务器,客户端看到的只是代理服务器,源服务器究竟有多少台、是哪些IP地址都不知道。于是代理服务器就可以掌握请求分发的“大权”,决定由后面的哪台服务器来响应请求。代理中常用的负载均衡算法你应该也有所耳闻吧,比如轮询、一致性哈希等等,这些算法的目标都是尽量把外部的流量合理地分散到多台源服务器,提高系统的整体资源利用率和性能。
3、HTTP异常处理方式
从示例中可以看到,两种方式都能输出异常:其中第二种中HTTPError必须写在URLError异常前,因HTTPError是URLError的子类,如果URLError在前面它会捕捉到所有的URLError(包括HTTPError )。
在这里插入图片描述

4、使用代理
import requests
import random
# 要访问的目标页面
targetUrl = “http://httpbin.org/ip”
# 要访问的目标HTTPS页面
# targetUrl = “https://httpbin.org/ip”
# 代理服务器(产品官网 www.16yun.cn)
proxyHost = “t.16yun.cn”
proxyPort = “31111”
# 代理隧道验证信息
proxyUser = “username”
proxyPass = “password”
proxyMeta = “http://%(user)s:%(pass)s@%(host)s:%(port)s” % {
“host” : proxyHost,
“port” : proxyPort,
“user” : proxyUser,
“pass” : proxyPass,
}
# 设置 http和https访问都是用HTTP代理
proxies = {
“http” : proxyMeta,
“https” : proxyMeta,
}
# 设置IP切换头
tunnel = random.randint(1,10000)
headers = {“Proxy-Tunnel”: str(tunnel)}
resp = requests.get(targetUrl, proxies=proxies, headers=headers)
print resp.status_code
print resp.text
1HTTP代理就是客户端和服务器通信链路中的一个中间环节,为两端提供“代理服务”;
2代理处于中间层,为HTTP处理增加了更多的灵活性,可以实现负载均衡、安全防护、数据过滤等功能;
3代理服务器需要使用字段“Via”标记自己的身份,多个代理会形成一个列表;
4如果想要知道客户端的真实IP地址,可以使用字段“X-Forwarded-For”和“X-Real-IP”;
5专门的“代理协议”可以在不改动原始报文的情况下传递客户端的真实IP。
爬虫需要稳定采集数据,需要高质量稳定的爬虫代理。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值