V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
herozzm
V2EX  ›  信息安全

网站被拥有强大 ip 代理池的爬虫搞, ua 随机变化,怎么办

  •  
  •   herozzm · 2022-02-18 20:20:01 +08:00 · 9198 次点击
    这是一个创建于 1020 天前的主题,其中的信息可能已经有所发展或是发生改变。

    每个 ip 只访问 1-2 页面,没法封锁 ip ,ua 也是随机变化

    86 条回复    2022-04-27 12:57:46 +08:00
    Puteulanus
        1
    Puteulanus  
       2022-02-18 20:22:58 +08:00   ❤️ 1
    看看 tls 指纹?
    herozzm
        2
    herozzm  
    OP
       2022-02-18 20:26:26 +08:00
    @Puteulanus 能否再详细?
    ch2
        3
    ch2  
       2022-02-18 20:32:17 +08:00
    只访问一个页面没办法,人肉用这种办法也能把你的网站搬空
    爬虫本质上是无法阻止,只要你把信息放出去了迟早会被别人全拿走
    herozzm
        4
    herozzm  
    OP
       2022-02-18 20:39:06 +08:00
    @ch2 看来信息没法公开了
    DeWjjj
        5
    DeWjjj  
       2022-02-18 20:40:25 +08:00
    @herozzm
    普通用户降权看不到全部文字。
    herozzm
        6
    herozzm  
    OP
       2022-02-18 20:41:04 +08:00
    @DeWjjj 爬虫注册用户加上 cookie 也一样
    Darkside
        7
    Darkside  
       2022-02-18 20:41:06 +08:00   ❤️ 8
    @herozzm #2

    英文关键词叫 tls fingerprint ,这个网站 https://tlsfingerprint.io/ 提供了比较详细的介绍。

    简单来说,不同的 TLS implementation (浏览器 / 各种语言的 HTTP 库)在建立 TLS 连接的时候发送的信息(支持的密码学套件 / 签名算法之类的)不一样。如果对面使用了某些流行的 HTTP 库,并且没有试图模仿浏览器的行为的话,你可以利用 tls fingerprint 把它和正常的浏览器区分开来。

    比如目前 Chrome 的 tls fingerprint 是 e47eae8f8c4887b6 ,可以在这里查看详细信息 https://tlsfingerprint.io/id/e47eae8f8c4887b6
    herozzm
        8
    herozzm  
    OP
       2022-02-18 20:42:28 +08:00
    @Darkside 谢谢
    0ZXYDDu796nVCFxq
        9
    0ZXYDDu796nVCFxq  
       2022-02-18 20:42:41 +08:00 via Android
    加 cookie ,cookie 需要 js 来运算
    这样爬虫需要 js 引擎才能正常访问

    或者接入 cloudflare 算了
    justs0o
        10
    justs0o  
       2022-02-18 20:43:16 +08:00
    如果代理 IP 很多,除了商业方案,基本无解
    herozzm
        11
    herozzm  
    OP
       2022-02-18 20:43:25 +08:00
    @gstqc 这类爬虫就是用模拟浏览器发起访问的,支持 js 预算
    0ZXYDDu796nVCFxq
        12
    0ZXYDDu796nVCFxq  
       2022-02-18 20:44:29 +08:00 via Android
    @herozzm 是模拟还是真实的浏览器?
    还是接入 cloudflare 吧
    justs0o
        13
    justs0o  
       2022-02-18 20:44:57 +08:00
    @gstqc cloudflare 是 WAF ,这个需要 BOT WAF
    herozzm
        14
    herozzm  
    OP
       2022-02-18 20:45:17 +08:00
    @gstqc 无头 chrome ,headless chrome
    herozzm
        15
    herozzm  
    OP
       2022-02-18 20:46:57 +08:00
    @gstqc cloudflare 实际上在国内访问有抽风问题,不敢用
    justs0o
        16
    justs0o  
       2022-02-18 20:47:45 +08:00
    @herozzm 直接上阿里的 WAF 吧,按量付费
    des
        17
    des  
       2022-02-18 20:49:38 +08:00 via iPhone
    限制只允许家宽访问?
    herozzm
        18
    herozzm  
    OP
       2022-02-18 20:50:54 +08:00
    @des 他们的爬虫就是家宽 ip ,估计是很多家庭肉鸡
    justs0o
        19
    justs0o  
       2022-02-18 20:51:13 +08:00
    @des 现在的代理 IP 都是家宽
    des
        20
    des  
       2022-02-18 20:51:53 +08:00 via iPhone
    这,所以你是怎么看出来是爬虫?
    herozzm
        21
    herozzm  
    OP
       2022-02-18 20:53:12 +08:00
    @des 因为网站平时没有什么流量,突然来了上千个,非常固定的访问频率 也没有来路
    Borch
        22
    Borch  
       2022-02-18 20:54:18 +08:00
    范围时间内访问次数过多直接禁 ip ,关键字搜 iptable 防 ddos
    des
        23
    des  
       2022-02-18 20:54:55 +08:00 via iPhone
    这样的话确实没啥好办法,家宽封 ip 也不合适
    herozzm
        24
    herozzm  
    OP
       2022-02-18 20:55:05 +08:00
    @Borch 一个 ip 就访问 2 次 就换了,怎么封锁?
    vanton
        25
    vanton  
       2022-02-18 20:58:21 +08:00
    @Borch #22
    这个只能防那些非常蠢的爬虫。
    现在爬虫都是单机只访问几页,iptables 基本没有方案可以防住。
    plmsuper8
        26
    plmsuper8  
       2022-02-18 21:01:25 +08:00
    看到怀疑的扔假数据去
    justs0o
        27
    justs0o  
       2022-02-18 21:02:20 +08:00
    herozzm
        29
    herozzm  
    OP
       2022-02-18 21:08:21 +08:00
    @plmsuper8 没法怀疑啊,我能看出是爬虫就是网站没有啥流量,突然来了,固定的频率才看出来是爬虫
    cybird
        30
    cybird  
       2022-02-18 21:08:50 +08:00
    @Puteulanus TLS 指纹效果不大,有代理可以完美绕过
    des
        31
    des  
       2022-02-18 21:14:39 +08:00 via iPhone
    提供个思路,webrtc 检测 ip ,检测通过了才给访问。顺便用 websocket 检测是否有代理
    Borch
        32
    Borch  
       2022-02-18 21:14:54 +08:00
    @herozzm 可以统计下重复率,代理池要钱的,数量足够大没那么便宜的,封到它得不偿失
    Borch
        33
    Borch  
       2022-02-18 21:15:41 +08:00
    @vanton ip 代理池要钱的,封到对方不想花钱买 ip 爬了
    Juszoe
        34
    Juszoe  
       2022-02-18 21:15:43 +08:00
    只限注册用户访问,同时提高注册成本,比如验证码,或者接入第三方登录,把风控交给大厂来解决。看样子对方下了不少的成本来爬,看来你的数据挺值钱呀
    abc8678
        35
    abc8678  
       2022-02-18 21:16:35 +08:00 via Android   ❤️ 1
    @DeWjjj 我以前用第三方工具,多线程下载视频。结果后来,网页不能看视频了,video 标签消失,下半部分的分享栏的排版错乱。是这两个网站:哔哩哔哩、YouTube
    des
        36
    des  
       2022-02-18 21:16:57 +08:00 via iPhone
    另外不要自动封禁,不定时批量封 ip
    要让对方觉得你是手工处理的
    herozzm
        37
    herozzm  
    OP
       2022-02-18 21:19:35 +08:00   ❤️ 1
    @Juszoe 某查查都来爬数据,真是长见识了
    0ZXYDDu796nVCFxq
        38
    0ZXYDDu796nVCFxq  
       2022-02-18 21:19:42 +08:00 via Android
    加验证
    点几个字或者移动到相应位置
    herozzm
        39
    herozzm  
    OP
       2022-02-18 21:20:51 +08:00
    @gstqc 我还想给搜索引擎的蜘蛛数据呢
    vanton
        40
    vanton  
       2022-02-18 21:24:27 +08:00
    @Borch #33

    ip 超级便宜,绝对白菜价。
    1000 块钱爬你能爬到你怀疑人生。
    seakingii
        41
    seakingii  
       2022-02-18 21:31:45 +08:00
    @vanton 有没有国外的便宜代理 IP?
    Borch
        42
    Borch  
       2022-02-18 21:42:01 +08:00
    @vanton 我去年拿市场上的 ip 代理池服务搞过 ddos 和 ddos 防护测试,只能说封得够快的话,那玩意量大烧钱。
    Borch
        43
    Borch  
       2022-02-18 21:49:09 +08:00
    突然想起来之前在 v 站看的这个了:做了一个基于 JavaScript VMP 的滑动验证系统 www.v2ex.com/t/828470
    jiangzm
        44
    jiangzm  
       2022-02-18 21:56:08 +08:00
    vid, uid, ip, waf
    dbow
        45
    dbow  
       2022-02-18 21:56:36 +08:00
    经验谈,封上 1000w ip 就好了。
    sodora
        46
    sodora  
       2022-02-18 21:58:30 +08:00 via Android
    把网站接入微信二维码扫描登录
    opengps
        47
    opengps  
       2022-02-18 22:08:20 +08:00 via Android
    验证码拦截
    luckykong
        48
    luckykong  
       2022-02-18 22:40:27 +08:00
    @herozzm 如果确定平时没啥流量,干脆关几天,避避风头喽。。
    或者给爬虫喂点“屎”
    fisherman0459
        49
    fisherman0459  
       2022-02-18 22:43:04 +08:00   ❤️ 1
    用字体反爬给爬虫喂点“屎”
    参考天眼企查猫眼这些
    DeWjjj
        50
    DeWjjj  
       2022-02-18 23:05:08 +08:00
    随机加验证码拦截,每次都不输入就降级。
    多次不输入,直接 BAN 了。
    要么就服务器生成信息丢给客户机,然后在爬虫访问最多的网页上面+上传信息。
    假信息或者快速访问,直接 ban 一天。
    ch2
        51
    ch2  
       2022-02-19 00:04:53 +08:00
    @Borch 有隧道代理,一分钟换一个 ip 很简单的
    a132811
        52
    a132811  
       2022-02-19 00:42:52 +08:00
    @herozzm 将部分文字转换成图片,文字扭曲变形

    话说,你怎么识别出某查查的?这个访问特征不可以作为封禁指标么?
    Brian1900
        53
    Brian1900  
       2022-02-19 04:06:33 +08:00
    字体反爬,验证码反爬,提高爬虫的难度和成本,要是这样对方依旧财大气粗那就无解了
    locoz
        54
    locoz  
       2022-02-19 04:11:40 +08:00
    如果你这数据值钱,那就搞成付费可见,否则只要效益高于采集的成本就总会有人解决掉你的反爬措施,对抗本质上只是互相烧钱而已,对你来说并没有啥意义;而如果数据不值钱,甚至可以公开给搜索引擎索引,那你管它干啥呢?
    nonwill
        55
    nonwill  
       2022-02-19 04:13:36 +08:00
    接入 cloudflare ,让 它们 随便搞
    MoeMoesakura
        56
    MoeMoesakura  
       2022-02-19 07:31:06 +08:00
    @des 要是遇到正常访问者强制禁用 webrtc 怎么办(或者这个爬虫是 headless chrome ,能正常加载 webrtc ?)
    zqx
        57
    zqx  
       2022-02-19 08:33:39 +08:00 via Android
    禁止无头浏览器访问,关注微信公众号给一个密码,输入密码解锁。
    nbjbsjb
        58
    nbjbsjb  
       2022-02-19 08:47:49 +08:00 via Android
    @locoz 握爪,说了我想说的
    ZE3kr
        59
    ZE3kr  
       2022-02-19 09:07:48 +08:00
    acbot
        60
    acbot  
       2022-02-19 09:29:47 +08:00
    1. 在网络层面: 国外,国内运营商 IDC ,国内各个云的 IP 段全封,只保留家宽段和手机段,如果在保留的这些段中发现了直接将该 IP 按市或者省大段封,或者市把这些跳转到随机验证页面。
    2. 网站本身:应该考虑随机验证手段。
    Chism
        61
    Chism  
       2022-02-19 09:41:05 +08:00 via Android
    内容登陆可见,判断登陆的 loginToken 和 IP 挂钩,IP 变了就自动退出登陆,同一个账号密码短期登录多次需要 js 滑动验证码或者手机邮箱验证码。
    22too
        62
    22too  
       2022-02-19 10:14:26 +08:00
    cloudflare 接入吧。
    或者只让登录可见,对登录用户访问频次限制。
    herozzm
        63
    herozzm  
    OP
       2022-02-19 10:51:32 +08:00   ❤️ 1
    @a132811 我直接打开某查查的某条内容,里面有我网站留的尾巴链接
    herozzm
        64
    herozzm  
    OP
       2022-02-19 10:53:44 +08:00   ❤️ 1
    @locoz 被人恶意爬取,我开了 cdn ,无用流量烧钱啊
    wbrobot
        65
    wbrobot  
       2022-02-19 11:11:15 +08:00
    @herozzm 你自己都说特征了,没有来路直接返回到其中一个固定内容页(如果 404 或者返回主页会被他很快发现)。
    gen900
        66
    gen900  
       2022-02-19 11:32:29 +08:00 via iPhone
    如果是重要信息一定要加登录,登录用户才能访问。
    之后限制用户访问频率就行了
    raptor
        67
    raptor  
       2022-02-19 11:35:51 +08:00
    登录可见,token 绑定 IP 和浏览器信息(不止 UA ,还有很多其它信息,比如屏幕分辨率什么的),增加用户注册成本,比如绑定手机什么的
    ctro15547
        68
    ctro15547  
       2022-02-19 11:36:34 +08:00
    都用无头浏览器了,那验证码那些只是增加点成本 滑块也只是多加个函数的问题
    有参数可以绕过服务器对浏览器是不是自动化的检测
    弄成登录可见,从账号 IP 关联上想办法限制
    或者前面老兄说的 随机文字转图片,恶心下对面
    lizhenda
        69
    lizhenda  
       2022-02-19 11:37:11 +08:00
    字体反扒,参考大众点评
    locoz
        70
    locoz  
       2022-02-19 12:21:04 +08:00
    @herozzm #64 那就是单纯运营模式的问题了,建议还是考虑弄成付费可见,大家都省事,你还能直接获得收益
    locoz
        71
    locoz  
       2022-02-19 12:22:52 +08:00
    @herozzm #64 如果没啥价值,只是你自己开个网站玩,那直接换免费 CDN 承载也是个可以考虑的选择
    daokedao
        72
    daokedao  
       2022-02-19 12:56:05 +08:00
    思路就是把文字变成图形
    IvanLi127
        73
    IvanLi127  
       2022-02-19 14:05:16 +08:00
    要不你直接这两天把所有访问你站的 IP 都给 ban 了?反正平常没多少流量。。直接 ban 了再说?
    我觉得你直接加人机验证,新 IP 先过一次人机验证,做不对就 ban 掉。另外给搜索引擎和你们自己的 IP 地址加白名单。
    keyword233
        74
    keyword233  
       2022-02-19 14:10:42 +08:00
    加验证码直接解决问题啊
    jerryjhou
        75
    jerryjhou  
       2022-02-19 17:08:33 +08:00 via iPad
    @acbot 这样整正常流量都没了,LZ 不说网站干什么用的就很可疑
    wxhanxiao1567
        76
    wxhanxiao1567  
       2022-02-19 17:42:49 +08:00
    什么网站啊
    acbot
        77
    acbot  
       2022-02-19 18:14:09 +08:00
    @jerryjhou “... 只保留家宽段和手机段,如果在保留的这些段中发现了直接将该 IP 按市或者省大段封,或者市把这些跳转到随机验证页面 ...” 现阶段大多数地方家宽都已经是 NAT 非公网模式了,所以一般爬虫不会在这些家宽网段中,爬虫大多是在非家宽段,少量地区家宽段封了也就封了,不影响大局。 另外 如果你觉得这些用户也很重要那么就把这些段的用户跳转到爬虫验证
    xabcstack
        78
    xabcstack  
       2022-02-19 18:17:46 +08:00
    为什么要歧视爬虫,爬虫也有访问网络的权利啊 😄
    yankebupt
        79
    yankebupt  
       2022-02-19 19:10:46 +08:00
    给爬虫一次机会的话 robots.txt ,毕竟 google 或搜索引擎也要爬
    要说对于模拟正常用户的虫还不好办容易误杀,
    对于每 ip/ua 就 1-2 个页面这种上古级池子最好办了 新 viewer ( ua 或 ip )需要一次验证码,之后发个 cookie token  有虫的话整个 C 段 24 小时强验证,就不是对方有多少个 ip 的问题了,看他有多少个 C 段吧
    ipv6 回头再说
    话说要不是 cloudflare 国内不友好哪用得着那么麻烦
    ffgrinder
        80
    ffgrinder  
       2022-02-19 19:16:48 +08:00 via iPhone
    说到爬虫,我觉得美团挺厉害的,自己弄了一套字体?看起来都是汉字,复制下来都是乱码……
    tickwongcn
        81
    tickwongcn  
       2022-02-20 01:44:39 +08:00
    可以直接上 cloudflare ,设置防火墙规则。
    kingfalse
        82
    kingfalse  
       2022-02-20 20:31:34 +08:00
    cf 在国内没节点,上了干啥,至于 IP,,,,爬虫代理 IP 很便宜的,价格低的离谱,而且短效 IP 价格更低,一个有效期几分钟,也就加限制单 IP 频率有点用,我就是做这个的
    iqoo
        83
    iqoo  
       2022-02-20 21:25:59 +08:00
    完美的方案肯定不会免费分享,能分享的基本不是好方案
    ClarkAbe
        84
    ClarkAbe  
       2022-02-21 08:52:09 +08:00
    原来他们的信息也是在这种小网站上查的啊........别说了,看到这网站我也想爬了.......
    RickyC
        85
    RickyC  
       2022-02-21 14:07:55 +08:00
    加验证码。你看头条和 web 版抖音都有验证码。
    dzdh
        86
    dzdh  
       2022-04-27 12:57:46 +08:00
    @herozzm #39 可以开白 ip ,有公开的 ip 段,要不各种 waf 都把爬虫封干净了。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5738 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 33ms · UTC 03:04 · PVG 11:04 · LAX 19:04 · JFK 22:04
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.