前言
该文章为学习使用,严禁用于商业用途和非法用途,否则由此产生的一切后果均与作者无关!如有侵权,请私信联系作者删除~
需求
目标网站
aHR0cHM6Ly93d3cudG91dGlhby5jb20v
步骤
正文
全局搜_signature:就可以定位到加密位置
_signature = n
n = I(F.getUri(e), e)
进入I方法可以看到:
(null === (n = window.byted_acrawler) || void 0 === n || null === (a = n.sign) || void 0 === a ? void 0 : a.call(n, o)) || “”
改写一下,即:
window.byted_acrawler.sign(o) 就是我们的_signature参数
o是我们的请求地址url
我们进入这个方法内部,会跳到另外一个JS文件,我们在头部可以看到有明显的jsvmp的标记
鉴于js的第一句判断了window是否=undefined,如果=undefined则glb=global(node环境global是全局变量),否则glb=window(浏览器window是全局变量),所以我们先补个window象(有两种方法,①本地js先用sdom补充一个window,②window=global),本次采用window=global的方法;
把整个代码复制下来并且调用下方法,会报
Cannot read properties of undefined (reading ‘referrer’)
把对应环境补上
第二次运行报错如下,缺少sign
这个函数
js文件检测了是否是node
环境,如exports
只在node
环境下存在,但是浏览器是undefined
,所以我们直接把"undefined" != typeof exports ? exports : void 0
替换成浏览器输出的结果undefined
第三次报错需要补充 href
location = {}
location.href = ‘https://www.toutiao.com/’
把这些环境补齐就可以执行了
最后
欢迎联系作者交流更多