学习背景
目标站点:aHR0cHM6Ly93d3cuemhpcGluLmNvbS8=(请使用base64解码查看网站)
思路分析:
按照常规思路,一上来定位招聘信息内容所在的链接。
- 可以定位到该链接的结果即就是我们需要采集的内容。
- 但是当我们将改url请求截获下来在本地复现的时候却发现无法得到想要的结果。
- 经过分析该页面的内容发现,当如果检测到未携带cookie参数的时候,该网站会通过js去生成一个新的cookie,然后再根据改cookie去访问结果页面的内容。
- 但是查看了他的cookie列表后,我们发现存在很多cookie参数,那么哪一个是我们需要js逆向获取的呢,那就需要我们使用控制变量法进行逐个分析了。
- 最终通过删减后发现,当zp_stoken_这个参数没了后,网页会重定法到一个新的页面去加载js生成。
开始逆向分析
定位cookie加密位置
- 因为我们需要获取的参数是在cookie中,那么一定可以通过js_hook获取到其生成的过程及位置信息。
- 那么第一步我们就是用hook技术定位cookie。
!(function() {
'use strict';
Object.defineProperty(document, 'cookie', {
//hook set方法也就是赋值的方法
//当前也可以hook get方法
set: function(val) {
console.log('Hook捕获到cookie设置->', val);
debugger;
return val;
}
});
})();
- 通过以上cookie分析以后可以发现,我们最终需要的参数很快定位到位置了。
接下来就是扣代码了,将改段代码保存下来进行还原补环境即可。
具体的整个流程我会放到csdn的下载链接中,需要的朋友自取。
分享一部分还原心得
- 因为改段js是属于动态加载的,所以我们应该动态的提取这段代码。
- 其次是在补环境的过程中,我们可以使用proxy代理,将关键的信息代理后,查看哪些内容需要还原,缺啥补啥。
- 本网站存在一些比较深的检测,如果不加以注意,很难发现其中存在的问题。
动态下载js的代码
session.headers = headers
response = session.request("GET", url, data=payload, verify=False)
local = response.url
print(local)
seed = unquote(re.findall('seed=(.*?)&', local)[0])
ts = re.findall('ts=(.*?)&', local)[0]
filename = re.findall("name=(.*?)&", local)[0]
ak_url = "https://www.zhipin.com/web/common/security-js/{}.js".format(filename)
response_ak = session.request("GET", ak_url, data=payload, verify=False)
final_js = raw_js + response_ak.content.decode() + tail_js
proxy代理打印参数
function vmProxy(Object){
return new Proxy(Object, {
set(target, property, value){
console.log("set:", target, property, value);
return Reflect.set(...arguments);
},
get(target, property, receiver){
console.log("get->target:", target);
console.log("get->property:", property);
console.log("----------get->value:", target[property]);
// if (property == 'href'){
// debugger;
// }
// console.log("get:", target, property, target[property]);
// debugger;
return target[property];
}
})
};
小结
- 通过以上方式可以更快的定位到cookie等一些放在document、window里面的参数,更快的帮我们分析。
- 如果觉得补环境的方式过于麻烦,也可以采用rpc的方式进行调用,该方法可以直接运行js本地的环境,不过也存在一些问题。
- 当然个人更加推荐本文的方式去完成数据的采集工作,因为可以脱离游览器的环境去完成接口的请求。
- 该网站存在一定程度上的ip封禁,当接口无法请求时可以更换代理ip进行尝试。
文章成品代码如有需要,请自提
本文在2022.6.22仍可以正常获取到信息
代码下载地址:download.csdn.net/download/qq…
本文仅在新型技术分析与心得交流,如存在侵权问题,请联系作者,谢谢!
商务联系qq:986361369