admin 管理员组文章数量: 893635
汽车之家分析
汽车之家详情配置逆向
详情链接地址:aHR0cHM6Ly9jYXIuYXV0b2hvbWUuY29tLmNuL2NvbmZpZy9zcGVjLzQ4ODEwLmh0bWwjcHZhcmVhaWQ9MzQ1NDU2
一.点击nerwork进入html页面
发现js进行过混淆处理,在这里可通过解混淆工具进行js代码还原,
由于混淆力度不大,在这里直接进行分析。
- 通过搜索发现,进行了css样式处理
- 进行任意class属性全局搜索
hs_kw16_configzu
未搜索到,这里猜测通过字符串进行拼接处理. - 通过单独一部分字符进行搜索.
这里通过查看$GetClassName$
函数名,可得知这里进行class name属性名的获取,然后我们此页面搜索哪里调用过$GetClassName$
,搜到
总共搜索到12个结果,通过分析是通过3个script生成同样此方法的调用- 在此处我们打上断点。
可以发现这里出现index
和item
这两个变量,其中item为一段中文字
通过查看配置表发现相互对应,那么可以猜测字体加密是通过这里进行加密的,在这里发现已经生成了转换后的字符,我们可以通过堆栈往上进行分析,
可发现通过此处进行生成,通过分析之前获取class 属性名
由3部分组成,在此可以得出index就是,加密<span class='hs_kw32_baikeks'>
中的数字,通过生成位置进行分析,可以找到
在这里进行映射处理,我们进入此函数方法,可以查看得到
ruleDict
就是我们所要得到字体进行处理后映射的值,通过此页面搜索
得到最开始初始值位置,往后进行一系列的赋值操作,生成长的字符串。
好了,分析到这里我们就知道生成的关键位置在
- 通过分析发现,每次请求后的css样式是发生动态变化的,因此进行固定生成方式是不行的。
- 在此可以通过两种方式进行处理
-
1.一种是通过正则进行匹配和处理。
-
2.另一种是通过补环境方式进行。
这里我选择通过补环境方式进行处理。
- 首先我们先对3次对config,option,bag进行处理的script进行匹配.
- 我通过此xpath规则进行匹配
//script[not(@*)]/text()[contains(.,'.hs_kw')]
2.对这三段js块进行环境的生成
HTMLStyleElement = function HTMLStyleElement() {
}
CSSStyleSheet = function CSSStyleSheet() {
}CSSStyleSheet.prototype.insertRule = function insertRule() {var rulecalss = '::before { content:'cursor = arguments[0].split(rulecalss)[0]font_str = arguments[0].split(rulecalss)[1]jsonp = {}//<span class='hs_kw35_configvE'></span>cursor_str = cursor.replace(".", "")key_str = "<span class='" + cursor_str + "'>" + "</span>"jsonp[key_str] = font_str.replace("}", "").replace('"', "").replace("\"", "").trim()result.push(jsonp)
};
HTMLStyleElement.prototype.sheet = new CSSStyleSheet();
document = {'querySelectorAll': function () {return []},'createElement': function () {return new HTMLStyleElement()}
};
HTMLHeadElement = function HTMLHeadElement() {}
HTMLHeadElement.prototype.appendChild = function appendChild() {
}
document.head = new HTMLHeadElement;
window = global;function get_font_map(script_js) {result = []eval(script_js)return result
}
在此处,insertRule
函数就是最终字体映射生成的位置,在此函数中为了后续方便字符映射,做了一部分转换操作.
3.这里封上最关键字体生成代码。
result = []scripts_js = response.xpath("//script[not(@*)]/text()[contains(.,'.hs_kw')]").getall()script_path = 'xxxscrapt_js生成位置'with open(script_path, 'r', encoding='utf-8') as fp:JsData = fp.read()for script_eval in scripts_js:data = execjs.compile(JsData).call("get_font_map", script_eval)result.extend(data)
如有疑惑可进行私信询问。
本文标签: 汽车之家分析
版权声明:本文标题:汽车之家分析 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.freenas.com.cn/jishu/1687605220h120251.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论