首页 > 其他分享 >Splash反爬

Splash反爬

时间:2023-06-29 22:55:32浏览次数:30  
标签:请求 反爬 通过 爬虫 获取 Splash 数据

为什么要反爬

image-20220728144213999

爬虫:使用任何技术手段,批量获取网站信息的一种方式。关键在于批量

反爬虫:使用任何技术手段,阻止别人批量获取自己网站信息的一种方式。关键也在于批量

  1. 因爬虫的访问频率过高影响服务器的运行

    1. 影响别人业务

    2. 导致服务器宕机

      单一的DoS攻击一般是采用一对一方式的,它利用网络协议和操作系统的一些缺陷,采用欺骗和伪装的策略来进行网络攻击,使网站服务器充斥大量要求回复的信息,消耗网络带宽或系统资源,导致网络或系统不胜负荷以至于瘫痪而停止提供正常的网络服务。

  2. 公司的劳动果实轻松并拿走

    1. 免费资源被拿走丢失竞争力
    2. 收费资源属于侵权
  3. 商业竞争对象

  4. 服务器流量需要钱!!!(服务器不是免费的,不做慈善)

  5. 起诉浪费时间、钱,还不一定赢!!

经常被反爬的都有谁

image-20220728144041960

  • 十分低级的小白(应届生,刚入行)

    应届毕业生,与小白的的爬虫通常简单粗暴,根本不管服务器压力,加上人数不可测,很容易被反爬

  • 十分低级的创业公司

    现在的创业公司越来越多,为了发展公司,需要做不少的分析程序,与分析行为,但是分析是需要数据的。若不想买,就只能写爬虫,为了公司的生死存亡,只能不断的爬取数据

  • 不小心写错代码,没人停止的爬虫

    程序不小心写错,进也死循环。再就是部署服务器,无人维护了,依然不停的爬取数据

  • 成型的商业对手

    最主要的对手,往往商业对手既然选择爬取对方的数据,基本都是有技术、钱。如果他们要爬,只能和他们死磕。

常见的反爬策略

image-20220728150155418

通过headers字段来反爬

headers中有很多字段,这些字段都有可能会被对方服务器拿过来进行判断是否为爬虫

通过headers中的User-Agent字段来反爬

  • 反爬原理:爬虫默认情况下没有User-Agent,而是使用模块默认设置
  • 解决方法:请求之前添加User-Agent即可;更好的方式是使用User-Agent池来解决(收集一堆User-Agent的方式,或者是随机生成User-Agent)

通过referer字段或者是其他字段来反爬

  • 反爬原理:爬虫默认情况下不会带上referer字段,服务器端通过判断请求发起的源头,以此判断请求是否合法

  • 解决方法:添加referer字段

    image-20210708205153957

通过cookie来反爬

  • 反爬原理:通过检查cookies来查看发起请求的用户是否具备相应权限,以此来进行反爬
  • 解决方案:进行模拟登陆,成功获取cookies之后在进行数据爬取

image-20210708205549702

通过请求参数来反爬

请求参数的获取方法有很多,向服务器发送请求,很多时候需要携带请求参数,通常服务器端可以通过检查请求参数是否正确来判断是否为爬虫

通过从html静态文件中获取请求数据(github登录数据)

  • 反爬原理:通过增加获取请求参数的难度进行反爬

  • 解决方案:仔细分析抓包得到的每一个包,搞清楚请求之间的联系

    image-20210708205821533

通过发送请求获取请求数据

  • 反爬原因:通过增加获取请求参数的难度进行反爬

  • 解决方案:仔细分析抓包得到的每一个包,搞清楚请求之间的联系,搞清楚请求参数的来源

    image-20210709095013611

通过js生成请求参数

  • 反爬原理:js生成了请求参数
  • 解决方法:分析js,观察加密的实现过程,通过js2py获取js的执行结果,或者使用selenium来实现

通过验证码来反爬

  • 反爬原理:对方服务器通过弹出验证码强制验证用户浏览行为
  • 解决方法:打码平台或者是机器学习的方法识别验证码,其中打码平台廉价易用,更值得推荐

