凡科网JS逆向后跳出的滑块验证(base64图片解码之后的破解滑块验证)

2023-10-27

目录

       1.前提和大概思路概述

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

       3.总结


      1.前提和大概思路概述  

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

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

 

 

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

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

{'success': False, 'msg': {'dealType': 1, 'capErrno': -2}}

       

       2. 转换思路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后的数据,要对数据做一定处理)

    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()

       3.总结

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

        欢迎看到这篇的你们提出宝贵意见,一起交流学习。

模拟人工轨迹参考:Python爬虫滑块验证

opencv环境安装:OpenCV-python安装教程

        

        

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

凡科网JS逆向后跳出的滑块验证(base64图片解码之后的破解滑块验证) 的相关文章

随机推荐

  • Unhandled exception: Unable to determine ZooKeeper ensemble

    zookeeper hbase开启并正常 但是运行报错 17 04 24 20 13 23 ERROR master HMaster Region server icosa4 60020 1493045002304 reported a f
  • 金蝶,「起舞」在大模型时代

    在过去的几年时间里 基于EBC的平台能力 金蝶已经走出了一个新的进化之路 这条路是对自身产品竞争力的重新构建 也更是对企业数字化转型需求的更大程度满足 如今 苍穹GPT大模型更是让这种竞争力和服务力更向前一步 作者 皮爷 出品 产业家 6个
  • 2016腾旭研发工程师笔试题

    用C C 代码算出满足上述条件的值 我们首先来分析一下 step0 我们可以得到如下方程 step1 由方程 1 3 6 可得 我们可以把x1 x5 x6看成自变量 x2 x8 x7看成对应的函数 这样只要x1 x5 x6确定了 x2 x8
  • 常见的垃圾回收机制总结

    如何工作 在某些 Java 虚拟机中 堆的实现截然不同 它更像一个传送带 每分配一个新对象 它就向前移动一格 这意味着对象存储空间的分配速度特别快 Java 的 堆指针 只是简单地移动到尚未分配的区域 所以它的效率与 C 在栈上分配空间的效
  • (Matlab源码)Matlab实现算术编码(Arithmetic coding)超级详解(每一段代码都可以看懂)

    1 代码功能 输入 一个字符串 输出 codeword 码值 codeword所占的位数 2 代码框图 3 代码超详解 统计字符串中的字符种类 调用函数 放入数组b中 b unique str1 统计每种字符的个数 放入数组a中 for i
  • PTA L1-016 查验身份证(详解)

    前言 本期是关于查验身份证的详解 内容包括四大模块 题目 代码实现 大致思路 代码解读 今天你c了吗 题目 一个合法的身份证号码由17位地区 日期编号和顺序编号加1位校验码组成 校验码的计算规则如下 首先对前17位数字加权求和 权重分配为
  • 计算机网络(第七版)谢希仁编著(转载请注明出处---https://www.cnblogs.com/qingl)...

    计算机网络复习 第七版 谢希仁编著 转载请注明出处 https www cnblogs com qingl 第一章 P39 1 15 假定网络的利用率达到了90 试估算一下现在的网络时延是它的最小值的多少倍 解 设网络利用率为U 网络时延为
  • 网络规划设计与综合布线技术详解

    一 网络工程概述 1 计算机网络及其组成 计算机网络是现代通信技术与计算机技术相结合的产物 随着计算机网络本身的发展 人们认为 计算机网络是把地理位置不同 功能独立自治的计算机系统及数据设备通过通信设备和线路连接起来 在功能完善的网络软件运
  • jQuery 绑定3种表单事件 change(value值改变),focus(获到焦点),blur(失去焦点)

    1 change 说明 元素的value值改变时 触发change事件 change事件只适用于文本框 text 文本域 textarea 下拉框 select 元素 语法 selector change function1 实例 文本框
  • 编译原理——词法分析器

    1 概述 设计 编制并调试一个简单的C语言词法分析程序 掌握利用状态转换图设计词法分析器的基本方法 利用该词法分析器完成对源程序字符串的词法分析 通过对该词法分析器的设计 加深对词法分析原理 状态转换图等编译原理知识的理解 2 使用的基本概
  • 最新bilibili怎么下载视频

    bilibili作为最火的二次元网站 很多人想下载下来 却不知道怎么下手 今天小编就来818怎么下载bilibili的视频 1 我们拿这案例来参考 https www bilibili com video av40672186 from s
  • d3碰撞源码分析

    技术 d3 d3 force d3 geom quadtree d3 geom quadtree 四叉树的应用 图像处理 空间数据索引 2D中的快速碰撞检测 存储稀疏数据等 游戏编程 上图中的数据就是普通的点 点与点之间没有关系 此函数在构
  • TOJ--3100:Getting Gold (DFS)

    1 题目源地址 http acm tju edu cn toj showp3100 html 2 源代码 TOJ 3100 Getting Gold include
  • httprunner接口自动化测试框架使用说明【保姆级教程】

    背景介绍 httprunner是国内开源的一个接口自动化框架 已经有部分公司开始使用这种框架来完成自己公司的接口自动化编写 本文主要是从简单的流程上去讲解咋使用的 PS 开发者本尊的官网教程写的是真的烂 一点也不友好 里面各种坑 本文基于h
  • Java基础——封装、继承、多态

    今天我们来了解一下面向对象的三大特性 封装 继承和多态 封装 把属性和实现细节隐藏起来 不让外界直接访问 提供公共的方法访问方式 private A 只能修饰成员 B 被private修饰的成员只能在本类中访问 外界不可以直接访问 C pr
  • cocos2d-x 地图随英雄移动

    本人刚开始学习cocos2d x游戏引擎 学到瓦片地图这块 网上有一个很经典的例子 见链接 基于Cocos2D X的砖块地图教程 一 在看到其中的地图跟随角色移动 一般情况下保持角色在屏幕中央附近 到地图边缘时移动角色 的问题时看的不大明白
  • reference to ‘ max‘ is ambiguous

    今天写C 算法的时候 声明了一个全局遍历max 来记录最短路径 编译发现遇到一个以前没遇到过的错误 reference to max is ambiguous 翻译过来就是对 max 的引用有歧义 通过查询百度发现 原因是我引用了iostr
  • c++中如何实现十进制(Dec)与十六进制(Hex)之间的相互转换

    c 中如何实现十进制 Dec 与十六进制 Hex 之间的相互转换 1 十进制 gt 十六进制 include stdafx h include iostream include string using namespace std stri
  • 富集分析(GO、KEGG、GSEA)

    library clusterProfiler library org Hs eg db GO分析与KEGG分析 GO分析需要一个基因 symbol列表 列表中为差异表达基因 一 读入数据 result lt read csv file R
  • 凡科网JS逆向后跳出的滑块验证(base64图片解码之后的破解滑块验证)

    目录 1 前提和大概思路概述 2 转换思路selenium和验证滑块图片的获取处理 3 总结 1 前提和大概思路概述 只是学习的途中有一些新的发现 分享给大家 希望对你们有帮助 凡科网的JS逆向的闭包技巧应该是典型的闭包案例 很多人都有讲解