这里有个爬虫JS逆向任务,你还不来试试?入门级的哦
source link: http://www.happyhong.cn/ni-xiang/pa-chong/10026.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
这次选择苏宁易购登录密码加密,如能调试出来代表你具备了一定的JS逆向能力,初学者建议跟着内容调试一波,尽量独自将JS代码抠出来,实在抠不出来参考这里从今天开始种树。
最近都在研究一些网站的登录密码加密JS代码,都比较简单,非常适合有一定爬虫基础准备进阶的童靴,只有这些做好了下一步才能开始着手滑块验证码这个大坑,废话不多说,直接开整。
打开苏宁易购登录网址点这里:
https://passport.suning.com/ids/login
,看看FormData数据:password2
的加密方法,其它的参数暂时不管。
调试的前提是先找到关键字在哪个位置,这里提供了两种寻找方法:
方法一:调用栈方式
即在调用栈中点击JS文件链接进去,可以通过函数名大概做一个判断再点击,如下图其实就选择了位置可能比较正确的函数loginSubmit
:
encrypt、pwd2
的函数出现,那基本就断定这就是要找的加密方法:方法二:直接搜索方式
这是我们常用的方法,先搜到包含关键字的文件,再从文件中搜到关键字的位置,这次比较幸运,只有一个文件包含password2
,并且这个文件里只有一个password2
,找到的代码其实与上面方法找到的一样:
调试开始前得先上个断点,我是再1484位置下的,下好断点就要激活断点即输入账号密码,如下所示:
encrypt.setPublicKey(loginPBK)
:loginPBK
:encrypt
函数:al
的函数赋给它的。这个函数返回的结果就是加密后的密码。那该怎么扣这个代码呢,有一个关键点就是var encrypt = new JSEncrypt();
,去这个文件里搜一搜JSEncrypt
。JSEncryptExports.JSEncrypt;
,那一直复制到前面JSEncryptExports
开始的地方一个可以了。
python调用
又来到了python调用的环节,老代码又来了:
import execjs
with open('..//js//suningyigou.js', encoding='utf-8') as f:
suningyigou= f.read()
js = execjs.compile(suningyigou)
logid = js.call('get_pwd', "123456")
print(logid)
结果:
到这里今天的苏宁易购密码加密扣JS的环节就结束了,强烈建议您练上一遍,有哪里不懂的可以在评论区留言。关注下面的公众号,获取更多内容,当然不关注也无所谓。完整代码请访问从今天开始种树。
Recommend
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK