目录

文章目录

  • 目录
  • 前言
  • 目标网站
  • 请求流程
  • 请求分析
    • getInfoTp 接口
    • getInfoTp 接口
  • 最终结果

前言

本文只是简单地分析了安居客滑块验证码,没有涉及爬虫部分哦。

目标网站

完整 URL:
aHR0cHM6Ly93d3cuYW5qdWtlLmNvbS9jYXB0Y2hhLXZlcmlmeS8/aGlzdG9yeT1hSFIwY0hNNkx5OXphR0Z1WjJoaGFTNWhibXAxYTJVdVkyOXRMMk52YlcxMWJtbDBlUzkyYVdWM0x6RXlOekV6TWc9PSZuYW1lc3BhY2U9YW5qdWtlX3hpYW9xdV9wYyZzZXJpYWxJRD0yZDZjYTQ3YTE3ODhkMjdjNTcwMmM4YTQzMTczNjYyNl8wZjk4ZGM1YmI4NTA0YWIwODlhYmNlZjlmYTBlNzI5YiZjYWxsYmFjaz1zaGllbGQmZnJvbT1hbnRpc3BhbQ==

简化 URL:aHR0cHM6Ly93d3cuYW5qdWtlLmNvbS9jYXB0Y2hhLXZlcmlmeS8/Y2FsbGJhY2s9c2hpZWxkJmZyb209YW50aXNwYW0=

请求流程

  1. https://verifycode.58.com/captcha/getInfoTp (获取验证码图片等信息)
  2. https://verifycode.58.com/captcha/dctrace(8次,暂无紧要)
  3. https://verifycode.58.com/captcha/checkInfoTp(校验是否成功)

请求分析

getInfoTp 接口

请求参数

sessionId: 4cc3cd35a39c4eb4b03680e0812f6b98 在访问验证码页面的HTML代码里包含sessionId
showType: embed 固定
track: 固定
clientType: 1 固定
clientId: 1 固定
language: zh-CN 固定
dInfo: 0zKKrvsczg7QXGpGHiLxEepUoismp8P1rvEnnE8n95JH8Sril...省略 貌似不校验

请求响应

{"code":0,"data":{"ntpStatus":1,"ntp":"0","status":0,"responseId":"cea3453145194aaa88ce0f6b3171dad8","info":"I1vWKDGkPlxzM/1krtxMm8mDmkMZ1cfhpygfkAyS2lb1l3kC7gOr5NSjtPoUQAVDyu65emjI7u0D...省略"},"message":"成功"
}

sessionId 在访问验证码页面的 HTML 代码里包含,直接使用正则提取即可

dInfo 直接使用 DevTools 工具中的 search 搜索 dInfo:,直接就会定位到下图位置

直接下断重新刷新页面,会断在下图位置,直接在 控制台 打印 l[_0x1vk[7]][_0x1vk[164]]((0,i)(), r[_0x1vk[104]]) 输出看下内容

发现好像就是 dInfo 参数,

发现关键字 AESEncrypt ,那么就破案了,但是也要继续跟进验证下,主要看下 AES 加密的 内容keymodepadding 等信息,方便我们自己加密测试是否与网站的结果是一样的

发现 sessionId ,很眼熟,就是上面最开始在验证码页面获取的,可以把这行代码整理下,整理如下

l[_0x1vk[7]][_0x1vk[164]]((0,i)(), r[_0x1vk[104]])
l[_0x1vk[7]][_0x1vk[164]](i(), r[_0x1vk[104]])

这样就稍微清楚些, l[_0x1vk[7]][_0x1vk[164]] 这个函数主要有两个参数,第一个是 i(),第二个是 r[_0x1vk[104]](也就是sessionId),那么先看下 i()是什么,老样子,在控制台打印输出下即可

接着进入加密函数看下

e = e[_0x1vk[388]](_0x1vk[23])[_0x1vk[745]](function(t, e, n) {return n % 2 == 0 ? t + _0x1vk[23] : t + e;
}, _0x1vk[23])

e 是对传入的 sessionId 做了一些处理,比如 9d811d9936354dcf90c2410390f7a5e1 处理后变成了 d1d965df02130751

