唯品会密码JS解密与python模拟登录

上班都快一周了 , 一直想更新 , 奈何小伙还没有从假期的快乐中缓过来 , 今天终于耐下心来更新一小篇 。 抠一下某品会的JS代码 , 接着使用抠取的JS代码加密密码进行登录 。 友情提示:为避免不必要的纠纷 , 本文中所有网址都进行了一定隐藏 。
私信小编01即可获取大量Python学习资料
唯品会密码JS解密与python模拟登录文章插图
目标标题已经阐明了本文的目的:

  1. 密码加密解密;
  2. 利用第一步加密方法加密后进行登录;
  3. 完整代码中尝试了多账号号批量登录(由于篇幅有限 , 移动到了 阅读原文 中);
抠出代码找到目标网站 , 进入登录页面(对各位来说都很easy):
唯品会密码JS解密与python模拟登录文章插图
像以往一样输入错误的账号密码 , 看看提交的数据 , 点击登录后 , 提交账号密码 url 如下:
唯品会密码JS解密与python模拟登录文章插图
继续看 FormData ,如下图:
唯品会密码JS解密与python模拟登录文章插图
图中的 loginName 为你输入的用户名 ,password 为密码 , 可以看出被加密了 , 如果你熟悉了各类JS加密方式 , 心里应该能大概确定这就是 MD5 加密结果 。 暂时不用管其它的四个参数 , 接下来无非就是把加密JS代码抠出来 , 可以通过调用栈进去 , 也可以全局搜索 password 来定位JS文件 , 具体使用哪种方法就看各位看官的喜好了 , 我这里是从调用栈进去的(既然我们是在登录 , 那就点带有 login 字样的js文件进去好了):
唯品会密码JS解密与python模拟登录文章插图
进来后你可以搜一下 password 关键字 , 应该马上就能定位到想要的位置 , 定位的时候别忘了挂上一个断点 , 就像下图一样:
唯品会密码JS解密与python模拟登录文章插图
一看加密方法名就是熟悉的 MD5, 接下来的操作应该更加熟悉了 , 激活断点(输入账号密码 , 点击登录 , 前提是你挂上了断点) 。
唯品会密码JS解密与python模拟登录文章插图
点击后就进入了加密方法里:
唯品会密码JS解密与python模拟登录文章插图
function md5(string, key, raw) {if (!key) {if (!raw)return hex_md5(string);return raw_md5(string)}if (!raw)return hex_hmac_md5(key, string);return raw_hmac_md5(key, string)}可以看出md5方法一共有三个参数 , 第一个 striing 即为密码 ,key 和 raw 是 undefined 。 接下笨一点的办法就是一步一步运行 , 把跳转的所有代码都扣下来 , 如果是刚开始学习抠代码 , 这个方法能增加很多调试”感觉” , 慢慢抠得越来越顺手 。 取巧一点的无非就是找到大括号:
唯品会密码JS解密与python模拟登录文章插图
一直往上找到 , 应该马上就能找到正括号:
唯品会密码JS解密与python模拟登录文章插图
这样里面的代码其实就是本次要抠的代码 , 但是要使用 python 调用 , 还要进行一点改动 。 本次要抠的加密代码其实很简单 , 毕竟只是 md5。 经过稍微改写后 , 我们尝试使用python里 execjs 库执行: