使用 Puppeteer 破解知乎滑块验证码

马尚
• 阅读 42

我们将使用 Puppeteer(一个基于 Chrome 的 Node.js 库)来自动填写知乎的账号和密码,并尝试破解知乎的滑块验证码。

首先,我们需要安装 Puppeteer:

bash

npm install puppeteer 接下来,创建一个新的 Node.js 文件,例如 zhihu_captcha_crack.js,并编写以下代码:

javascript

const puppeteer = require('puppeteer');

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

// 打开知乎登录页面 await page.goto('https://www.zhihu.com/signin');

// 等待账号输入框出现并输入账号 await page.waitForSelector('.SignFlow-accountInput.Input-wrapper input[name="username"]'); await page.type('.SignFlow-accountInput.Input-wrapper input[name="username"]', 'your_username');

// 输入密码 await page.type('.SignFlow-password input[name="password"]', 'your_password');

// 点击登录按钮 await page.click('.Button.SignFlow-submitButton.Button--primary.Button--blue');

// 等待页面跳转 await page.waitForNavigation();

// 处理验证码图片并获取滑动距离 const distance = await handleCaptcha(page);

// 模拟拖拽滑块 await dragSlider(page, distance);

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

async function handleCaptcha(page) { // 等待验证码图片出现 await page.waitForSelector('.Captcha-englishImg');

// 获取验证码图片 const sliderImage = await page.evaluate(() => { const slider = document.querySelector('.Captcha-englishImg'); const style = window.getComputedStyle(slider); return style.backgroundImage.slice(4, -1).replace(/"/g, ""); });

// 创建画布并绘制验证码图片 const canvas = await page.evaluate(() => { const canvas = document.createElement('canvas'); const slider = document.querySelector('.Captcha-englishImg'); const style = window.getComputedStyle(slider); canvas.width = parseInt(style.width, 10); canvas.height = parseInt(style.height, 10); return canvas; });

// 获取上下文并绘制图片 const ctx = canvas.getContext('2d'); const image = await page.evaluate((sliderImage) => { return new Promise((resolve, reject) => { const img = new Image(); img.onload = () => resolve(img); img.onerror = reject; img.src = sliderImage; }); }, sliderImage);

ctx.drawImage(image, 0, 0);

// 获取滑块距离 // 这部分代码需要根据具体情况编写 const distance = 100; // 这里只是一个示例,实际需要根据验证码的特征计算距离 return distance; }

async function dragSlider(page, distance) { // 模拟拖拽滑块 // 这部分代码需要根据具体情况编写 // 示例中使用固定距离进行拖拽,实际应根据计算得到的距离进行拖拽操作 await page.mouse.move(100, 100); await page.mouse.down(); await page.mouse.move(100 + distance, 100, { steps: 100 }); await page.mouse.up(); } 更多内容联系q1436423940

点赞
收藏
评论区
推荐文章
samzhangjy samzhangjy
2年前
知乎文章转Markdown的艰辛历程
好吧,让我们从头说起。众所不周知,我有了我自己的博客,于是就想把我的知乎内容同步到博客上去(目前还空空如也)。但是,出于能犯懒就犯懒的原则,我决定做一个自动化程序,自动将知乎上的文章转换成Markdown食用。嗯……结果还挺满意的,就是好像时间耗费的长了一点(三个月啊,中间搁置了两个月零30天)。。总之,我Python爬虫,成功构建了一个知乎2MD全自动转换
何婆子 何婆子
3个月前
Node.js仿知乎服务端-深入理解RESTful API
Node.js仿知乎服务端深入理解RESTfulAPIdownload》https://chaoxingit.com/422/RESTfulAPI是一种设计风格,用于构建可伸缩、灵活且易于维护的网络服务。在本文中,我们将使用Node.js来仿制知乎的服务端
乐和 乐和
1个月前
全面升级!Vue3 + TS 仿知乎专栏企业级项目「完结无密」
全面升级!Vue3TS仿知乎专栏企业级项目「完结无密」download》shanxueit.com/239/用Vue3TS写一篇仿知乎专栏企业级项目的代码首先,确保你已经安装了VueCLI,然后创建一个新的Vue项目:bashvuecreatezhih
乐和 乐和
1个月前
知乎AI大模型全栈工程师3期
知乎AI大模型全栈工程师3期download》chaoxingit.com/5010/知乎AI大模型全栈工程师:从入门到精通随着人工智能技术的不断发展,AI大模型已经成为当今最热门的技术领域之一。作为知乎AI大模型全栈工程师,我们将深入探讨如何从入门到精通
马尚 马尚
1个月前
破解人机验证:如何应对极验滑块验证码
极验滑块验证码是一种常见的人机验证机制,它通过要求用户在拖动滑块到特定位置来验证用户的人类身份。在这篇文章中,我们将介绍如何破解极验滑块验证码,以便于自动化程序能够绕过这种验证。1.获取验证码图片首先,我们需要从目标网站获取极验滑块验证码的图片。通常,这个
马尚 马尚
3星期前
滑块验证码破解
滑块验证码是一种常见的人机验证方式,通过移动滑块来验证用户身份。本文将介绍如何使用Python实现滑块验证码的破解,包括轨迹生成、滑块位置识别等步骤。1.安装所需库确保已经安装了以下Python库:bashpipinstallopencvpythonnum
马尚 马尚
3星期前
滑块验证码破解
滑块验证码是一种常见的人机验证方式,通过移动滑块来验证用户身份。本文将介绍如何使用Python实现滑块验证码的破解,包括轨迹生成、滑块位置识别等步骤。1.安装所需库确保已经安装了以下Python库:bashpipinstallopencvpythonnum
马尚 马尚
2星期前
使用Puppeteer破解滑块验证码:掘金网站登录案例
本文通过前端技术Puppeteer来实现自动化操作,CanvasAPI实现简单的图像识别,计算滑块需要滑动距离,实现一个高效且识别概率很高的破解方案。快速上手PuppeteerPuppeteer是一个Node库,提供了一组用来操作Chrome或Chromi
马尚 马尚
2星期前
使用 Puppeteer 破解滑块验证码
在网络世界中,滑块验证码已经成为了常见的登录验证手段之一。本文将以掘金网站为例,通过前端技术Puppeteer实现自动化操作,使用CanvasAPI对验证码图片进行处理,识别出滑块的位置,并模拟拖拽滑块,实现一个高效且识别概率很高的破解方案。1.准备工作首
崇恩圣帝 崇恩圣帝
1星期前
滑动验证码识别
在本文中,我们将使用JavaScript语言结合Puppeteer库来实现极验滑动验证码的自动识别和验证过程。通过模拟用户的行为,我们可以有效地应对极验滑动验证码的挑战。准备工作在开始之前,请确保已经安装了Node.js环境,并通过npm安装了Puppet