有没有什么简单好用的反爬虫办法? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
LeeReamond
V2EX    问与答

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

  •  
  •   LeeReamond 2021-01-30 22:26:36 +08:00 via Android 3621 次点击
    这是一个创建于 1772 天前的主题,其中的信息可能已经有所发展或是发生改变。
    如题,以前没认真研究过反爬虫的问题,因为站点日活少,并不感觉会被攻击或其他,但是最近想到这个问题,我个人水平十分业余,问一下各位大佬有没有什么 common practice

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

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

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

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

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

    =====

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

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

    二是检验 refer

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

    后端又如何对其合法性进行验证呢
    第 1 条附言    2021-01-31 00:16:49 +08:00
    贴个条,可能帖子里没说太清楚,我希望达到的效果并不是完全反爬,只是强迫用户使用模拟登陆,提高爬虫成本就可以了。我有限的爬虫经验里用模拟登陆可以解决大多数问题,无法解决的次数一只手数得过来,我不准备做到这种程度,成本太高,没有意义
    20 条回复    2021-02-01 12:08:08 +08:00
    shakaraka
        1
    shakaraka  
    PRO
       2021-01-30 22:56:05 +08:00
    没有。

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

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

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

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

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

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

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

    这一整套搞上去,安全认证和验证码三天两头改一次,还没爬的基本直接放弃,已经爬的很快就受不了了。
    wzzzx
        18
    wzzzx  
       2021-01-31 15:45:43 +08:00
    定期随机更改数字字段呢 验证码也是随机更改
    hxse
        19
    hxse  
       2021-01-31 16:33:54 +08:00
    1. 不要用网页
    2. 把 text 转成 canvas, 做好混淆和加密
    sess222
        20
    sess222  
       2021-02-01 12:08:08 +08:00
    天猫国际的反爬就很好弄,限定每个实名账户一次性可访问 40 页,超过 40 页就要滑动验证码,再划十页直接把你 BAN 了。。。爬虫有啥用,你真人上去都不行。
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     5244 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 27ms UTC 07:18 PVG 15:18 LAX 23:18 JFK 02:18
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86