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

laical1 · 2020年07月21日 · 最后由 smallfish1 回复于 2020年07月28日 · 141 次阅读

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。 爬虫需要稳定采集数据,需要高质量稳定的爬虫代理。

更多原创文章干货分享,请关注公众号
  • 加微信实战群请加微信(注明:实战群):gocnio

注意排版,阅读体验太差了。

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册