美文网首页我爱编程
三. 突破反爬虫

三. 突破反爬虫

作者: 橄榄的世界 | 来源:发表于2018-03-24 11:13 被阅读0次

1.反爬虫措施一般分为四类:
①基于验证码的反爬虫:传统验证码、逻辑验证码、滑动验证码、google访问时弹出的验证码
②基于Headers的反爬虫:常用的是User-Agent字段、Referer字段。
③基于用户行为的反爬虫:
a. 同一个IP短时间多次访问同一页面→使用大量IP代理进行绕过;
b. 同一账户短时间多次进行相同操作→注册较多的账户登陆,构成一个cookie池,对用户状态进行自动切换;
c. 访问页面的间隔比较固定,不像人在访问→将访问间隔设置成随机,尽可能模拟人的访问频率;
④基于动态页面的反爬虫:
a.页面使用Ajax动态加载→需要分析Ajax请求,然后进行模拟发送获取数据
b.Ajax请求的所有参数全部加密,无法构造所需数据的请求→ 使用selenium+phantomJS(缺点:较低的效率和较大的内存消耗)
爬虫和反爬虫的斗争中,最终必然是爬虫胜利,只不过是付出多大的代价而已。

2.在scrapy中推荐的突破反爬虫措施(也适用于普通爬虫程序):
①动态User-Agent池(伪装存在很多用户)
可使用下载器中间件RandomUserAgent, 设置动态的User-Agent。使用时在settings.py中将内置的UserAgentMiddleware禁用,并激活RandomUserAgent即可。

## 用于产生随机的User-Agent
import random


class RandomUserAgent(object):
    def __init__(self, agents):
        self.agents = agents

    @classmethod
    def from_crawler(cls, crawler):
        # 从Settings.py中加载USER-AGENTS的值
        return cls(crawler.settings.getlist('USER-AGENTS'))

    def process_request(self, request, spider):
        # 在process_request中设置User-Agent的值
        request.headers.setdefault('User-Agent': random.choice(self.agents))

②禁用cookies
如果登陆的网站不需要登陆就可以进行爬取,可以尝试将Cookies禁用,因为Cookies会跟踪爬虫的访问过程,容易被发现。
禁用Cookies的设置方法:settings.py中→ COOKIES_ENABLED=False

③设置下载延时与自动限速
settings.py中→
DOWNLOAD_DELAY = 2 #下载延时
RANDOMIZE_DOWNLOAD_DELAY = True #延迟时间=(随机值0.5-1.5)*DOWNLOAD_DELAY
但有一些网站会检测访问延迟的相似性,也有被发现的可能性,此时可以使用scrapy提供的自动限速扩展方法,此扩展能根据Scrapy服务器以及爬取的网站的负载自动限制爬取速度。

④代理IP池

⑤Tor代理

⑥分布式下载器:Crawlera

⑦Google cache

相关文章

  • 三. 突破反爬虫

    1.反爬虫措施一般分为四类:①基于验证码的反爬虫:传统验证码、逻辑验证码、滑动验证码、google访问时弹出的验证...

  • 爬虫、反爬虫与突破反爬虫

    【爬虫】批量获取网站数据 【反爬虫】防止爬虫批量获取网站数据。反爬需要人力和机器成本。反爬可能将普通用户识别为爬虫...

  • 爬取某图片网站全站代码

    贴出代码以供大家共享,其实爬虫很简单,难的是突破反爬虫,今天看了一些反爬虫的资料,明天或后天整理一下,写上一篇文章...

  • Python构建代理池

    用 Python 爬取网站内容的时候,容易受到反爬虫机制的限制,而突破反爬虫机制的一个重要措施就是使用IP代理。我...

  • scrapy突破反爬虫措施

    user-agent池 构建cookie池 ip代理来解决 禁用cookie,因为cookie会跟踪爬虫的访问过程...

  • 01-认识爬虫

    一、爬虫介绍 什么是爬虫 Python爬虫的优势 Python爬虫需要掌握什么 爬虫与反爬虫与反反爬虫三角之争 网...

  • CNN大战验证码

    介绍   爬虫江湖,风云再起。自从有了爬虫,也就有了反爬虫;自从有了反爬虫,也就有了反反爬虫。  反爬虫界的一大利...

  • 反爬虫到底是怎么一回事?

    爬虫与反爬虫永远是相生相克的:当爬虫知道了反爬策略就可以制定反-反爬策略,同样地,网站知道了爬虫的反-反爬策略就可...

  • 自学Python爬虫:常见的反爬与反爬处理

    有爬虫就有反爬虫的,双方都是一直在博弈升级中。 常见的反爬虫措施有: 字体反爬 基于用户行为反爬虫 基于动态页面的...

  • 网站反爬虫

    爬虫和反爬虫作为相生相克的死对头,无论爬虫多厉害,都是能被复杂的反爬虫机制发现,同样的,无论反爬虫机制多么缜...

网友评论

    本文标题:三. 突破反爬虫

    本文链接:https://www.haomeiwen.com/subject/yzmlqftx.html