解密极验滑块验证码的w参数

2024-04-07 21:36

本文主要是介绍解密极验滑块验证码的w参数,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

一、极验请求分析
滑块测试网站入口

我们首先访问极验滑块验证码测试主页,以便获取后续请求中的url。

滑块验证过程抓包

通过抓包工具分析滑块验证过程,发现与第三代滑块验证码相比,第四代简化了验证过程,加密参数w的生成也变得简单了。

请求详解

adaptive-captcha-demo

请求介绍:极验第四代验证码测试主页,主要获取下个请求中的url。

请求参数:无。

请求响应:通过正则匹配下个请求的url。

adaptive-captcha-demo.js

请求介绍:获取w参数加密所需的参数captchaId。

请求参数:无。

请求响应:通过正则匹配captchaId参数的值。

load

请求介绍:获取验证码信息,包括验证码类型、背景图、滑块图等。

请求参数:captcha_id、challenge等。

请求响应:获取滑块轨迹等信息。

verify

请求介绍:极验验证请求,收集滑动轨迹,加密生成w参数。

请求参数:captcha_id、challenge、lot_number等。

请求响应:验证成功后获取seccode。

二、js破解前准备工作
gcaptcha4.js反混淆

通过AST语法树将混淆的gcaptcha4.js文件还原,以便后续分析。

找到w参数

在进一步分析w参数生成之前,我们需要找到w参数所在的位置,并准备好所需的函数和算法。

三、具体代码实现

from Crypto.Cipher import AES
import base64
import random
import hashlib

# AES解密函数
def decrypt_aes(w, key):
    cipher = AES.new(key, AES.MODE_ECB)
    decrypted = cipher.decrypt(base64.b64decode(w))
    return decrypted.decode('utf-8')

# 外部函数调用解密函数
def get_h(e, t):
    # 外部函数内部实现,需要根据实际情况填写
    pass

# 构造UUID函数
def uuid():
    # UUID生成函数实现,例如通过随机数生成
    return str(uuid.uuid1())

# 加密函数
def encrypt(e, t):
    # 加密函数内部实现,需要根据实际情况填写
    pass

# 获取lot_number
def get_lot_number():
    # 从上个请求响应中获取lot_number值
    return "4b4ef3e583444e0fb..."

# 获取w参数
def get_w(track, captcha_width):
    e = construct_e(track, captcha_width)
    lot_number = e["lot_number"]
    key = hashlib.md5(lot_number.encode()).digest()
    h = get_h(e, key)
    return encrypt(e, h)

# 其他辅助函数和对象构造函数等...

# 使用示例
if __name__ == "__main__":
    # 待解密的参数
    w = "c742e66584e3b20ad523c2ddff..."
    # AES解密所需的密钥,长度必须是16、24或32字节
    key = b"my_secret_key_1234"  # 示例密钥,需根据实际情况更改
    # 调用解密函数
    decrypted_w = decrypt_aes(w, key)
    # 打印解密后的参数
    print("Decrypted w parameter:", decrypted_w)

更多内容访问网站

这篇关于解密极验滑块验证码的w参数的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/883733

相关文章

Python自动化处理手机验证码

《Python自动化处理手机验证码》手机验证码是一种常见的身份验证手段,广泛应用于用户注册、登录、交易确认等场景,下面我们来看看如何使用Python自动化处理手机验证码吧... 目录一、获取手机验证码1.1 通过短信接收验证码1.2 使用第三方短信接收服务1.3 使用ADB读取手机短信1.4 通过API获取

Python爬虫selenium验证之中文识别点选+图片验证码案例(最新推荐)

《Python爬虫selenium验证之中文识别点选+图片验证码案例(最新推荐)》本文介绍了如何使用Python和Selenium结合ddddocr库实现图片验证码的识别和点击功能,感兴趣的朋友一起看... 目录1.获取图片2.目标识别3.背景坐标识别3.1 ddddocr3.2 打码平台4.坐标点击5.图

Java通过反射获取方法参数名的方式小结

《Java通过反射获取方法参数名的方式小结》这篇文章主要为大家详细介绍了Java如何通过反射获取方法参数名的方式,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录1、前言2、解决方式方式2.1: 添加编译参数配置 -parameters方式2.2: 使用Spring的内部工具类 -

Python调用另一个py文件并传递参数常见的方法及其应用场景

《Python调用另一个py文件并传递参数常见的方法及其应用场景》:本文主要介绍在Python中调用另一个py文件并传递参数的几种常见方法,包括使用import语句、exec函数、subproce... 目录前言1. 使用import语句1.1 基本用法1.2 导入特定函数1.3 处理文件路径2. 使用ex

MySQL中时区参数time_zone解读

《MySQL中时区参数time_zone解读》MySQL时区参数time_zone用于控制系统函数和字段的DEFAULTCURRENT_TIMESTAMP属性,修改时区可能会影响timestamp类型... 目录前言1.时区参数影响2.如何设置3.字段类型选择总结前言mysql 时区参数 time_zon

Python如何使用seleniumwire接管Chrome查看控制台中参数

《Python如何使用seleniumwire接管Chrome查看控制台中参数》文章介绍了如何使用Python的seleniumwire库来接管Chrome浏览器,并通过控制台查看接口参数,本文给大家... 1、cmd打开控制台,启动谷歌并制定端口号,找不到文件的加环境变量chrome.exe --rem

Linux中Curl参数详解实践应用

《Linux中Curl参数详解实践应用》在现代网络开发和运维工作中,curl命令是一个不可或缺的工具,它是一个利用URL语法在命令行下工作的文件传输工具,支持多种协议,如HTTP、HTTPS、FTP等... 目录引言一、基础请求参数1. -X 或 --request2. -d 或 --data3. -H 或

SpringBoot整合kaptcha验证码过程(复制粘贴即可用)

《SpringBoot整合kaptcha验证码过程(复制粘贴即可用)》本文介绍了如何在SpringBoot项目中整合Kaptcha验证码实现,通过配置和编写相应的Controller、工具类以及前端页... 目录SpringBoot整合kaptcha验证码程序目录参考有两种方式在springboot中使用k

SpringBoot如何集成Kaptcha验证码

《SpringBoot如何集成Kaptcha验证码》本文介绍了如何在Java开发中使用Kaptcha生成验证码的功能,包括在pom.xml中配置依赖、在系统公共配置类中添加配置、在控制器中添加生成验证... 目录SpringBoot集成Kaptcha验证码简介实现步骤1. 在 pom.XML 配置文件中2.

详解Spring Boot接收参数的19种方式

《详解SpringBoot接收参数的19种方式》SpringBoot提供了多种注解来接收不同类型的参数,本文给大家介绍SpringBoot接收参数的19种方式,感兴趣的朋友跟随小编一起看看吧... 目录SpringBoot接受参数相关@PathVariable注解@RequestHeader注解@Reque