Python爬虫教程

第一章: 初学乍练-Python快速入门

第二章: 初窥门径-从全局把握网络爬虫

第三章: 爬虫数据-网页与JSON

第四章: 爬虫核心-HTTP协议

第五章: 手到擒来-数据的抓包

第六章: 利刃出鞘-HTTP请求库

第七章: 尘埃落定-数据的解析

第八章: 逆向初探-JS逆向

第九章: 爬虫进阶-Selenium, 中间人拦截

第十章:斗转星移-常用的反爬策略及应对方法

首页 > Python爬虫教程 > 第十章:斗转星移-常用的反爬策略及应对方法 > 10.2节:对爬虫IP进行封禁

10.2节:对爬虫IP进行封禁

薯条老师 2021-06-24 07:59:34 235657 0

编辑 收藏

教程引言:

系统地讲解计算机基础知识,Python的基础知识, 高级知识。关注微信公众号[薯条编程],免费领取Python电子书以及视频课程。

10.2.1 频繁访问的IP

编写爬虫程序是用来自动快速地抓取目标站点的数据,当抓取速度过于频繁时,很容易被目标站点识别为爬虫。目标站点通常采取这样的反爬策略:在后台分析每个ip的请求次数,如果请求次数超出了指定的阈值,则将其封禁一段时间或永久封禁。这里的封禁不是说禁止爬虫对站点发起请求,而是当爬虫再次发起请求时,直接响应无效的数据,或者干脆不作响应。

10.2.2 使用HTTP代理

为应对这样的反爬策略,爬虫程序可使用HTTP代理,关于HTTP代理的介绍,同学们可复习4.3节中的内容。以下为在requests中使用代理的例子:

import requests
"""
(1) 字典类型变量headers,用来定义HTTP请求头。我们可以在headers变量中定义User-Agent,cookie等字段
"""
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.121 Safari/537.36',
}
"""
(1) 字典类型变量proxies,用来配置HTTP代理。
(2) 键名表示代理所使用的协议,常用的有http与https。https协议是HTTP加上 TLS/SSL 协议所构建的加密传输协议。
(3) 键值表示http代理的地址。
"""
proxies = {
        # 以下代理并不存在,为薯条老师虚构的代理地址
"http":"http://119.138.33.28:8080"
}
url = "http://www.chipscoco.com"
# 通过关键字参数proxies来传递http代理的配置信息
response = requests.get(url, headers = headers,  proxies = proxies)

10.2.3 使用IP代理池

上小节中的代码仅使用一个代理,虽然可以避免爬虫的本地IP 被封禁,但这样做亦有很大的问题,一是代理本身会出现问题,二是目标服务器也会将代理的IP封禁。

透明代理和普通匿名代理都有被封禁的风险,为保证爬虫的工作效率,通常使用高匿代理。

如果代理不可用,又该做如何处理?为解决这样的问题,我们可以在爬虫程序中使用IP代理池。IP代理池很好理解,即,使用多个IP来发起请求,一旦当前代理不可用,就动态切换到其它的IP。市面上有不少企业提供了IP代理服务,免费的或收费的,如果不考虑稳定性,那么可选择免费的IP代理。如果是开发商业性质的爬虫,最好是使用收费的代理,直接利用平台提供的api来自动切换可用的高匿IP,以保证数据抓取的稳定性。

读者在考察收费的IP 代理服务时,可从可用性,稳定性,并发性,易用性等几个维度来进行考量。

(1) Python后端工程师高薪就业班,月薪10K-15K,免费领取课程大纲
(2) Python爬虫工程师高薪就业班,年薪十五万,免费领取课程大纲
(3) Java后端开发工程师高薪就业班,月薪10K-20K, 免费领取课程大纲
(4) Python大数据工程师就业班,月薪12K-25K,免费领取课程大纲

扫码免费领取学习资料:




欢迎 发表评论: