2023年6月29日发(作者:)
python爬⾍⼆⼗四:js逆向破解(⼀)1、环境搭建通过python代码模拟js去⽣成加密数据完成数据破解,需要⽤到PyExecJS模块①安装模块pip install pyexecjs通过模块的⽅法来读取js代码,也可以⽤js2py(不更新维护了)、selenium(e_script(js代码))去执⾏js⽂件,这⾥以pyexecjs为例②python调⽤js代码的时候需要nodejs的环境(安装步骤如下)nodejs下载地址:,我选择64位msi选择msi它可以⾃动配置环境变量,不⽤⼿动配置环境变量,选择zip需要先解压,后⼿动配置path环境变量(增加nodejs配置)⽆脑next按照默认选项操作,直到finish,通过命令⾏来验证是否成功安装,按ctrl+c退出node交互模式③写⼀个js⽂件通过python来读取它的数据初步进⼊js逆向的学习2、浏览器知识点补充浏览器抓包⼯具在中有过介绍,这⾥再补充⼀点常⽤⼩技巧,框中的代表保留⽇志信息,⽐如⼀些ajax请求,如果不勾选它,⼀旦页⾯刷新,那么他不会保留之前的信息,不利于爬取数据查看api信息键盘按住shift⿏标悬停再对应的⽂件之上,可以查看到他们之间对应的层级依赖关系会以颜⾊显⽰3、哈希类JS加密(⼀般处理登录过程中的加密)3.1MD5:模拟登录⼀品威客先找到加密的数据是哪些数据再通过search搜索加密⽂件是再那个js⽂件⾥⾯,然后通过断点调试找到数据加密的⽅法,将js⽂件复制进⼊pycharm,通过excejs引⼊js进⾏解密破解该加密数据,进⾏模拟登录。3.2有道词典有道词典也是⼀个post请求,通过对⽐翻译两个不同单词form_data表单携带不同的数据来⽐较出哪些数据是变化的⽐较发现i、salt、sign、its发⽣变化,下图没有写全,⾃⼰⽐较,将不同的加密参数模拟出来传⼊通过requests获得结果,js代码⾃⼰去分析,或者私聊我,py代码我放下⾯from day01 import get_js_functionimport requestsdic = get_js_function('', 'youdao', 'ordinary')dic['i'] = 'ordinary'dic['from'] = 'AUTO'dic['to'] = 'AUTO'dic['smartresult'] = 'dict'dic['client'] = 'fanyideskweb'dic['doctype'] = 'json'dic['version'] = '2.1'dic['keyfrom'] = ''dic['action'] = 'FY_BY_CLICKBUTTION'header = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.117 Safari/537.36', 'Referer': '/', 'Host': '', 'Cookie': 'OUTFOX_SEARCH_USER_ID=-1063838233@10.169.0.82; JSESSIONID=aaa6LVCQlOvoh7aoDIXux; OUTFOX_SEARCH_USER_ID_NCOO=518038871.14423877; ___rl__test__cookies=16'}r = ('/translate_o?smartresult=dict&smartresult=rule', data=dic, headers=header)print(())3.3模拟登录唯品会通过分析发现它的密码是md5加密,search密码,找到对⽤的js⽂件发现他是匿名函数,将他改写,通过execjs将js转换为python可以获得加密的密码,携带data模拟登录唯品会from day01 import get_js_functionimport requestspwd = get_js_function('','md5','666666')data = {'loginName': ,'password': pwd}url = '/?do=login'res = (url,data=data).json()print(res)
发布者:admin,转转请注明出处:http://www.yc00.com/xiaochengxu/1687983839a63691.html
评论列表(0条)