V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
pureGirl
V2EX  ›  程序员

爬虫时有什么办法处理滑块验证等验证方法吗

  •  
  •   pureGirl · 2024-05-27 09:15:02 +08:00 · 7549 次点击
    这是一个创建于 379 天前的主题,其中的信息可能已经有所发展或是发生改变。
    58 条回复    2024-06-04 09:56:14 +08:00
    zealotxxxx
        1
    zealotxxxx  
       2024-05-27 09:20:32 +08:00
    ddddocr
    quantum00549
        2
    quantum00549  
       2024-05-27 09:20:37 +08:00
    以前用 selenium 时做过 yolo 定位检测, 然后模拟拖动鼠标, 拖动轨迹还得是变加速轨迹啥的, 但是很快发现废了半天劲, 人家滑块验证进化了, 继续投入就是无底洞, 最后的方案就是遇到滑块验证就给人发个邮件
    feiniu
        3
    feiniu  
       2024-05-27 09:22:34 +08:00
    这个滑动轨迹很难整
    DingJZ
        4
    DingJZ  
       2024-05-27 09:22:35 +08:00
    有一些云平台的,调用他们的 api
    flowerains
        5
    flowerains  
       2024-05-27 09:28:40 +08:00
    这个问题我也挺想知道的,最近很多内部系统都升级了

    不是滑块就是拼图的,整得我写程序都蓝瘦的一批
    pureGirl
        6
    pureGirl  
    OP
       2024-05-27 09:29:13 +08:00
    @quantum00549 发邮件是什么方法
    feiniu
        7
    feiniu  
       2024-05-27 09:43:20 +08:00
    发邮件是吧滑块的链接通过邮件发送给某个人,让他手动滑一下吧
    garlics
        8
    garlics  
       2024-05-27 09:47:58 +08:00
    花钱找人工打码平台
    shadowyue
        9
    shadowyue  
       2024-05-27 09:48:28 +08:00   ❤️ 1
    这种交互性验证都不太好处理。我在拼多多遇到过更逆天的,一个 3d 的骰子让你自己旋转按顺序点击上面的文字🤣太逆天了
    JohnYep
        10
    JohnYep  
       2024-05-27 09:52:02 +08:00
    JohnYep
        11
    JohnYep  
       2024-05-27 09:53:10 +08:00
    这种怎么弄呢
    burymme11
        12
    burymme11  
       2024-05-27 09:53:59 +08:00
    时应该没有吧,当时用 selenium 算坐标,模拟试了很久,匀速,加速度,定时卡顿,各种行为都模拟了,就是不行,偶尔成一次两次,无法稳定。
    daliusu
        13
    daliusu  
       2024-05-27 09:55:12 +08:00
    不是有人工验证码平台吗?我记得十几年前我做游戏脚本就有这种,但是还是人工输文字,现在没支持拖拽么
    cnfox
        14
    cnfox  
       2024-05-27 09:58:54 +08:00
    超级鹰之类的 。传给他们图片他们会返回为止 ,然后驱动浏览器内核模拟滑动区块。这是我们之前的解决方案
    cnfox
        15
    cnfox  
       2024-05-27 09:59:14 +08:00
    @cnfox #14 返回滑动距离之类的
    ZnductR0MjHvjRQ3
        16
    ZnductR0MjHvjRQ3  
       2024-05-27 10:04:15 +08:00
    你可以给图片抓出来 然后发给 gpt-4o 来处理,或者直接用三方,还有一个最笨的办法,将大量的滑块写死做成本地数据然后遇到了就去搜,没有就刷新,不过这种办法现在应该不是那么好用了
    ddczl
        17
    ddczl  
       2024-05-27 10:06:54 +08:00
    就是猫鼠游戏,在便捷性和成本上做取舍,现在我们公司大多数情况是发消息,无论是邮件还是短信。
    flyv2x
        18
    flyv2x  
       2024-05-27 10:13:07 +08:00
    @zealotxxxx 这个 ocr 还不错哦
    gaobh
        19
    gaobh  
       2024-05-27 10:18:04 +08:00
    尝试用 gpt-4o+鼠标控制+图片取帧+坐标控制来试试
    silencelixing
        20
    silencelixing  
       2024-05-27 10:26:25 +08:00
    @Motorola3
    @gaobh
    我给 4o 识别了一下楼里面的验证码所包含的文字,根本识别不出来,乱答一通,所以 4o 的方案不可行。

    marcolin18
        21
    marcolin18  
       2024-05-27 10:27:54 +08:00
    1. 在 github 上有很多基于 playwright 的滑动验证的实现,你可以看一下找找思路;
    2. 如楼上 @Motorola3 所说,结合 LLM 来处理,prompt 提示类似 “这是一张验证码图片,请帮助识别验证码类型并给出基于 XXX 的解决代码。图片的 base64 编码如下 {base64_image}”,约束解决方案,比如返回一段基于 playwright 的代码,加载环境运行。这个方案要做的丝滑可能需要打通比较多的步骤,没有基础和时间可以做了解即可。
    daysv
        22
    daysv  
       2024-05-27 10:28:30 +08:00
    @JohnYep 做过,不麻烦, 下面 ocr 识别文字, 上面先定位坐标,再切图,再处理,再识别, 之后再比对。
    还有一种是成语之类的, 就是先获取 4 个文字,然后统一多条件查找词典,找到后按权重最高的进行顺序点击。
    marcolin18
        23
    marcolin18  
       2024-05-27 10:33:23 +08:00
    @silencelixing 你给的 prompt 的问题,你要遵循一些原则。 给它完整的图片,包含验证码要求,要求它输出解决代码示例。
    JohnYep
        24
    JohnYep  
       2024-05-27 10:39:12 +08:00
    @daysv #22 有类似的案例吗
    firefox12
        25
    firefox12  
       2024-05-27 10:48:56 +08:00
    服务器端是如何验证你的滑动操作的? 有人说下吗?这个是关键啊。
    daysv
        26
    daysv  
       2024-05-27 10:55:35 +08:00
    @JohnYep 只能说生产在运行,3 次内基本都能成功
    ZnductR0MjHvjRQ3
        27
    ZnductR0MjHvjRQ3  
       2024-05-27 10:56:41 +08:00
    @silencelixing 你这种可以直接找第三方 看你这个验证码大概率是国内平台了 国内有很多平台做的 我之前用过的是极验好像
    LieEar
        28
    LieEar  
       2024-05-27 11:02:44 +08:00
    @firefox12 我之前了解的是校验滑动的距离,还有些高级的会校验轨迹(人手滑动的不是匀速)
    evan9527
        29
    evan9527  
       2024-05-27 11:07:58 +08:00
    有没有这种生意?把全世界的各种真人验证集合在一起,雇人一天 8 小时就是做各种真人验证。
    xuminzhong
        30
    xuminzhong  
       2024-05-27 11:09:33 +08:00
    滑块验证 算是比较简单一种,我们已经有处理过几个这样的网站,抖音、京东、小红书都行,
    成功率在 95%以上,反而重试 1 、2 次肯定能成功。

    现在在搞文字和图像识别的类型,这 2 类感觉比较难。
    silencelixing
        31
    silencelixing  
       2024-05-27 11:42:19 +08:00
    @marcolin18 #23 #23 能给一个成功的例子/prompt 吗 就针对楼里面的这张验证码
    JohnYep
        32
    JohnYep  
       2024-05-27 11:43:01 +08:00


    @daysv #26 试了一下感觉步骤还是有点繁琐

    1 、先识别最底下的四个汉字 [音,过,读,饭]
    2 、将上面的图片切片成小方块,缩小方块范围动态控制例如 [50*50]
    3 、识别小方块是否有汉字,有就找出对应的坐标,依次找出 [音,过,读,饭]
    4 、重复第二步骤改变切割的方块大小 [35*40] ,重新切重新识别
    5 、反复 2 、3 、4 流程直到找到所有的汉字以及对应的坐标结束流程

    感觉这样频繁调用 ocr 有点费 orc
    forty
        33
    forty  
       2024-05-27 11:45:02 +08:00
    滑块的,一般是先录制几百个手工轨迹。
    顺序点击几个文字的,ai 识别目前也不是很理想.

    我遇到 X 的验证,出个题,给几个答案图,要你选择正确的答案。题目和答案图是基于模板随机生成的。
    比如,题目:选择有 3 个石头的图,答案图里是石头混合其它物品,其中 1 个图里的石头刚好 3 个就是你要选的。
    pkoukk
        34
    pkoukk  
       2024-05-27 11:49:59 +08:00
    @evan9527 十年前就有,给游戏工作室的挂机脚本过验证的
    Wyearn
        35
    Wyearn  
       2024-05-27 12:17:15 +08:00
    @JohnYep #11 这个可以通过大模型训练,可以自动选择的。
    shiny
        36
    shiny  
       2024-05-27 12:30:54 +08:00
    现在人机识别也有不少基于机器学习的。变成了 AI 大战
    daysv
        37
    daysv  
       2024-05-27 13:26:49 +08:00
    @JohnYep ocr 服务自己的随便调,另外定位文字坐标不需要 ocr , 定位好了后才切片 ocr 。
    zzl22100048
        38
    zzl22100048  
       2024-05-27 14:43:36 +08:00
    @JohnYep #11 这种匹配类的验证码用 目标检测+相似度,不要把它当文字
    yumizhao888
        39
    yumizhao888  
       2024-05-27 14:50:01 +08:00
    这些都是钱,搞定了搞成接口给别人调用,以前是 1000 个 10 块钱左右。
    marcolin18
        40
    marcolin18  
       2024-05-27 15:23:09 +08:00
    @silencelixing 我好像回不了图片和太长的文字,v 站新号。
    quantum00549
        41
    quantum00549  
       2024-05-27 15:30:57 +08:00
    @pureGirl 收到通知就赶紧去手动处理下😄
    JensenQian
        42
    JensenQian  
       2024-05-27 15:31:46 +08:00
    经典的小老鼠吃奶酪
    [img][/img]
    marcolin18
        43
    marcolin18  
       2024-05-27 15:32:55 +08:00
    @yumizhao888 #39 人工打码目前来说确实还是相对有效便宜的。
    shinsekai
        44
    shinsekai  
       2024-05-27 15:34:08 +08:00
    比如人工分布式验证?
    JohnYep
        45
    JohnYep  
       2024-05-27 15:35:55 +08:00
    @zzl22100048 #38 找不道好的思路
    gauthier
        46
    gauthier  
       2024-05-27 15:36:58 +08:00
    滑块还算比较简单了,用深度学习整个小模型识别缺口位置。指针滑动我还真不知道咋整,我搞过的有漏洞,速度快就能成了。
    zzl22100048
        47
    zzl22100048  
       2024-05-27 15:46:44 +08:00
    @JohnYep #45
    这验证码是工信部的吧
    github 上有人训练好了
    yjfkk
        48
    yjfkk  
       2024-05-27 16:15:37 +08:00
    没有,斗不过大公司,他们有整个团队。
    可以换个思路,爬虫一般在浏览器启动的时候,不新启浏览器,可以用登录浏览器实例进行爬取。我用 playwright 框架有 https://playwright.dev/python/docs/api/class-browser#browser-new-browser-cdp-session 方法,缺点是无法大批量执行。
    buerle
        49
    buerle  
       2024-05-27 18:32:53 +08:00
    通过 puppeteer nginx 代理注入自动化 js ,提前分析获取滑块背景图 & 滑块图片,拿到图片通过 API 接口,提交图片 opencv 的库(网上应该有案例)的服务去匹配图片需要移动坐标的位置。之前开过 1000+的账号实例测试,验证过效果应该还行。
    JohnYep
        50
    JohnYep  
       2024-05-27 19:42:46 +08:00
    @zzl22100048 #47 是的确实是工信部的,github 上有吗,我咋没找到呢
    luzihang
        51
    luzihang  
       2024-05-27 19:51:08 +08:00
    图鉴买个模型服务,解决
    luzihang
        52
    luzihang  
       2024-05-27 19:51:37 +08:00
    或者自研模型,和 gpt 一个逻辑。买 api 还是自己训练模型
    ducuducu
        53
    ducuducu  
       2024-05-27 20:05:23 +08:00
    ui 自动化
    Blanke
        54
    Blanke  
       2024-05-27 23:17:40 +08:00
    只说滑块,其他研究得少。缺口很容易,一般 opencv 就行,主要是参数加密,思路是逆向,分析参数,有些不是轨迹有问题,而是环境,大部分后端都是综合判断,猜测是 ai 或模型判断。分析所有参数后,可以还原算法或者 rpc 配合等。比如 ali tx007 jiyan 等都能按这个思路搞。
    SuperXX
        55
    SuperXX  
       2024-05-28 05:51:12 +08:00 via iPhone
    昨天碰到 EPICGAME 的滑动验证码, 请在下面 9 个图像中选择出价格最贵的….
    pureGirl
        56
    pureGirl  
    OP
       2024-05-28 10:02:25 +08:00
    @yjfkk 试了一下也不太行,登录过了,后面还是会有验证
    yjfkk
        57
    yjfkk  
       2024-05-28 11:06:15 +08:00
    @pureGirl ai 投入太大,长期数据才值得投入研究,短期的就搞个通知,人工通过验证,然后用 UI 自动化在页面上操作。
    yjfkk
        58
    yjfkk  
       2024-06-04 09:56:14 +08:00
    来挖坟,看到一个解决方案,需要花钱: https://2captcha.com/
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1064 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 34ms · UTC 19:01 · PVG 03:01 · LAX 12:01 · JFK 15:01
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.