唯品会怎么设置账号密码(唯品会密码JS解密与python模拟登录)

首页教程更新时间:2023-06-09 09:19:59

上班都快一周了,一直想更新,奈何小伙还没有从假期的快乐中缓过来,今天终于耐下心来更新一小篇。抠一下某品会的JS代码,接着使用抠取的JS代码加密密码进行登录。友情提示:为避免不必要的纠纷,本文中所有网址都进行了一定隐藏。

私信小编01即可获取大量python学习资料

唯品会怎么设置账号密码,唯品会密码JS解密与python模拟登录(1)

目标

标题已经阐明了本文的目的:

  1. 密码加密解密;
  2. 利用第一步加密方法加密后进行登录;
  3. 完整代码中尝试了多账号号批量登录(由于篇幅有限,移动到了 阅读原文 中);
抠出代码

找到目标网站,进入登录页面(对各位来说都很easy):

唯品会怎么设置账号密码,唯品会密码JS解密与python模拟登录(2)

像以往一样输入错误的账号密码,看看提交的数据,点击登录后,提交账号密码 url 如下:

唯品会怎么设置账号密码,唯品会密码JS解密与python模拟登录(3)

继续看 FormData ,如下图:

唯品会怎么设置账号密码,唯品会密码JS解密与python模拟登录(4)

图中的 loginName 为你输入的用户名, password 为密码,可以看出被加密了,如果你熟悉了各类JS加密方式,心里应该能大概确定这就是 MD5 加密结果。暂时不用管其它的四个参数,接下来无非就是把加密JS代码抠出来,可以通过调用栈进去,也可以全局搜索 password 来定位JS文件,具体使用哪种方法就看各位看官的喜好了,我这里是从调用栈进去的(既然我们是在登录,那就点带有 login 字样的js文件进去好了):

唯品会怎么设置账号密码,唯品会密码JS解密与python模拟登录(5)

进来后你可以搜一下 password 关键字,应该马上就能定位到想要的位置,定位的时候别忘了挂上一个断点,就像下图一样:

唯品会怎么设置账号密码,唯品会密码JS解密与python模拟登录(6)

一看加密方法名就是熟悉的 MD5 ,接下来的操作应该更加熟悉了,激活断点(输入账号密码,点击登录,前提是你挂上了断点)。

唯品会怎么设置账号密码,唯品会密码JS解密与python模拟登录(7)

点击后就进入了加密方法里:

唯品会怎么设置账号密码,唯品会密码JS解密与python模拟登录(8)

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模拟登录(9)

一直往上找到,应该马上就能找到正括号:

唯品会怎么设置账号密码,唯品会密码JS解密与python模拟登录(10)

这样里面的代码其实就是本次要抠的代码,但是要使用 python 调用,还要进行一点改动。本次要抠的加密代码其实很简单,毕竟只是 md5 。经过稍微改写后,我们尝试使用python里 execjs 库执行:

唯品会怎么设置账号密码,唯品会密码JS解密与python模拟登录(11)

成功运行出结果,抠取完毕。

登录FormData

通过上一节,我们已经可以得到加密后的密码,既然要登录,那就要回到 FormData 中,看看几个参数的含义与取值,经过一番测试,总结如下,感兴趣的也可以自己去试一下。

参数取值loginName用户名password加密后的密码remUser是否记住用户名(0或者1)whereFrom可为空captchaId验证码(可为空)captchaTicket可为空

Cookies

现在的登录都需要携带 cookies ,看一下本站登录时候的Cookies:

唯品会怎么设置账号密码,唯品会密码JS解密与python模拟登录(12)

看起来很多,但是经过测试并不需要全部携带,cookies应该是服务端产生的,所以还是老老实实带上吧,没有捷径。经过粗略测试,携带以下几个即可登录:

cookies = { ' mars_pid': '你的', ' cps': '你的', ' mars_sid': '你的', 'times_XXXXX': '你的', ' VipRUID': '你的', ' VipRNAME': '', ' VipDegree': '你的', ' user_class': '你的', ' VipCI_te': '你的', 'mars_cid': '你的' }

有兴趣的可以继续试试这里面还有没有可以不用携带的。

Header

不管是登录还是爬取某个网页,请求头是绝对绕不过的,现在一起看看本站的请求头都有哪些:

唯品会怎么设置账号密码,唯品会密码JS解密与python模拟登录(13)

好家伙,各种都有,不过大家不用担心,经过测试在本文实际爬取过程中只用携带 user-agent,平时的爬取过程中,有些可能会检查上一个网页是在哪里,即要携带 referer ,还有 origin 和 host 也是可能会携带的。

