pdd滑块分析逆向

本文详细解析了拼多多滑块验证码的JS加密过程,涉及crawlerInfo、password、riskSign的处理,包括RSA加密的C函数和AES加密的L函数,以及U函数用于生成key和iv。作者提供了如何获取图片、验证滑块和轨迹的步骤,最终目标是帮助读者理解和实现滑块验证码的破解技术。
前提 此次分析我已经做出b站视频大家可以搜索 带带弟弟学爬虫 链接拼多多滑块JS逆向分析(完结)_哔哩哔哩_bilibili 可以找到此次文章的详细内容。

链接:aHR0cHM6Ly9tbXMucGluZHVvZHVvLmNvbS9sb2dpbi8/cmVkaXJlY3RVcmw9aHR0cHMlM0ElMkYlMkZtbXMucGluZHVvZHVvLmNvbSUyRg==

这些是请求图片的数据包,我们从上向下进行分析。

auth接口

1.crawlerInfo

crawlerInfo也是请求头中的Anti-Content的参数所以搞出一个就行了。

加密的位置在messagePack这里。

2.password和riskSign

直接搜索大法即可找到加密位置其实就是一个rsa加密:

a.c函数是:

 I = function(e, t) {
            if (t.passwordEncrypt)
                try {
                    var n = new i.a;
                    return n.setPublicKey(t.publicKey),
                    n.encrypt(e)
                } catch (r) {
                    Object(d.c)(r)
                }
            return e
        }

这个我们直接导入js的加密库即可

const JSEncrypt = require('node-jsencrypt');
​
// 加密函数
function encryptWithRSA(publicKey, data) {
    // 创建 JSEncrypt 实例
    const encryptor = new JSEncrypt();
​
    // 设置公钥
    encryptor.setPublicKey(publicKey);
​
    // 使用公钥加密数据
    const encryptedData = encryptor.encrypt(data);
​
    return encryptedData;
}

obtain_captcha接口

这个接口用来是用来获取图片的

`

//请求时
data = {
        "anti_content": "", //可以置空
        "verify_auth_token": token,
        "captcha_collect": ""//可以置空
    }

`

得到的图片 是base64格式 可以进一步处理成图片

user_verify接口

验证滑块和轨迹校验的接口 参数如下图:

我们之前解决了 anti_content , 而verify_auth_token是auth一步骤返回的

所以我们只需要解决 captcha_collect 和 verify_code

1.verify_code

如图所示:

c = (e.deltaRef + s / 2).toFixed(2)

分析得知:e.deltaRef 是图片滑块识别的距离(注意缩放 * 0.85 由于图片大小和实际浏览器显示比例不同) s是定值 48.75

verify_code 即可解决

2.captcha_collect

G.concat([W, N, D, H, L])

是 加密 的数组 包含轨迹等信息:

好我们接着分析 $函数:

定位到这里:

d函数:

手动解混淆

 function d(e) {
                    return c['gzip'](e, {
                        to: 'string'
                    })
                }

这里我们可以套库 也可以直接扣代码 因为他是webpack形式的 具体细节放b站了。

l函数是aes

l(e, t, n) {
                    return t && n ? o.a['encrypt'](e, a.a['parse'](t), {
                        iv: a.a['parse'](n)
                    })['toString']() : e
                }

key和iv是经过前一个数据包vc_pre_ck_b 返回的salt 经过 U函数处理 而成的

U = function(e) {
    var  A = "bN3%cH2$H1@*jCo$", W = "gl3-w^dN)3#h6E1%";
        var t = {
            aes_key: A,
            aes_iv: W
        };
        if (!e || 9 !== e.length)
            return t;
        var n = e.slice(0, 1)
          , r = e.slice(1)
          , o = r.slice(0, 4)
          , i = r.slice(4)
          , a = i.split("")
          , s = (["a", "b"].includes(n) ? A : W).slice(0, 8)
          , c = ["a", "b"].includes(n) ? "aes_key" : "aes_iv"
          , u = "";
        switch (n) {
        case "a":
        case "c":
            t[c] = s + r;
            break;
        case "b":
        case "d":
            for (var l = 0; l < 4; l++)
                u += a[o[l]];
            t[c] = s + u + i
        }
        return t
    };
​
​
console.log(U("c660e87ed"));

整合再结合轨迹即可 实现 。

效果图

### 使用 Python 实现拼多多自动回复功能 为了实现拼多多平台上的自动回复功能,通常需要借助第三方库来模拟浏览器操作或直接通过官方API进行交互。考虑到拼多多可能并未提供公开的自动化接口文档[^2],下面介绍一种基于Selenium库的方法,该方法可以用于网页版拼多多的消息自动回复。 #### 安装依赖包 首先安装必要的Python库: ```bash pip install selenium webdriver_manager ``` #### 编写脚本 创建一个简单的Python脚本来登录并监控消息: ```python from selenium import webdriver from selenium.webdriver.common.by import By from selenium.webdriver.chrome.service import Service as ChromeService from webdriver_manager.chrome import ChromeDriverManager import time def login_pdd(driver, username, password): driver.get('https://mms.pinduoduo.com/official/index.html#/login') # 填入用户名密码(此处仅为示意) user_input = driver.find_element(By.NAME, "username") pass_input = driver.find_element(By.NAME, "password") user_input.send_keys(username) pass_input.send_keys(password) submit_button = driver.find_element(By.CLASS_NAME, 'submit-btn') submit_button.click() def auto_reply(driver, reply_message="感谢您的支持"): while True: try: messages = driver.find_elements(By.CSS_SELECTOR, '.message-item.unread') # 获取未读消息列表 for message in messages: message.click() text_area = driver.find_element(By.ID, 'input-message') send_btn = driver.find_element(By.XPATH, '//button[@type="submit"]') text_area.clear() text_area.send_keys(reply_message) send_btn.click() time.sleep(1) # 防止过快点击引起封禁风险 except Exception as e: print(f'Error occurred: {e}') finally: time.sleep(60) # 每隔一段时间检查新消息 if __name__ == '__main__': options = webdriver.ChromeOptions() service = ChromeService(executable_path=ChromeDriverManager().install()) driver = webdriver.Chrome(service=service, options=options) login_pdd(driver, '<your_username>', '<your_password>') time.sleep(5) # 登录后等待页面加载完成 auto_reply(driver) ``` 此代码片段展示了如何利用 Selenium 库控制浏览器访问拼多多商家后台,并尝试对收到的新消息执行自动回复的操作。需要注意的是,在实际应用中应当更加谨慎地处理账号安全性和合法性问题。
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值