某招聘网站_zp_stoken_逆向

790 阅读3分钟

学习背景

目标站点: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分析以后可以发现,我们最终需要的参数很快定位到位置了。
    hook定位到__zp_stoken
    直接定位到生成位置
    接下来就是扣代码了,将改段代码保存下来进行还原补环境即可。
    具体的整个流程我会放到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