Eswlnk Blog Eswlnk Blog
  • 资源
    • 精彩视频
    • 破解专区
      • WHMCS
      • WordPress主题
      • WordPress插件
    • 其他分享
    • 极惠VPS
    • PDF资源
  • 关于我
    • 论文阅读
    • 关于本站
    • 通知
    • 左邻右舍
    • 玩物志趣
    • 日志
    • 专题
  • 热议话题
    • 游戏资讯
  • 红黑
    • 渗透分析
    • 攻防对抗
    • 代码发布
  • 自主研发
    • 知识库
    • 插件
      • ToolBox
      • HotSpot AI 热点创作
    • 区块
    • 快乐屋
  • 乱步
    • 文章榜单
    • 热门标签
  • 问答中心反馈
  • 注册
  • 登录
首页 › 代码发布 › 「技术分享」解密凡科网滑块验证:逆向JS、base64解码与Selenium应用 › 评论页 1

「技术分享」解密凡科网滑块验证:逆向JS、base64解码与Selenium应用

Eswlnk的头像
Eswlnk
2024-04-26 13:03:34
「技术分享」解密凡科网滑块验证:逆向JS、base64解码与Selenium应用-Eswlnk Blog
智能摘要 AI
作者分享了凡科网JS逆向中的闭包技巧,并通过多次请求触发滑块验证。由于无法直接获取图片,转而使用Selenium模拟登录,获取滑块和底图的Base64编码,解码后存储为图片。通过OpenCV进行图像匹配,计算出滑块位置,并模拟人工滑动完成验证。文章总结了滑块验证的优化方向,如提升匹配速度和模拟真实滑动轨迹,并指出爬虫中仍存在诸多限制。

前提和大概思路概述

只是学习的途中有一些新的发现,分享给大家,希望对你们有帮助。

凡科网的JS逆向的闭包技巧应该是典型的闭包案例,很多人都有讲解,这里只做一个粗略介绍。

正常完成逆向之后,进行模拟登录,好像是因为我的多次请求,出现了滑块验证。

「技术分享」解密凡科网滑块验证:逆向JS、base64解码与Selenium应用-Eswlnk Blog
「技术分享」解密凡科网滑块验证:逆向JS、base64解码与Selenium应用-Eswlnk Blog

先要做的是拿到底图和完整图或者滑块,但凡科网的这里只能找到图片base64伪加密后的imgId和sliderId,发起对应请求想得到后解码,奈何自己实在试过一堆法子,一直请求失败,无奈下换用selenium做模拟登录,重要的还是做滑块的思路嘛(实际还是自己实力不够–)

「技术分享」解密凡科网滑块验证:逆向JS、base64解码与Selenium应用-Eswlnk Blog
{'success': False, 'msg': {'dealType': 1, 'capErrno': -2}}
「技术分享」解密凡科网滑块验证:逆向JS、base64解码与Selenium应用-Eswlnk Blog

转换思路selenium和验证滑块图片的获取处理

用到的库:

from selenium.webdriver import Chrome
import time
import requests
from selenium.webdriver.common.action_chains import ActionChains
import base64
import numpy as np
import cv2 as cv

先模拟登录一下试试:

# ***中输入你的账号和密码
web = Chrome()
web.get('https://i.fkw.com/')
time.sleep(1)
web.find_element_by_xpath('//*[@id="loginCacct"]').send_keys('***')
web.find_element_by_xpath('//*[@id="loginPwd"]').send_keys('***')
time.sleep(1)
web.find_element_by_xpath('//*[@id="login_button"]').click()
time.sleep(2)

好家伙一下子就进去了,可毕竟咱们是长见识为主,所以咱拿错误的账号密码来做试验(正确的重复多次登录后也会出现)。

现在的重点主要是获取到对应的图片base64编码后的数据,在进行解码,存储图片。(注意只需要base64后的数据,要对数据做一定处理)

「技术分享」解密凡科网滑块验证:逆向JS、base64解码与Selenium应用-Eswlnk Blog
ImgId_str = web.find_element_by_xpath('/html/body/div[4]/div/div[2]/div/div/div[3]/div/div[1]/div[1]/img[1]').get_attribute('src')
ImgId = '/' + ImgId_str.strip('data:image/jpeg;base64,')
sliderId_str = web.find_element_by_xpath('/html/body/div[4]/div/div[2]/div/div/div[3]/div/div[1]/div[1]/img[2]').get_attribute('src')
sliderId = 'i' + sliderId_str.lstrip('data:image/jpeg;base64,')

发现得到的这大串玩意,看起来蛮爽。开始解码,好像规则里的整除加=不是很有作用,我试了试加不加都可以(可能是我忽略了细节),把滑块和底图都存储起来。