e = r[_0x1vk[683]](e)

ee 进行了处理又重新赋值给了 e那么 e 就是 AES 的 key

t = _0x1vk[70] == typeof t ? t : JSON[_0x1vk[720]](t)

t 把 第一个参数转换成字符串

t = s[_0x1vk[746]](t, e, {iv: e,mode: u[_0x1vk[747]][_0x1vk[748]],padding: f
}),

AES 对象,声明了 ivkey ,两者一样,modeCBCpaddingPkcs7

e = o[_0x1vk[720]](t[_0x1vk[749]])

对第一个参数进行加密

encodeURIComponent)(e)

对加密后的内容再次进行 URL 编码,到此 dInfo 参数处理完成,然后自己使用库进行 AES 加密即可,使用 Python 实现并请求接口返回数据如下

发现返回后的数据是加密的,使用 AES 解密即可

getInfoTp 接口

请求参数

sessionId: 98533e7b1323471c82f42bda694af2aa 同上
responseId: b0f1474ffe8a41a8bbe225f9daa22e23 接口1返回的
dInfo: 9bGgD6bvcFdJCXEikdLVj48M39SK6%2FI%2FsZwk1iqjrY5Ky%2BtqN7Pk%2BsHpRLRQxuNk...省略
language: zh-CN 固定
data: IsRd8Fl22naf8FS6...省略

请求响应

{"code":0,"data":{"ischange":false,"status":1},"message":"校验失败"
}

dInfo 与上面接口 1 的处理方式一样

这里主要看下 t ,打断点依次调用栈往上找, 找到了下图位置

熟悉的配方 AES,看下都加密了什么内容

c[_0xw19[162]](r[_0xw19[7]][_0xw19[164]](e, c[_0xw19[25]][_0xw19[104]]));

e 为轨迹相关的数据,c[_0xw19[25]][_0xw19[104]])sessionId,下面是 e 的内容,包含了一个 x坐标track轨迹p坐标

'{"x":77,"track":"16,22,1|17,22,17|18,22,22|19,22,29|20,22,34|21,22,37|22,22,42|23,22,46|24,22,51|25,22,53|26,22,58|27,22,62|27,23,64|28,23,66|29,23,68|30,23,72|31,23,76|32,23,80|33,23,85|34,23,88|35,23,91|36,23,98|37,23,103|38,23,107|39,23,109|40,23,110|41,23,112|42,23,113|43,23,116|44,24,119|45,24,124|46,24,124|47,24,128|48,24,133|49,24,134|50,24,135|51,24,138|52,24,141|53,24,144|54,24,147|55,24,149|56,24,153|57,24,158|58,24,159|59,24,164|60,24,167|61,24,172|62,24,175|63,24,179|64,24,183|65,24,187|66,24,189|67,24,194|68,24,198|69,24,202|70,24,209|71,24,211|72,24,220|73,24,225|74,24,231|75,24,231|76,24,236|77,24,245|78,24,254|79,24,256|80,24,263|81,24,271|82,24,277|83,24,280|84,24,287|85,24,293|86,24,298|87,24,301|88,24,307|89,24,313|90,24,319|91,24,323|92,24,333|93,24,353|93,24,448|","p":[0,0]}'

最终结果

代码 GitHub 地址:关注【趣码周】公众号获取


微信公众号:【趣码周

