基于pyppeteer 破解极验滑块验证码

        本文章主要介绍 如何使用pyppeteer破解滑块验证码,主要分为3个步骤:

1.下载滑块验证码的原图和缺口图片。

2.计算缺口偏移量

3.模拟滑块滑动,并处理结果

        首先这次的目标网站是国家企业标准网:http://www.qybz.org.cn/standardProduct/toAdvancedResult.do(该网站已经改变,滑块处理逻辑还是通用)

这个网站打开的时候就有一个滑块验证码需要点击,首先是获取原图和缺口图

import asyncio
import base64

import random
import time

from parsel import Selector
from PIL import Image, ImageChops
import matplotlib.pyplot as plt
from pyppeteer import launch


async def get_pic(page):
    '''获取图片  '''
    fulljs = """
                () => { return document.getElementsByClassName("geetest_canvas_fullbg")[0].toDataURL("image/png") }
                """
    fadejs = """
                () => {  return document.getElementsByClassName("geetest_canvas_bg geetest_absolute")[0].toDataURL("image/png")}
                """
    full_img = await page.evaluate(fulljs)
    await get_decode_image(filename="./img/fullbg.png", data=full_img)
    await asyncio.sleep(0.1)
    fade_img = await page.evaluate(fadejs)
    await get_decode_image(filename="./img/fadebg.png", data=fade_img)

async def get_decode_image(filename, data):
    _, img = data.split(",")
    img = base64.b64decode(img)
    with open(filename, "wb") as f:
        f.write(img)

图片样例:

接下来就是计算缺口的距离:

async def compute_gap(img1, img2):
    plt.cla()
    img1 = Image.open(img1)
    img2 = Image.open(img2)

    # 将图片修改为RGB模式
    img1 = img1.convert(
<think>好的,我现在需要处理用户关于数美滑块证补环境配置的查询。用户希望找到相关的解决方案或教程。首先,我应该回顾提供的引用内容,看看是否有直接相关的信息。 查看引用[1],提到了使用Java、Selenium和OpenCV进行滑块证自动化,主要是通过图像处理获取位置信息。这可能和数美的滑块证有关,但用户需要的是补环境配置,而不仅仅是位置识别。补环境通常涉及模拟浏览器环境,防止被检测到自动化工具。 引用[2]和[3]似乎与主题无关,前者讲HTML5和Visual Studio配置,后者是专栏导航。因此,可能需要依赖通用知识来回答。 数美滑块的补环境配置可能包括隐藏自动化工具特征、模拟真实用户行为、处理WebSocket请求、修改浏览器指纹等。需要分步骤说明,比如环境隔离、浏览器指纹修改、行为模拟、网络请求拦截和验证码识别。可能还需要提到使用工具如Selenium Stealth、修改WebDriver属性、使用Puppeteer-extra等。 此外,用户可能需要代码示例,比如Python中使用Selenium的配置。但需注意引用中没有提供具体的数美配置,因此回答应基于通用方法,并建议参考数美官方文档或社区资源。同时,提醒法律合规性和更新频率的重要性。 最后,生成相关问题,可能涉及其他验证码解决方案、绕过检测的方法、OpenCV的应用等。</think>关于数美科技滑块证的环境配置与解决方案,根据行业通用技术方案与开发经,以下是分步骤说明的配置思路和实现方法: ### 一、环境隔离与特征隐藏 1. **浏览器指纹修改** 使用`Puppeteer-extra`插件配合`stealth-plugin`修改浏览器指纹特征: ```python from pyppeteer import launch from pyppeteer_stealth import stealth browser = await launch(headless=False) page = await browser.newPage() await stealth(page) # 自动注入反检测脚本 ``` 2. **WebDriver特征消除** 在Selenium中需移除自动化标识: ```python options.add_argument("--disable-blink-features=AutomationControlled") options.add_experimental_option("excludeSwitches", ["enable-automation"]) ``` ### 二、轨迹模拟技术 1. **人类行为模式建模** 采用贝塞尔曲线生成移动轨迹,配合随机停留点: $$ B(t) = \sum_{i=0}^n \binom{n}{i}(1-t)^{n-i}t^iP_i \quad (0 \leq t \leq 1) $$ 其中$P_i$为控制点坐标,通过三次贝塞尔曲线模拟人手抖动特征[^1]。 2. **加速度控制** 实现变速运动算法: ```python def generate_tracks(distance): tracks = [] current = 0 while current < distance: speed = random.randint(3, 5) * (1 + random.random()) current += speed tracks.append(round(speed, 2)) return tracks ``` ### 三、网络特征模拟 1. **WebSocket请求拦截** 使用中间人代理修改WebSocket握手参数: ```python from mitmproxy import http def websocket_handshake(flow: http.HTTPFlow): if "shumei" in flow.request.host: flow.request.headers["Sec-WebSocket-Key"] = generate_realistic_key() ``` 2. **TLS指纹伪装** 配置`ja3transport`修改JA3指纹: ```python import ja3transport session = ja3transport.Session(ja3_hash="771,4865-4866-4867-49195-49199...") ``` ### 四、图像识别方案 1. **缺口定位** 基于OpenCV的模板匹配改进方案: ```python import cv2 result = cv2.matchTemplate(bg_img, slice_img, cv2.TM_CCOEFF_NORMED) min_val, max_val, min_loc, max_loc = cv2.minMaxLoc(result) ``` 2. **抗干扰处理** 应用高斯模糊与边缘检测组合算法: $$ G(x,y) = \frac{1}{2\pi\sigma^2}e^{-\frac{x^2+y^2}{2\sigma^2}} \ast I(x,y) $$ 其中$\sigma$为模糊半径,$I(x,y)$为输入图像[^1]。 ### 五、特殊注意事项 1. **环境检测对抗** 需处理以下检测点: - `window.navigator.webdriver`属性 - `WebGL`渲染指纹 - 字体枚举列表 - 媒体设备指纹 2. **动态更新机制** 建议建立特征库自动更新系统,通过Hook技术实时捕获证接口的检测参数变化。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值