使用node+puppeteer破解验证码

本文讲述了如何使用Node.js和Puppeteer库来破解滑块验证码。通过实例展示了在遇到滑块验证码时,如何利用Puppeteer进行模拟操作,并提到了使用图像处理方法如模糊和二值化来提高定位精度。文中还提及了这种方法可能存在的问题及优化思路。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

之前有写过关于puppeteer的相关文章

puppeteer初探

puppeteer在开发过程中的实践

没想到你是这样的SSR

前一段时间,LZ又接到一个需求,要爬取某快递公司网站的订单数据,起初觉得不就是爬一下数据嘛,虽然nodejs玩的不是特别溜,但爬一些简单数据还是难不倒我这种战五渣的。

当我打开网站,输入数据,准备来一波页面结构分析的时候,突然间跳出来一个滑块验证码。卧槽......

WTF,你让我爬个鸟啊.....

盯着滑块验证码瞅了两天,终于我得出一个结论 滑块验证码阻止了人类文明的进步

每天早上产品笑眯眯来问我进度的时候,我的内心都是崩溃的

难受归难受,但业务还是要做的。最后,我想到了之前用puppeteer开发的模拟cas(单点登录)来解决我司某些应用在开发、测试环境自动登录的功能。现在我就以一种情况为例,来看下怎么用node+puppeteer高效的破解滑块验证码。

之前有一兄弟在掘金上写过用puppeteer破解滑块验证码, 接下来我们就用一些另外的思路去破解

这里我们也以前端网为例:

const puppeteer = require("puppeteer");
const fs = require("fs");
const path = require("path");
const pixels = require("image-pixels");
const resemble = require("resemblejs");

let page = null;
const bgImg = path.resolve(__dirname, "bg.png");
const fullbgImg = path.resolve(__dirname, "fullbg.png");

async function run() {
  const browser = await puppeteer.launch({
    headless: false
  });
  page = await browser.newPage();
    
  // 打开前端网
  await page.goto("https://www.qdfuns.com/");
  await page.waitForSelector(".hand");

  await page.click("a[data-type=login]");
  const geetest_btn = ".geetest_btn";
  await page.waitForSelector(geetest_btn);

  await page.click(geetest_btn);
  await page.waitFor(1000);
    
  // 获取滑动距离
  async function getDistance() {
  
    // 获取canvas
    let { bg, fullbg } = await page.evaluate(() => {
      const fullbg = document.querySelector(".geetest_canvas_fullbg");
      const bg = document
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值