sxliusir
V2EX  ›  问与答

求救,怎么解决网站被恶意盗刷

  •  1
     
  •   sxliusir · 5 days ago · 1744 views

    我做了个简单的生成图片网站,有游客免费生成的功能,每个 ip 只能免费生成几次,我发现有些大批量请求是同一个人生成的,但是 ip 却都不同

    22 replies    2026-07-16 13:58:41 +08:00
    shuiduoduo
        1
    shuiduoduo  
       5 days ago via iPhone
    加盾
    BlueSpace4512
        2
    BlueSpace4512  
       5 days ago
    加 cdn 拦 bot 、再加浏览器指纹关联
    googlefans
        3
    googlefans  
       5 days ago
    @BlueSpace4512 拦 bot 不把 google bing 等正规的爬虫也拦住了吗?
    orion1
        4
    orion1  
    PRO
       5 days ago
    你咋知道是同一个人生成的,把原理告诉 waf
    sxliusir
        5
    sxliusir  
    OP
       5 days ago
    判断同一人是他的 prompt 很相似,时间也很相近,大量的请求
    sxliusir
        6
    sxliusir  
    OP
       5 days ago
    加什么盾呀,详细说说呢
    humbass
        7
    humbass  
       5 days ago via Android
    绑定手机号或者微信号 每个号限制就行了。
    potatowish
        8
    potatowish  
       5 days ago via iPhone
    生成结果打上大大的水印,登录可保存去除水印版本
    davidyin
        9
    davidyin  
       5 days ago via Android
    加 recaptcha
    cnrting
        10
    cnrting  
       5 days ago via iPhone
    改成必须登录
    foryou2023
        11
    foryou2023  
       5 days ago
    国内搞成手机号登录,国外搞成谷歌邮箱登录。
    idblife
        12
    idblife  
       5 days ago via iPhone
    让 fable5 解决
    nc
        13
    nc  
       5 days ago
    加上 fingerprintjs 检测,纯客户端的,只能防普通用户薅羊毛。更彻底的是直接把机房 IP 都屏蔽掉,可以用这个库: https://github.com/NetworkCats/Merged-IP-Data
    EvanClausen
        14
    EvanClausen  
       5 days ago
    判断用户浏览器指纹+CloudFlare Turnstile 。只限制 IP 的话随便一个 IP 池代理就绕过了。
    vvong
        15
    vvong  
       5 days ago
    接 cloudflare 走 cf 的代理
    打开设置防机器人攻击 设置 Rate Limiting
    开启高强度防护
    laminux29
        16
    laminux29  
       4 days ago
    人家微软、OpenAI 、Google 、Anthropic 对这种事情都没办法,你觉得你能怎么办。
    billccn
        17
    billccn  
       4 days ago
    在开 WAF 的基础上可以试试:
    起一个 embedding 数据库,把 prompt 都跟里面搜一下,把最相似的拿出来用个简单本地模型分析一下,凡是同样请求的变体的把整个 IP 段的免费请求数将为 0
    Rache1
        18
    Rache1  
       4 days ago
    @googlefans 这些正规 bot 都有 IP 列表的,如果想要放行,把他们的 IP 段加进去就好了。

    比如:

    Google:

    https://developers.google.com/crawling/docs/crawlers-fetchers/verify-google-requests?hl=zh-cn#automatic

    Bing:

    https://www.bing.com/webmasters/help/how-to-verify-bingbot-3905dc26
    sxliusir
        19
    sxliusir  
    OP
       4 days ago
    感谢大佬们回复,昨天参考评论先加上了 IP+CloudFlare Turnstile 和 cf 的基础防机器人攻击,先观察两天后反馈效果。
    sxliusir
        20
    sxliusir  
    OP
       3 days ago
    来反馈结果了,添加了 Ip 限制和 turnstile 校验,上线后 10 个小时,结果如下:


    总请求数:148
    turnstile_verification_failed:12
    turnstile_token_required:6
    too_many_guest_generations:4


    其中这几个拦截指标的含义
    turnstile_token_required 指的是游客请求没带 Turnstile token 。一般是脚本直接 curl 调接口产生。
    turnstile_verification_failed 指的是带了 token ,但 Cloudflare siteverify 校验不通过,一般是 token 过期或者携带第一次的 token 再次请求
    too_many_guest_generations 指的是游客超过当日免费配额。

    总体拦截情况挺好的,但是发现还是有一些没有登录的相同 ip 多次请求记录,还没排查出来怎么产生的,方案不是最终的,最终加固完成会再次反馈详细拦截实现方案。ps:所有的加固方案都是 AI 完成

    同时感谢上面大佬提供的思路,
    @BlueSpace4512 @EvanClausen @Rache1 @billccn @cnrting @davidyin @foryou2023 @googlefans @humbass @idblife
    googlefans
        21
    googlefans  
       2 days ago
    直接上 waf 得了
    sxliusir
        22
    sxliusir  
    OP
       1 day ago
    加固后的网站是这个,欢迎大家试用
    https://grokimage.ai/
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   2646 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 66ms · UTC 12:21 · PVG 20:21 · LAX 05:21 · JFK 08:21
    ♥ Do have faith in what you're doing.