正式登录

本次登录的几个要点在前面应该算已经阐述清楚了,现在要做的无非就是把 FormData 里的数据 post 到 login_url 。

flowchat st=>start: 开始 e=>end: 结束 op0=>operation: 输入账号密码 op1=>operation: 执行js代码加密密码 op=>operation: 组装formdata op2=>operation: 把formdata post到登录url op3=>operation: 分析返回 st->op0->op1->op->op2->op3->e

好了,流程知道了开始写代码,友情提示: 由于可能引起一些不必要的纷争,代码中的url和cookies值都隐藏了,大家按照自己的添加即可 。创建了一个 VipLogin 类,下面是部分模块的代码。

执行js代码

@property def exec_js(self): """ 你自己的js路径 :return: """ with open('..//js//weipinhui.js', encoding='utf-8') as f: weipinhui = f.read() js = execjs.compile(weipinhui) return js加密密码

def get_pwd(self,password): key = "" raw = "" pwd = self.js.call('md5', password, key, raw) logger.info("加密结果为:{}".format(pwd)) return pwd用户名加密

def encrypt_phone(self,phone): return phone[:3] "*"*5 phone[-3:]提交数据

def login(self,user,passwd): if not user.isdigit or len(user) != 11: logger.error("目前仅支持手机号方式登录:{}".format(user)) return False session = requests.Session() vip_name = self.encrypt_phone(user) times_key = "times_" user data = { "loginName": user, "password": passwd, "remUser": "0", "whereFrom":"", "captchaId":"" , "captchaTicket":"", } ck_dict = { ' mars_pid': '你的', ' cps': '你的', ' mars_sid': '你的', times_key: '你的', ' VipRUID': '你的', ' VipRNAME': vip_name, ' VipDegree': '你的', ' user_class': '你的', ' VipCI_te': '你的', 'mars_cid': '你的' } requests.utils.add_dict_to_cookiejar(session.cookies,ck_dict) resp = session.post(self.login_url,headers=self.headers,data=data,verify=False) ret = json.loads(resp.text) logger.info("账号{}返回结果为:{}".format(self._encrypt_phone(user),ret)) if ret.get("result","") == "success": return True return False登录结果

唯品会怎么设置账号密码,唯品会密码JS解密与python模拟登录(14)

登录成功的标志为 'result': 'success ‘如下:

{ 'result': 'success', 'errorCode': 0, 'data': { 'redirectUrl': 'https://www.xxx.com', 'captchaFlowData': None, 'extend': None, 'bindMobile': True, 'illegalState': False }, 'redirectUrl': 'https://www.xxx.com' },

图文教程
相关文章
热门专题
推荐软件
奇热小说
奇热小说
下载
QQ2019手机版
QQ2019手机版
下载
王者荣耀
王者荣耀
下载
百度浏览器迷你版
百度浏览器迷你版
下载
2345浏览器手机版
2345浏览器手机版
下载
网易邮箱
网易邮箱
下载
爱奇艺
爱奇艺
下载
网易云音乐
网易云音乐
下载
WPSOffice
WPSOffice
下载
优酷
优酷
下载
谷歌浏览器(Chrome)
谷歌浏览器(Chrome)
下载
迅雷看看播放器
迅雷看看播放器
下载
UC浏览器
UC浏览器
下载
QQ音乐
QQ音乐
下载
阿里旺旺买家版v9.12.10C官方版
阿里旺旺买家版v9.12.10C官方版
下载
360安全卫士v12.1官方版
360安全卫士v12.1官方版
下载
猜你喜欢
投掷灌水
投掷灌水
下载
赵涌牛app
赵涌牛app
下载
王者荣耀葫芦礼包
王者荣耀葫芦礼包
下载
千艺
千艺
下载
跨境付
跨境付
下载
儿童飞机清洗
儿童飞机清洗
下载
HLSW1.0.0.39汉化版
HLSW1.0.0.39汉化版
下载
埃尔文水球大冒险
埃尔文水球大冒险
下载
迷你骑手
迷你骑手
下载
LiveInterior3DProforMacV2.9.8
LiveInterior3DProforMacV2.9.8
下载
图腾纹身笔刷下载
图腾纹身笔刷下载
下载
永春优品
永春优品
下载
油漆桶及刷子笔刷
油漆桶及刷子笔刷
下载
抖云直播
抖云直播
下载
飞码城联
飞码城联
下载
疫苗宝app
疫苗宝app
下载