网站链接

这里就不放链接了,某手web端的滑块,清理下cookie就会出

滑块流程

在请求数据的接口内,result出现400002,就是出现滑块了,这里url就是滑块链接

然后取出滑块链接里的captchaSession,去请求config这个链接

就会得到滑块的各种信息,如下图

最后是,请求kSecretApiVerify接口,验证加密参数verifyParam

加密参数verifyParam逻辑

全局搜索verifyParam:,发现只有一处

进到文件内,观察verifyParam,发现是变量a赋值的,a值又是在e[Jt(“0x37”)]这里赋值的,并且值是我没最终想要的,那就好办了,开始看堆栈吧

经过分析,会发现,verifyParam就是根据这些参数加密得到的

{"captchaSn": '上面config里的captchaSn',"bgDisWidth": 316, # 可以写死,根据config里的值*0.46,四舍五入得来"bgDisHeight": 184, # 同上,可以写死"cutDisWidth": 56, # 同上,可以写死"cutDisHeight": 56, # 同上,可以写死"relativeX": '需要自己识别滑块的距离',"relativeY": '同上config里的值*0.46,四舍五入,但不可以写死',"trajectory": "滑块拖动轨迹","gpuInfo": '显卡信息,可以写死',"captchaExtraParam": '浏览器信息和指纹什么的'
}

trajectory

综合而言,只有轨迹信息trajectory是需要知道怎么生成的,其实就是a.slice(1),a值是上方这里生成的

大致跟一下,其实逻辑不难,可以直接py还原下,代码如下。

def trajectory_calculation(trajectory: list):"""快手滑块轨迹计算算法:param trajectory: 轨迹,上图c=n[Na("0x124")]的值:return: 计算后的轨迹"""r = trajectory[0][2]c = ''for t in trajectory:c += f',{t[0]}|{t[1]}|{t[2]-r}'c = c[1:]return c

verifyParam

verifyParam加密的入口在这里

主逻辑在这里,首先先把参数c处理下

py可以直接处理,代码如下

from urllib import parsedef 懒得起名了():captcha_data = {"captchaSn": '上面config里的captchaSn',"bgDisWidth": 316, # 可以写死,根据config里的值*0.46,四舍五入得来"bgDisHeight": 184, # 同上,可以写死"cutDisWidth": 56, # 同上,可以写死"cutDisHeight": 56, # 同上,可以写死"relativeX": '需要自己识别滑块的距离',"relativeY": '同上config里的值*0.46,四舍五入,但不可以写死',"trajectory": "滑块拖动轨迹","gpuInfo": '显卡信息,可以写死',"captchaExtraParam": '浏览器信息和指纹什么的'}captcha_str = ''for k, v in captcha_data.items():captcha_str += f'&{k}={parse.quote(str(v))}'return captcha_str[1:].replace('/', '%2F')

还是这张图,看处理逻辑,i就是上面py处理过的captcha_str,先h(i)赋值给o,在x(o)

一个个看,先h(i),还是蛮简单的,扣下来运行或者py还原下都可以

处理好得到第一个大数组,赋值给o

再看x(o),e是刚才的o,l是一个固定值

往下跟,发现到了一个加密文件里,可以把这个文件直接拿出来

这里先暂停,回溯一下,看看Jose是什么,如图

搜下Jose,发现是在加密文件里的这个o()

然后根据逻辑处理下加密文件,删除一些无用的函数,和对node检测的代码,也就是上图的这一大行,改成如下

然后下方,自己写个函数照抄就好,这里注意js里的Promise是要用then接收值的,得到了第二个大数组,也是就上面的x(o)

最后就是加密结果了,u就是刚才的大数组,e.from(u).toString(‘base64’),就是最后的加密结果了

最后的加密结果想跟的可以跟一下,就是根据Uint8Array,ArrayBuffer的一些操作,和环境检测,不想跟的话,直接node里new Buffer.from(u).toString(‘base64’),结果是一样的


结束,撒花

python爬虫逆向|某手网页滑块逆向分析相关推荐

  1. Python爬虫入门之淘宝JS逆向解析请求参数Sign加密(一)

    关于JS逆向,相信这是很多小伙伴学习爬虫的一个门槛之一,如果你是初学者入门,开发一款爬虫,要以思路为主,代码是其次的 这里所说的思路指两个方面,一,分析观察目标站点思路,二,代码开发思路,二者缺一不可 ...

  2. python爬网页数据用什么_初学者如何用“python爬虫”技术抓取网页数据?

    原标题:初学者如何用"python爬虫"技术抓取网页数据? 在当今社会,互联网上充斥着许多有用的数据.我们只需要耐心观察并添加一些技术手段即可获得大量有价值的数据.而这里的&quo ...

  3. Python 爬虫修养-处理动态网页

    Python 爬虫修养-处理动态网页 本文转自:i春秋社区 0x01 前言 在进行爬虫开发的过程中,我们会遇到很多的棘手的问题,当然对于普通的问题比如 UA 等修改的问题,我们并不在讨论范围,既然要将 ...

  4. python抓取网页电话号码_利用正则表达式编写python 爬虫,抓取网页电话号码!...

    利用正则表达式编写python 爬虫,抓取网页联系我们电话号码!这里以九奥科技(www.jiuaoo.com)为例,抓取'联系我们'里面的电话号码,并输出. #!/usrweilie/bin/pyth ...

  5. python爬虫之爬取网页基础知识及环境配置概括

    记:python爬虫是爬取网页数据.统计数据必备的知识体系,当我们想统计某个网页的部分数据时,就需要python爬虫进行网络数据的爬取,英文翻译为 spider 爬虫的核心 1.爬取网页:爬取整个网页 ...

  6. python爬虫实现爬取网页主页信息(html代码)

    python爬虫实现爬取网页主页信息(html代码) 1.爬取网站源码 urllib整体介绍: urllib是一个包,收集几个模块来处理网址 urllib.request打开和浏览url中内容 url ...

  7. Python爬虫基础-如何获取网页源代码

    Python爬虫基础-如何获取网页源代码 网络爬虫(Web Crawler),又称网页蜘蛛(Web Spider),是一种按照一定的规则,自动地抓取万维网信息的程序或者脚本.爬虫程序根据一组特定的规则 ...

  8. python爬虫简单练手:音乐top250

    python爬虫简单练手:音乐top250 使用的库bs4和requests: 通过requests发送网络请求 通过bs4的beautifulsoup解析html 页面分析: top250一共有10 ...

  9. Python爬虫系列之MeiTuan网页美食版块商家数据爬取

    Python爬虫系列之MeiTuan网页美食版块商家数据爬取 小程序爬虫接单.app爬虫接单.网页爬虫接单.接口定制.网站开发.小程序开发> 点击这里联系我们 < 微信请扫描下方二维码 代 ...

最新文章

  1. 用c#输出正九九乘法表_用C#写九九乘法表
  2. Zookeeper的一些Bugs
  3. CI框架下nginx重写规则
  4. JVM 性能调优监控工具
  5. 封装JedisClient.提供API实现对redis的操作
  6. BootStrapCSS样式和JS插件
  7. 国务院通过大数据发展行动纲要
  8. JAVA实现UDP单播组播
  9. basICColor catch 5 Mac(光谱分析颜色测量软件) v5.0.7破解版
  10. tms sparkle创建server以及module实例
  11. 接口自动化第四篇----应用工厂模式下的HttpClient请求
  12. mysql函数ceil和ceiling
  13. Gmail 中出现紫字的怪现象
  14. java基础项目-抽奖机-模拟双色球-大乐透
  15. C# 网络编程之网页简单下载实现
  16. 洞悉人性的职场沟通技术
  17. 软考论文写作这些雷区,千万要避开
  18. Android 签名机制原理解析和V1 、V2签名区别
  19. ubuntu 系统代理异常 导致无法上网
  20. android 2.2 sdk 源码,Ubuntu 10.10 编译Android2.2(froyo)源码 sdk adt

热门文章

  1. 小型电梯尺寸_家用小型电梯-美丽与小尺寸的完美融合
  2. STM32F407-高级定时器输入捕获功能
  3. Navicat for MySql不需要注册机破解版
  4. Spring注解@NonNull作用 Spring注解@Nullable作用 Spring NonNull 注解作用 Spring Nullable注解作用
  5. Python程序设计基础第一章笔记:Python概述
  6. C语言程序设计(谭浩强)
  7. 大学物理实验不确定度计算器
  8. pycharm设置主题和字体
  9. 【解决方案】使用NAVICAT连接ORACLE时出现UNSUPPORTED SERVER CHARACTER SET ZHS16GBK(附所需文件下载)
  10. 基于MATLAB的汽车出入库计时计费车牌识别系统