V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
zhouyin
V2EX  ›  程序员

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

  •  
  •   zhouyin · 190 天前 · 1241 次点击
    这是一个创建于 190 天前的主题,其中的信息可能已经有所发展或是发生改变。

    captcha

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

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

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

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

    有什么便宜的国内代理机器推荐没?
    Tink
        11
    Tink  
       190 天前
    我用 selenium 做过,使用 ddddocr 获取拖动坐标,然后操作鼠标拖动
    zhouyin
        12
    zhouyin  
    OP
       190 天前 via Android
    @Tink
    谷歌那种无法破解
    Tink
        13
    Tink  
       190 天前
    @zhouyin 谷歌的没试过,微博的可以
    FAQ00Ah
        14
    FAQ00Ah  
       189 天前
    啥时候解决了源码发一下
    hjaycee
        15
    hjaycee  
       189 天前
    谷歌上搜下 captcha ,多的是代打码平台
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1060 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 21ms · UTC 22:21 · PVG 06:21 · LAX 14:21 · JFK 17:21
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.