puppeteer 如何操作需要拖动的验证码 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
zhouyin

puppeteer 如何操作需要拖动的验证码

  •  
  •   zhouyin 2024 年 5 月 8 日 2238 次点击
    这是一个创建于 718 天前的主题,其中的信息可能已经有所发展或是发生改变。

    captcha

    puppeteer 如何操作需要拖动的验证码 需要什么技术?

    15 条回复    2024-05-09 14:08:17 +08:00
    Rrrrrr
        1
    Rrrrrr  
       2024 年 5 月 8 日
    是的,Puppeteer 可以用来模拟拖动验证码。以下是一个简单的示例代码:

    ```Javascript
    const puppeteer = require('puppeteer');

    (async () => {
    const browser = await puppeteer.launch();
    const page = await browser.newPage();

    // 导航到需要拖动验证码的网页
    await page.goto('https://example.com/login');

    // 获取验证码元素
    const verficatiOnCodeElement= await page.$('#verification-code');

    // 获取验证码元素的位置信息
    const { x, y, width, height } = await verificationCodeElement.boundingBox();

    // 模拟鼠标事件,拖动验证码
    await page.mouse.move(x + width / 2, y + height / 2);
    await page.mouse.down();
    await page.mouse.move(x + width + 100, y + height / 2, { steps: 100 });
    await page.mouse.up();

    // 关闭浏览器
    await browser.close();
    })();
    ```

    这个示例代码首先启动一个新的 Puppeteer 浏览器实例,然后导航到需要拖动验证码的网页。它通过 `$()` 方法获取验证码元素,并使用 `boundingBox()` 方法获取元素的位置信息。接下来,它模拟鼠标事件,将鼠标移动到验证码元素的中心,按下鼠标,然后沿着一条路径移动鼠标并释放鼠标,从而模拟拖动验证码的过程。最后,它关闭浏览器。

    需要注意的是,这只是一个简单的示例,实际使用时可能需要根据具体的网页结构和验证码的特点进行调整。同时,也要注意不要滥用这种自动化技术,因为这可能会违反网站的使用条款。
    shadowyue
        2
    shadowyue  
       2024 年 5 月 8 日
    1#是具体技术方案,但是实际做起来应该没那么容易
    各种验证码就是为了防止自动化操作的。你一定要做,首先技术上你要能想办法知道鼠标应该动多少距离才行
    icanfork
        3
    icanfork  
       2024 年 5 月 8 日
    @Rrrrrr 还以为你是 AI 机器人,差点举报了,看了评论是真人,应该只是从 GPT 里粘贴的回复吧
    nomagick
        4
    nomagick  
       2024 年 5 月 8 日
    真人打码平台
    Rrrrrr
        5
    Rrrrrr  
       2024 年 5 月 8 日
    @belin520 #3 哈哈
    butanediol2d
        6
    butanediol2d  
       2024 年 5 月 8 日
    @belin520 粘贴 GPT 回复在 V2EX 也是不被鼓励的
    luckyscript
        7
    luckyscript  
       2024 年 5 月 8 日
    滑动验证码并不是你自动化的滑了就能验证通过了,如果是的话,那这个就不叫验证码了。。。
    我所了解到的信息:大多数的滑动验证码,在你这个用户刚进入到页面中时,就会搜集你鼠标的移动信息,这些鼠标的移动信息会上报到后台,通过机器学习的算法来判定你是否是真人。至于滑的那一下,大多数只是为了人类更方便操作而已。
    另外,Google 的验证码,你只需要打个勾就可以。
    zhouyin
        8
    zhouyin  
    OP
       2024 年 5 月 8 日
    @Rrrrrr
    谢谢了 steps 参数帮助了我
    现在有 50%的成功率了
    Rrrrrr
        9
    Rrrrrr  
       2024 年 5 月 8 日
    @butanediol2d #6 不管这些,能让人有点灵感,复制又怎样,好过没人回答
    zhouyin
        10
    zhouyin  
    OP
       2024 年 5 月 8 日
    哎呀 如果用美国机器访问网站跳出来的是 Google 验证码 就是总共 9 个图片 让你选择有自行车的图片 这真的无法破解了

    还好用中国 ip 访问 跳出来的是这个拖动的验证码

    这样子看来 还要给 puppeteer 设置一个位于中国的代理机器?

    有什么便宜的国内代理机器推荐没?
    Tink
        11
    Tink  
    PRO
       2024 年 5 月 8 日
    我用 selenium 做过,使用 ddddocr 获取拖动坐标,然后操作鼠标拖动
    zhouyin
        12
    zhouyin  
    OP
       2024 年 5 月 8 日 via Android
    @Tink
    谷歌那种无法破解
    Tink
        13
    Tink  
    PRO
       2024 年 5 月 8 日
    @zhouyin 谷歌的没试过,微博的可以
    FAQ00Ah
        14
    FAQ00Ah  
       2024 年 5 月 9 日
    啥时候解决了源码发一下
    hjaycee
        15
    hjaycee  
       2024 年 5 月 9 日
    谷歌上搜下 captcha ,多的是代打码平台
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     986 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 45ms UTC 18:16 PVG 02:16 LAX 11:16 JFK 14:16
    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