def decode_base64(strs,i):
    if(len(strs)%4 == 1):
        strs += "==="
    elif(len(strs)%4 == 2):
        strs += '=='
    elif(len(strs)%4 == 3):
        strs += '='
    imgdata = base64.b64decode(strs)
    file = open(f'{i}.jpg','wb')
    file.write(imgdata)
    file.close()

用cv.TM_CCOEFF_NORMED算法进行精度匹配,将一维位置转换为二维位置,得到x,y的坐标。

Img_ = cv.imread('1.jpg')
slider_ = cv.imread('2.jpg')
result = cv.matchTemplate(Img_, slider_, cv.TM_CCOEFF_NORMED)
yiwei_ = np.argmax(result)  
x, y = np.unravel_index(yiwei_, result.shape)  
time.sleep(2)
# print(x,y)

找到滑的地方,模拟人工滑动,即可完成。(注意传输的坐标值)

web.implicitly_wait(10)
btn = web.find_element_by_xpath('/html/body/div[4]/div/div[2]/div/div/div[3]/div/div[1]/div[2]/div[1]/div')
ActionChains(web).drag_and_drop_by_offset(btn, xoffset=y, yoffset=0).perform()

总结

对图片base64解码处理后的滑块验证,很多地方都可以优化,比如如何让匹配速度更快,模拟人工轨迹一步步滑等等。爬虫无上限,可能图片验证,滑块验证成功,账号密码正确,还是会显示验证码错误(12306目前是这样的),还有很多的selenium限制的地方。

本站默认网盘访问密码:1166
本站默认网盘访问密码:1166
jspython攻防对抗网络安全解密逆向
3
1
Eswlnk的头像
Eswlnk
一个有点倒霉的研究牲站长
赞赏
「代码分享」深入理解 JavaScript 的发布订阅模式 | 实现灵活的消息通信与事件管理
上一篇
「日志记录」Debian12网络流量监控与自动关机脚本
下一篇

评论 (1)

请登录以参与评论
现在登录
  • 的头像
    Eswlnk

    目前的思路仍然有效

    1 年前 • 111.6.*.* • Google Chrome Windows • 回复

猜你喜欢

  • 今日热点:伪Clash软件下载陷阱曝光,附防范建议
  • 漏洞资讯:Ollama 未授权访问漏洞分析与防护指南
  • 开发日志:解决Windows平台无法使用Metview解析数据的难题
  • 「攻防对抗」利用 fastjson 原生反序列化与动态代理突破安全限制
  • 「攻防对抗」从上传漏洞到Getshell | 一次完整的渗透过程
Eswlnk的头像

Eswlnk

一个有点倒霉的研究牲站长
1092
文章
315
评论
667
获赞

随便看看

威胁组织UNC3944滥用Azure串行控制台造成虚拟机完全接管
2023-05-18 12:55:48
「主题改造」Typecho使用highlight.js代码高亮实现代码行号
2024-04-04 17:03:41
路由器2.4G和5G有什么区别?如何判断两者哪个更好?
2023-05-23 13:42:52

专题展示

WordPress53

工程实践36

热门标签

360 AI API java JavaScript linux Nginx PDF PHP python SEO Windows WordPress 云服务器 云服务器知识 代码 免费 安全 安卓 工具 开发日志 微信 微软 手机 插件 攻防 攻防对抗 教程 日志 渗透分析 源码 漏洞 电脑 破解 系统 编程 网站优化 网络 网络安全 脚本 苹果 谷歌 软件 运维 逆向
  • 首页
  • 知识库
  • 地图
Copyright © 2023-2025 Eswlnk Blog. Designed by XiaoWu.
本站CDN由 壹盾安全 提供高防CDN安全防护服务
蜀ICP备20002650号-10
页面生成用时 0.412 秒   |  SQL查询 29 次
本站勉强运行:
友情链接: Eswlnk Blog 网站渗透 倦意博客 特资啦!个人资源分享站 祭夜博客 iBAAO壹宝头条
  • WordPress141
  • 网络安全63
  • 漏洞51
  • 软件51
  • 安全47
现在登录
  • 资源
    • 精彩视频
    • 破解专区
      • WHMCS
      • WordPress主题
      • WordPress插件
    • 其他分享
    • 极惠VPS
    • PDF资源
  • 关于我
    • 论文阅读
    • 关于本站
    • 通知
    • 左邻右舍
    • 玩物志趣
    • 日志
    • 专题
  • 热议话题
    • 游戏资讯
  • 红黑
    • 渗透分析
    • 攻防对抗
    • 代码发布
  • 自主研发
    • 知识库
    • 插件
      • ToolBox
      • HotSpot AI 热点创作
    • 区块
    • 快乐屋
  • 乱步
    • 文章榜单
    • 热门标签
  • 问答中心反馈