常见基于爬虫行为进行反爬

基于请求频率或总请求数量

爬虫的行为与普通用户有着明显的区别,爬虫的请求频率与请求次数要远高于普通用户

  • 通过请求ip/账号单位时间内总请求数量进行反爬

    • 反爬原理:正常浏览器请求网站,速度不会太快,同一个ip/账号大量请求了对方服务器,有更大的可能性会被识别为爬虫
    • 解决方法:对应的通过购买高质量的ip的方式能够解决问题/购买个多账号
  • 通过同一ip/账号请求之间的间隔进行反爬

    • 反爬原理:正常人操作浏览器浏览网站,请求之间的时间间隔是随机的,而爬虫前后两个请求之间时间间隔通常比较固定同时时间间隔较短,因此可以用来做反爬
    • 解决方法:请求之间进行随机等待,模拟真实用户操作,在添加时间间隔后,为了能够高速获取数据,尽量使用代理池,如果是账号,则将账号请求之间设置随机休眠

根据爬取行为进行反爬,通常在爬取步骤上做分析

通过js实现跳转来反爬

  • 反爬原理:js实现页面跳转,无法在源码中获取下一页url
  • 解决方法: 多次抓包获取条状url,分析规律

通过陷阱获取爬虫ip(或者代理ip),进行反爬

  • 反爬原理:在爬虫获取链接进行请求的过程中,爬虫会根据正则,xpath,css等方式进行后续链接的提取,此时服务器端可以设置一个陷阱url,会被提取规则获取,但是正常用户无法获取,这样就能有效的区分爬虫和正常用户
  • 解决方法: 完成爬虫的编写之后,使用代理批量爬取测试/仔细分析响应内容结构,找出页面中存在的陷阱

通过假数据反爬(投毒)

  • 反爬原理:向返回的响应中添加假数据污染数据库,通常不会被正常用户看到
  • 解决方法: 长期运行,核对数据库中数据同实际页面中数据对应情况,如果存在问题/仔细分析响应内容

阻塞任务队列

  • 反爬原理:通过生成大量垃圾url,从而阻塞任务队列,降低爬虫的实际工作效率
  • 解决方法: 观察运行过程中请求响应状态/仔细分析源码获取垃圾url生成规则,对URL进行过滤

阻塞网络IO

  • 反爬原理:发送请求获取响应的过程实际上就是下载的过程,在任务队列中混入一个大文件的url,当爬虫在进行该请求时将会占用网络io,如果是有多线程则会占用线程
  • 解决方法: 观察爬虫运行状态/多线程对请求线程计时

运维平台综合审计

  • 反爬原理:通过运维平台进行综合管理,通常采用复合型反爬虫策略,多种手段同时使用
  • 解决方法: 仔细观察分析,长期运行测试目标网站,检查数据采集速度,多方面处理

常见基于数据加密进行反爬

对响应中含有的数据进行特殊化处理

通常的特殊化处理主要指的就是css数据偏移/自定义字体/数据加密/数据图片/特殊编码格式等

通过自定义字体来反爬 下图来自猫眼电影电脑版

image-20210708131030423

  • 反爬思路: 使用自有字体文件
  • 解决思路:切换到手机版/解析字体文件进行翻译

通过css来反爬 去哪儿电脑版

image-20210708145411620

  • 反爬思路:源码数据不为真正数据,需要通过css位移才能产生真正数据
  • 解决思路:计算css的偏移

通过js动态生成数据进行反爬

  • 反爬原理:通过js动态生成
  • 解决思路:解析关键js,获得数据生成流程,模拟生成数据

通过数据图片化反爬

  • 解决思路:通过使用图片解析引擎从图片中解析数据

通过编码格式进行反爬

  • 反爬原理: 不适用默认编码格式,在获取响应之后通常爬虫使用utf-8格式进行解码,此时解码结果将会是乱码或者报错
  • 解决思路:根据源码进行多格式解码,或者真正的解码格式

标签:请求,反爬,通过,爬虫,获取,Splash,数据
From: https://www.cnblogs.com/jiangjiayun/p/17515412.html