[JS逆向案例]安居客滑块分析相关推荐

  1. JS逆向-韵达快递滑块分析

    嗯,我们今天我们要分析的是一个滑块案例,简单的记录下,确实挺简单的. 链接地址:http://ydgw.yundasys.com:31620/view/zxfuwu/sfastgood.html 这是 ...

  2. js逆向案例-某数美

    目录 一.案例分析 二.fveify校验分析-滑块/点选 1.滑块 2.点选 三.动态的js参数名以及密钥获得方式 四.DES/滑块缺口/轨迹xyt代码 一.案例分析 点击查看案例网址 如图regis ...

  3. Js逆向教程17-极验滑块 实现加密算法的逻辑

    Js逆向教程17-极验滑块 实现加密算法的逻辑 还是和上节课一样,针对这个网址 https://www.geetest.com/demo/slide-float.html 一.加密算法的结果查看 计算 ...

  4. Python爬虫之Js逆向案例(2)-某乎搜索

    Python爬虫之Js逆向案例(2)-知乎搜索 声明:某乎加密逆向分析仅用于研究和学习 大家好,今天继续分享关于某乎关键词搜索接口为案例的Js逆向实战.如果你是一名新手,而且还没有来得及看上一篇< ...

  5. Python爬虫之Js逆向案例(6)-某道翻译

    Python爬虫之Js逆向案例(6)-有道翻译 声明:某道翻译加密逆向分析仅用于研究和学习,如有侵权,可联系删除 大家好,距离上次分享js逆向案例已经有一个月了,在这期间每次在快要揭秘出来时.整理文章 ...

  6. Python爬虫之Js逆向案例(8)-某乎x-zst-81之webpack

    声明:某乎加密逆向分析仅用于研究和学习,如有侵权,可联系删除 大家好,相信各位童鞋通过上期<Python爬虫之Js逆向案例(7)-知hu最新x-zse-96之rpc方案>这篇文章了解了什么 ...

  7. JS逆向案例文章推荐

    1.JS逆向语法学习分享 2.JS逆向案例 阿J的CSDN 成功你要成仁啊的CSDN mkdir700的CSDN 渔滒的CSDN 咸鱼学python 白白嫩嫩的简书 考古学家的CSDN 太阳花田向日葵 ...

  8. 安居客爬虫+分析+回归

    安居客爬虫+分析+回归 工具:Pycharm,Win10,Python3.6.4 这次我们要做的是安居客西安地区房源爬虫,然后数据分析,并做一个简单的回归分析. 我们之前的爬虫和简单的数据分析已经说了 ...

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

    目录 1.前提和大概思路概述 2. 转换思路selenium和验证滑块图片的获取处理 3.总结 1.前提和大概思路概述 只是学习的途中有一些新的发现,分享给大家,希望对你们有帮助. 凡科网的JS逆向的 ...

最新文章

  1. spark提交到yarn_详细总结spark基于standalone、yarn集群提交作业流程
  2. 肤色检测算法 - 基于不同颜色空间简单区域划分的皮肤检测算法
  3. 图灵奖得主Yann LeCun最新访谈!
  4. 【机器学习入门笔记1:anaconda一站式开发环境搭建】20190122
  5. 我们来谈下高并发和分布式中的幂等处理
  6. 将protobuf文档转换成java代码
  7. jQuery Mobile 教程
  8. sqlserver 人名_sqlserver上机试题
  9. java二叉树转换为链表_leetcode刷题笔记-114. 二叉树展开为链表(java实现)
  10. 6.Java 面试题整理(XML)
  11. 树莓派zero配置打印机
  12. 如何征服“支付”这个磨人的小妖精
  13. 5.被动回复用户消息
  14. png批量转换成jpg,png批量转jpg方法
  15. CSS3基础(4)——CSS3 渲染属性
  16. html播放ppt插件,lightslider-支持移动触摸的轻量级jQuery幻灯片插件
  17. 微信公众号渠道二维码怎么生成?可以进行用户分组吗?
  18. python中circle是什么意思_啥是佩奇,让 Python 告诉你!
  19. 计算机发明者的电影,电脑发明的奠基人之一,你了解他的生平吗?这部电影带你走近天才...
  20. css鼠标滑过按钮出现flash闪光效果

热门文章

  1. 基于 Django 3.2 VUE nginx 框架开发 机器学习在线 系统
  2. Day11-尚品汇-退出登录
  3. python读取cad表格,Python使用pyautocad+openpyxl处理cad文件示例
  4. MyCnCart之创蓝短信升级版
  5. Intellij IDEA设置向前和向后快捷键
  6. word中实现章节标题的自动编号
  7. 高德地图vue版本的截图打印功能
  8. MYSQL企业常见架构与调优经验分享-高俊峰-专题视频课程
  9. Fdog系列(一):思来想去,不如写一个聊天软件,那就从仿QQ注册页面开始吧。
  10. Vivado创建调用自定义IP上板验证