公司平台每天都会被灰产爬到很多数据,用的代理池和大量真实用户帐号,模拟登录并直接请求接口,请教 V 友大佬有啥应对策略吗
1
winnerczwx 2020-04-24 11:42:35 +08:00 via iPhone 1
1.先把大规模访问的账号封掉一批。
2.限制账号注册,提升注册门槛,比如手机号认证 3.账号访问频率限制 4.前端获取 api 时加个 js 加密的字段,可以防新手 5.前端拉取 js,css 的时候可以缓存 ip 或账号数据,如果获取 api 之前没拉取 js.css 就不返回数据 6.如果你的数据真的有价值,总有大佬会出现的,别挣扎了,给爬完拉倒 剩下的等楼下大佬补充 |
2
mrzx 2020-04-24 11:44:07 +08:00 4
总之原理就是同一个 ip 地址在多少 X 秒钟访问同一个 url 就禁止一段时间。
代理池的 ip 总是有限的吗?你把禁止时间调的长一些,把判断规则方式在改进一下(稍微宽松点,减少误判)。 时间上一禁就禁一天,你看看他有多少地址池可以用? 最多后期就是跟你玩猫捉老鼠,猜测你的规则,从而延长扫描时间的间隔。。但如果真的把扫描间隔的时间拉的很长,扫描你的平台成本过高,他们也会考虑考虑的。。。 你不可能阻止别人爬你的数据的(除非你对外不公开服务),只能增加他的成本。。。到他觉得成本高到爬你不划算。。。 |
3
sparrww 2020-04-24 11:44:34 +08:00
有价值的数据,注册才能访问,限制账号单位时间请求次数。
没价值的,接口加个随机 token,别人也没心情去看你 js 怎么生成的 |
4
gz911122 2020-04-24 12:04:31 +08:00
公司什么平台可以发一下.
不看具体的也不好分析 |
5
ladypxy 2020-04-24 12:05:54 +08:00
最简单的,上 Cloudflare,然后开启反 bot
如果面向国内?那参考楼上的 |
6
aWangami 2020-04-24 12:11:54 +08:00 via Android
给他投点毒
|
7
opengps 2020-04-24 12:14:11 +08:00 via Android
真重要的接口就来个活体验证
|
8
abcbuzhiming 2020-04-24 12:14:12 +08:00
多管齐下:
*技术手段楼上说了不少,我就不多说了。 *既然真实用户存在,封真实用户,并且要求新注册用户提交更详细的个人资料,反向钓鱼 *查对面的真实身份,查到了就发律师信。现在对灰产爬虫管的很严的 |
9
renmu 2020-04-24 12:14:31 +08:00 via Android
数据投毒,增加复杂验证码,接口关键字段加密
|
10
lasuar 2020-04-24 12:18:29 +08:00
2 的想法太简单了。如果用了商业代理,你只能认为代理池 IP 是无限的。反爬要从技术上来解决,可以参考商标网,如果没条件请专门的反爬工程师,那就自己去学习爬取途径再研究反爬措施。
|
11
Cmdhelp 2020-04-24 12:30:32 +08:00
最重要的是 提高注册难度,
通过账号限制目前比较有效, 告诉你靠 ip 是没用的,代理池可能一个 ip 用几次甚至一次就弃用了, 账号采集频率,异地登陆频率,直接封号,返回脏数据(这个比封号恶心) |
12
endoffight 2020-04-24 12:30:38 +08:00 via Android
1,加上 cf 的验证
2,12315 的验证码 3,js 监控特殊变量,防止模拟浏览器 4,随机返回假数据 以上能解决 90%的爬虫 |
13
aiquit 2020-04-24 13:06:32 +08:00
我之前做过语音验证码,返回一段话,你得把这段话念出来才可以通过验证。。。
|
15
lmoon 2020-04-24 13:17:28 +08:00 via Android
用谷雨解字
|
16
wszgrcy 2020-04-24 13:30:15 +08:00 via Android
puppeteer 无解吧?就算加验证码,也可以使用半人工方式解决。。。当然要看这个网站价值多大了
|
17
fancy111 2020-04-24 13:33:14 +08:00
先去学学淘宝价格怎么反爬的吧
|
18
triangle111 2020-04-24 13:39:07 +08:00
看看四库一平台是咋反爬的呗
|
19
Fizzyi 2020-04-24 13:44:10 +08:00
@triangle111 AES 加 网易易盾呗
|
20
Fizzyi 2020-04-24 13:44:44 +08:00
@triangle111 还有 IP,限制能看的条数
|
21
xiaxichen 2020-04-24 13:47:20 +08:00
无解的。
|
22
rekulas 2020-04-24 13:47:20 +08:00
加 google 的选择验证码 连人都通不过 100% :)
|
23
zdnyp 2020-04-24 13:53:14 +08:00
都不考虑真实用户体验的吗?
xxx 真恶心,现在注册还要 xxx 验证;刷新了几遍网页一天不能访问;还有返回假数据的...;这些能拦住一些小白,受影响的还是普通用户。 反爬的目的在于爬虫难拿到数据,不是增加爬虫的访问难度。登录、验证、数据加密是常用手段,不打扰用户的前提下挡住大部分爬虫。 剩下的一部分高手,数据给他吧。 爬虫和反爬虫永远是攻防战,没有无坚不摧的防御也没有锋利无比的刀刃,博弈而已,看谁的代价更大。 |
24
augustheart 2020-04-24 14:02:47 +08:00
攻防攻防,静态的防是永远落后于动态的攻的。
顶多就是看谁耗死谁。 |
25
adminPUBG 2020-04-24 14:22:52 +08:00 2
@zdnyp 有道理,爬虫和发爬虫就是矛和盾的关系,也不存在一劳永逸的方法,说 IP 池的,我们现在用的 IP 池,一天能获取 200 多万不重复的 IP,重复调用能到 3000 多万次,而且这些 IP 都是普通的住宅 IP,有很多真实用户就是用的这些 IP,没办法在不影响正常用户的情况下封爬虫的,只能说你提高爬虫获取数据的成本,到它无路可图的地步,就像薅羊毛的一样,它成本高了,自然就不来薅你了,否则是防不住的。
|
26
rain0002009 2020-04-24 14:25:49 +08:00 1
突然想到像 puppeteer 这种真的拿个浏览器访问的 咋办呢
|
27
copymaster 2020-04-24 14:44:00 +08:00 via Android
吐假数据啊
|
28
a516307724 2020-04-24 14:50:29 +08:00
该做的小说网站都做了。然而。。。
|
29
fank99 2020-04-24 14:53:34 +08:00
此时路过了一名爬虫工程师。
|
30
DelayNoMay 2020-04-24 14:56:34 +08:00
此时路过了一名反反爬虫工程师
|
31
zary 2020-04-24 15:02:52 +08:00
1 、js 核心逻辑混淆、埋逻辑陷阱
2 、请求字段 RSA 、AES 加密 3 、针对频率封禁 4 、重要业务场景(登录注册)上验证码 |
32
zgzhang 2020-04-24 15:03:22 +08:00 2
|
33
dearmymy 2020-04-24 15:12:00 +08:00 6
首先你要认识到没啥一劳永逸的方法。我大概说下我了解的。
1,如果是客户端的话可以做一些加密。但是网页基本没什么特别好的办法。js 加密就是效果也是一般,不过你说了对方是发包的。你 js 加密可以经常换换,也能恶心死他们。 2,限制 ip,账号手机注册,验证码,这些你基本可以放弃,ip 池子便宜的要死,手机接码网站也一大堆,验证码,高中没毕业的学个几天,就能搞个机器学习去识别,还影响用户体验。 3,还有一个恶心的办法,针对于发包来说,他们只会发关键的包。你可以在登录后的前端里插入一些小图片之类的,对这小图片进行检测。如果他没发这个请求,就默认他机器人。 4,作为搞逆向这么多年,有个很重要的规则,不要给对方明确反馈,最好能拉长反馈时间。比如你已经检测到了他是机器,就别百分百反馈给他获取接口失败,你可以随机反给他,比如 5 次反给他一次。让他不知道怎么回事。 攻防是长期事情,也没必要打死。。。。毕竟你们互怼的时候,既学习了技术,也创造了你俩岗位和 kpi 。要不你俩都得被裁 |
34
z888888cn 2020-04-24 15:22:32 +08:00
终极解决方法:看页面请先支付 1 毛钱。
|
36
kasper4649 2020-04-24 15:40:49 +08:00 via Android
@z888888cn 这个厉害了
|
38
mrzx 2020-04-24 16:45:40 +08:00
@adminPUBG 有一些不了解,忘解答。
地址池能获取 200 多万个不重复的 ip 地址,而且都是普通的住宅 ip,你指的是公网地址还是私网地址? 如果是私网地址,也不需要获取,随便定义即可。 如果是公网地址,难道这些地址平时都不在线的吗?而且很多 ipv4 地址都不够用,运营商都是搞大内网 nat 过去的。 从网络的角度考虑,你既然要收数据,总要回数据包吧,爬虫发过去的数据包源地址应该就是代理池里这些地址吧? 如果这些公网 ip 地址原本就已经被占用了,从路由层面怎么保证回到你的代理 ip 池这里呢? |
39
mrzx 2020-04-24 16:50:45 +08:00
@zgzhang 搜了一下,秒拨机就是利用宽带账户提供的 pppoe 拨号机制,每次换一个公网 ip 地址吗,但是这种地址池普遍不是很大。
我做过运营商的项目,BRAS 的服务器(你可以理解成 pppoe 服务器)我都亲自配置过,也没见分配多大的 IP 地址池吗? 早起普遍都是 juniper e 系列设备,现在都换成了华为 me60 系列。。 难道秒拨机还有其他的方式制作?还是向运营商偷偷买了什么服务? |
40
ClericPy 2020-04-24 16:54:21 +08:00
反爬虫就像 CSGO 的反作弊, 只要是免费的, 就有一群人本着 "学习" 的目的来尝试, 每次进游戏看到一群小号就烦
|
41
zgzhang 2020-04-24 17:08:27 +08:00
@mrzx 问题的点不在于池子有多大,而是这种 IP 可能会被重新分配给正常用户,如果你的应用体量很大,这样引发的客诉是不可控的
|
42
freeup 2020-04-24 17:09:16 +08:00
可以接入第三方反爬虫 比如 极验
|
43
freeup 2020-04-24 17:10:46 +08:00
但是无论怎么搞 总会有大佬能破 只能尽可能减少被爬的风险
|
44
clague 2020-04-24 17:15:31 +08:00 via Android
谷歌验证码,不过对正常用户的体验损坏也很大。
|
45
mrzx 2020-04-24 17:21:15 +08:00
@zgzhang 嗯,明白了,误伤率很高吗。
因为我做过类似项目,我们对地址池的划分都是严格按照运营商的的区域进行划分的,最多按照客户数量的 90%来分,比如该区域有 1 万个用户,早期我们给的地址池就 9000 个,实际我们测过,持续在线的客户数量平均只有 60%。也就是说,这地址池里,同一时间最多 3000 个地址能供秒拨机来使用啊。。。当然,实际情况会更小。上面说有几百万个不重复地址,我就在想它怎么来的?除非对方办了不同区域,且办理 n 个宽带。。 我最多一个区域也就分配一个 B 的地址段而已。。。。 |
46
heiheidewo 2020-04-24 17:22:28 +08:00
哈哈,爬站无数,除非你限制账号访问,否则无解
|
47
zgzhang 2020-04-24 17:29:45 +08:00 1
@mrzx 现在的 IP 地址供应商基本上都是会在 N 个地区用不同用户办理 N 很大的宽带,提供给客服的基本上是 VPS 或者是一个 VPN 账号,实际上就是把他的网络资源云化了,客户甚至可以通过接口指定出口 IP 的区域,类似这种 https://www.kuaidaili.com/
|
49
mxT52CRuqR6o5 2020-04-24 17:35:52 +08:00 via Android
我有个不靠谱的想法,如果判断出是爬虫可以返回正确格式的假数据,让爬虫很难判断自己有没有失效,污染对方爬到的数据,不过感觉风险很大不靠谱,如果影响正常用户会造成损失
|
51
newmlp 2020-04-24 17:49:59 +08:00
接口请求参数加密一下啊
|
53
HUALIAN 2020-04-25 13:14:48 +08:00
接入滑块验证码和加密 js 验证参数是最有效的
|
54
forgottencoast 2020-04-25 16:33:48 +08:00
@zgzhang 这个网站不违法吗?怎么就不需要整改了?手工狗头。
|