美文网首页
如何防止接口被爬虫或者其它人任意调用?

如何防止接口被爬虫或者其它人任意调用?

作者: iamdev | 来源:发表于2021-03-14 21:29 被阅读0次

互联网企业来说,数据非常有价值,我们写的接口本来是给自己的应用和客户端调用的,但是却会被一些非法爬虫抓取数据谋利。因此这篇文章主要探讨如何一定程度上防止恶意调用和爬取。

接口有两种,一种是需要登录才可以调用的,一种是不需要登录就可以调用的。

对于需要登录才可以调用的,这种就可以根据用户来限制调用次数和频率,也就是单个用户一天可以调用多少次,或者每小时调用多少次,每分钟可以调用多少次。

举个例子,比如图片接口,正常登录用户来说。不会这么频繁下载图片,普通用户可能一天也就看那么几百张图片。

但是如果是爬虫恶意下载图片就不一定了,可能连续或者一整天都是从服务器里面拿图片,正常用户会这样子吗?哪个正常用户会一整天都在看图片?所以这种可以设置单用户每天的限制。

爬虫如果使用多个账号切换来下载,这时候根据账号来限制就不太好使了,爬虫如果没有用代理的话,如果用自己的服务器来爬数据,那么非常好禁止,只需要根据ip来限制就可以了。

还是那个思路,一般用户单天会调用多少次接口,以及每分钟的频率,如果超过了次数,明显不正常,那么就可以直接根据ip封禁即可。

如果爬虫是使用了代理来爬,那么就很难根据ip,用户账号来封禁,因为代理的ip是变化的。

这时候可以从接口调用的技术面来限制,加强接口的调用逻辑,比如接口调用需要哈希算法,这个哈希算法有个关键的参数在客户端。

这样子就需要反编译客户端才知道具体的参数是什么了,这无疑加大了难度。

或者在客户端内置一些特殊的算法,接口需要附加特殊算法计算出来的参数才可以调用成功。

举个例子:

有如下接口/getpic?username=xiaoli

这个接口的意思是获取小李用户的图片。如果不做加密,那么任何爬虫很简单就可以获取任意用户的图片,只需要附加参数即可。

但是如果改成如下才可以获取就不一样了

/getpic?username=xiaoli&timestamp=xxxx&hash=xxxx

关键是这个hash函数,举个简单的例子md5(username+timestamp+key)

然后这个key是隐藏在客户端的,只能反编译你的客户端获取,为什么要加timestamp,你不加timestamp那么每次访问只要是相同用户名hash都是一样的,爬虫轻而易举就知道那个hash后的固定字符串是什么了。

但是这些对于擅长逆向反编译高手来说这些依旧难不倒他们。

所谓道高一尺魔高一丈。

但是这样的高手毕竟是少数,如果做到上面这些,也可以挡住一大部分的非法爬虫工具了。

相关文章

  • 如何防止接口被爬虫或者其它人任意调用?

    互联网企业来说,数据非常有价值,我们写的接口本来是给自己的应用和客户端调用的,但是却会被一些非法爬虫抓取数据谋利。...

  • Seata- TCC

    1 dubbo接口用twophasebuisseness标注一组tcc接口时,调用方和被调用方都会有接口,如何识别...

  • 防止短信接口恶意调用

    背景 前段时间,公司的短信接口被人恶意调用,给公司的业务和成本都带来了一定的影响。为了尽快止损,想出了以下几种方案...

  • 跨域获取sessionId

    sessionId所属的站点暴露接口(本机域localhost): 其它任意站点访问该接口( 菜鸟教程所在域www...

  • 【笔记】类加载器

    双亲委派机制本质上是一个递归调用,从底往上逐级调用 作用1、防止同一个.class 文件被重复加载2、对任意一个类...

  • 反编译Android App

    大多数APP都对API接口进行了加密,防止第三方随意调用接口,常用的方法是,设置一个key,在调用接口来发送请求时...

  • vue防按钮重复点击(指令实现)

    快速点击按钮会重复多次调用接口,防止出现这样的情况 全局定义,方便调用 新建`plugins.js` ``` ex...

  • lumen接口访问频率throttle

    由于公司项目对外提供开放平台接口,所以为了防止第三方调用接口太频繁给服务器带来过大的压力,需要对接口调用次数限制,...

  • 前后端分离,如何防止api接口被恶意调用或攻击

    无论网站,还是App目前基本都是基于api接口模式的开发,那么api的安全就尤为重要了。目前攻击最常见的就是“短信...

  • 2021最新爬虫教程

    爬虫框架就是一些爬虫项目的半成品,可以将些爬虫常用的功能写好。然后留下一些接口,在不同的爬虫项目当中,调用适合自己...

网友评论

      本文标题:如何防止接口被爬虫或者其它人任意调用?

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