有没有什么简单好用的反爬虫办法?

2021-01-30 22:26:36 +08:00
 LeeReamond
如题,以前没认真研究过反爬虫的问题,因为站点日活少,并不感觉会被攻击或其他,但是最近想到这个问题,我个人水平十分业余,问一下各位大佬有没有什么 common practice

我个人的爬虫使用经验中,主要有几类反爬措施,

其一是使用 refer,判断 clientagency 这种比较原始的方式,

其二是将页面套在 iframe 中进行懒加载

其三是类似 pixiv 最近几年的操作,登录时接入了一个某某反爬业务,前端 js 会生成一些东西,非模拟登录很难得到这些数据

对我个人而言,因为我也不是专门做爬虫的,通常反爬如果达到第三层,就会拦住我。

=====

我目前感觉可行的有效反爬办法如下(基于 spa,有权限验证,但这并不妨碍直接调用数据接口)

一是部署时限制接口访问频次,比如短期大量访问后暂时屏蔽。

二是检验 refer

三,也是我想问的,前端有没有一些好用的工具,可以实现强制用户如果想爬虫也必须使用模拟客户端?比如混淆过的 js 代码生成一些 hash 之类的。

后端又如何对其合法性进行验证呢
3098 次点击
所在节点    问与答
20 条回复
wunonglin
2021-01-30 22:56:05 +08:00
没有。

搞那么多花里胡哨的,只要不需要手工验证,用 chromedp 都能给你爬没咯
ijrou
2021-01-30 23:29:45 +08:00
看你这么问,我只能说:没有
如果是大牛,,,,办法很多,,,但也不是完全反爬。。
imgbed
2021-01-30 23:35:46 +08:00
用户打开网页先来个图灵测试再显示内容
favourstreet
2021-01-31 00:00:47 +08:00
不加区分地随机把一部分请求的响应时间拖长十秒,我相信爬虫永远不会比用户有耐心。
fiveelementgid
2021-01-31 00:08:01 +08:00
没有,selenium+Chrome driver 在浏览器一级模拟,根本没办法
RECAPTURE of Google 除外(
systemcall
2021-01-31 00:11:35 +08:00
注册的时候要手持 sfz,浏览必须得短信登录,看到一半就要求用户下载 App,电脑上面的话就让用户扫码下载。App 要求各种权限来做设备指纹,不给权限就闪退,设备指纹觉得有问题就封号,没问题的话时不时短信验证一下,之后摄像头偷拍几张做人脸识别,有问题就封号
实在要做 pc 版,就偷偷读一下用户的浏览记录,浏览记录和之前的用户画像差的大了就标记一下,让用户转到手机上用。时不时录下屏、扫下进程、分析一下局域网设备,觉得不对劲就把用户赶到手机 App
把那些恶心人的技术都加上去就行了
LeeReamond
2021-01-31 00:18:29 +08:00
@systemcall 我明白了,百度才是反爬届的大哥大!
Jhonohn
2021-01-31 00:46:31 +08:00
每次登陆付费 0.1,登陆成功后 1 分钟返 0.1,让支付宝帮你验证对方是不是爬虫
locoz
2021-01-31 00:59:24 +08:00
如果你只是想要提高爬虫的成本,那你就把所有东西都变成登录可见,或者核心会被爬的那些都变成登陆可见,并且提高账号注册门槛,比如简单粗暴地使用外置登录(包括但不限于 QQ 、微信、Google 等),这样就可以快速将门槛提升到新手和一般水平的人没法好好爬的程度了。

另外,如果是商业性质的东西,你还可以加那种 Web 防火墙,自带的防 CC 攻击功能就能挡住很多一般水平的,花钱买专门的反爬虫服务的话效果更佳。
LeeReamond
2021-01-31 02:24:02 +08:00
@locoz 是这样,如果用登录限制的话,就像现在这样,不排除有认证用户爬取数据的嫌疑,因为本身就是提供数据服务的,对方对数据有兴趣也并不奇怪。比如现在的 jwt 登录策略,只需要拿到 token 之后就可以退出模拟了,感觉成本并不是很高。防 CC 的话感觉,因为我们现在 nginx 已经设置了一个比如一秒访问一次的频率,最多也是每分钟被访问 60 次,这种频次应该离攻击还远,不会被挡。
LeeReamond
2021-01-31 02:27:47 +08:00
@locoz pixiv 那个应该就是专门花钱买的反爬虫服务,我印象中几年以前,大概三四年以前,pixiv 的登录接口我自己是可以搞定的,然后到一两年前有需求的时候看了一眼发现搞不定了,似乎接入了谁家的反爬服务,但是 github 上还是开源了不少破解的东西。我感觉这样一来的话不如自己实现了,反爬做的再严密,数据价值到位总归有人会破开,不如自己做个简单点的原型,可以拦截 99%的菜鸟
johnsona
2021-01-31 05:13:10 +08:00
发现异常 ip,投毒,对方要找出有毒的,要再来一遍
lichdkimba
2021-01-31 05:35:52 +08:00
@favourstreet 爬虫才有耐心吧。。。。。都是机器
Atom931989614
2021-01-31 09:38:29 +08:00
@Jhonohn 用户跑没了
paradoxs
2021-01-31 10:16:36 +08:00
爬虫越难进,普通的用户也越难进。

爬虫不会没 ,但是用户会没。
nswdhy
2021-01-31 12:54:40 +08:00
用 webfont 替代部分文字呀,他爬去的就是残缺不全的一些文本。
zuiluo
2021-01-31 14:06:21 +08:00
写了很久的爬虫的来说说,想反爬,增加爬虫成本的几个步骤

接第三方安全认证,域名走他们的安全认证,再重定向回来,否则不能访问(自己找开源库写也行,浏览器指纹认证,一系列验证码都加上去 /js 强力混淆 /接口字段名混淆 /...)

IP 请求频率要限制死,超过正常频率直接封;(当然不要封太久,防止误伤)

文本数据做字体加密,字体文件每次访问都不一样

用户鼠标轨迹做认证,前端必须定时提交(可以找第三方服务来认证识别,不然自己训练基本可用模型识别太麻烦了),否则封

这一整套搞上去,安全认证和验证码三天两头改一次,还没爬的基本直接放弃,已经爬的很快就受不了了。
wzzzx
2021-01-31 15:45:43 +08:00
定期随机更改数字字段呢 验证码也是随机更改
hxse
2021-01-31 16:33:54 +08:00
1. 不要用网页
2. 把 text 转成 canvas, 做好混淆和加密
sess222
2021-02-01 12:08:08 +08:00
天猫国际的反爬就很好弄,限定每个实名账户一次性可访问 40 页,超过 40 页就要滑动验证码,再划十页直接把你 BAN 了。。。爬虫有啥用,你真人上去都不行。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/749913

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX