IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> JavaScript知识库 -> 凡科网JS逆向后跳出的滑块验证(base64图片解码之后的破解滑块验证) -> 正文阅读

[JavaScript知识库]凡科网JS逆向后跳出的滑块验证(base64图片解码之后的破解滑块验证)

目录

? ? ?? 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安装教程

????????

? ? ? ??

  JavaScript知识库 最新文章
ES6的相关知识点
react 函数式组件 & react其他一些总结
Vue基础超详细
前端JS也可以连点成线(Vue中运用 AntVG6)
Vue事件处理的基本使用
Vue后台项目的记录 (一)
前后端分离vue跨域,devServer配置proxy代理
TypeScript
初识vuex
vue项目安装包指令收集
上一篇文章      下一篇文章      查看所有文章
加:2021-09-11 18:43:10  更:2021-09-11 18:43:28 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/23 16:50:46-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码