相关文章

  • 学习爬虫入门2,count反爬虫思路
    浏览网页的过程1.输入网址2.浏览器向DNS服务商发起请求3.找到对应服务器4.服务器解析请求5.服务器处理最终请求发回去6.浏览器解析返回数据7.展示给用户爬虫策略广度优先  深度优先  聚焦爬虫BFS从根节点开始沿着树的宽度深度优先DFS尽可能深的搜索树的分支......
  • 爬虫数据采集需要什么样的代理ip以及遇到的反爬措施
     随着互联网的快速发展,数据已经成为许多行业中的重要资源。网络爬虫作为一种数据采集工具,在许多领域中得到了广泛应用。但是现在很多网站都有非常多的限制,所以在爬取数据的时候,还需要借助代理ip来助力,才能更好的完成任务。一、爬虫数据采集需要什么样的代理ip 不同的爬虫业务......
  • 网站一般有哪些反爬机制,如何应对
    网站在设计时,为了保障服务器的稳定运行和防止数据被非法获取,通常会设置反爬机制。一般来说,网站的反爬机制主要包括以下几种:1、验证码:网站通过在用户访问时弹出验证码的方式,要求用户输入验证码才能进入网站或进行某些操作。2、IP封锁:网站会对频繁访问、异常访问或基于不同的模式访问......
  • requests 反爬
    概述本章内容模拟浏览器登录->处理cookie防盗链处理->抓取梨视频数据代理->防止被封ip接入第三方代理cookie登录->得到cookie带着cookie去请求到需要的url#必须把上面的两个操作连起来#我们可以使用session进行请求->session可以认为是一连串的请求,中间c......
  • 全球最大照片网站 Unsplash 开放图片检索数据集
    By超神经内容概要:全球最大的照片网站 Unsplash宣布平台已经开放了超过20万名摄影师的近200万张免费图片的,并开放了两个图片检索结果的数据集。关键词:数据集图片搜索图像分类Unsplash是世界上最大的照片摄影网站之一,由全世界20多万摄影师参与,贡献了数百万张高清优质的摄......
  • 3-selenium反爬了,网页打开一直提示失败
    添加如下代码fromselenium.webdriverimportChromeOptionsoption=ChromeOptions()option.add_experimental_option('excludeSwitches',['enable-automation'])option.add_argument("disable-blink-features=AutomationControlled")driver=we......
  • 反爬虫的所有套路和策略
    反爬虫是一种防止网络爬虫抓取网站内容的技术。为了保护网站的数据安全,网站管理员采用了各种策略来阻止或限制爬虫的访问。以下是一些常见的反爬虫策略和相应的例子:User-Agent检查:检查请求头的User-Agent字段来识别爬虫。例如,如果User-Agent是一个非常规浏览器的标识符,网......
  • 从根源上解决反爬虫问题——HTTP代理的应用
    你是不是经常遇到在爬取网站数据时被封IP,或者访问速度过慢的情况呢?这就是因为网站为了保护自己的数据不被恶意利用,采取了反爬虫技术。但是,现在有一种解决方法——HTTP代理。HTTP代理可以将你的请求都转发到一个代理服务器上,然后由代理服务器再去访问目标网站。这样的好处在......
  • Python认识爬虫与反爬虫
    爬虫:通过计算机去获取信息,以节约人力成本,不节约的就不需要用了。反爬虫的最终:区别计算机和人,从而达到,排除计算机的访问,允许人的访问。最终结论:爬虫与反爬虫都是有尽头的。爬虫的尽头就是极度模拟用户(自动化)。反爬虫的尽头就是机器无法识别而人类可以识别的验证码。所以,省事的......
  • 一种通过编码的反爬虫机制
    遇到一个反爬虫机制,该网页为gbk编码网页,但是请求参数中,部分请求使用gbk编码,部分请求使用utf8编码,还设置了一些不进行编码的安全字符,在爬取的过程中形成了阻碍。提示:在认为参数设置正常,又无法正确爬取数据的情况下,通过response.requests.headers和esponse.requests.body与浏览器的请......