目录
在本文中,我们将一起探讨大厂常见的 Cookie 加密方式。以下是详细内容:
一、Hook 定位代码及作用
- 首先,我们新建一个片段,并将以下这串关于 hook 的代码复制进去。这段代码是一个工具代码,每个网站都可以尝试使用,但需要注意的是,有些网站没有涉及到 cookie 加密,此时使用该代码可能无效。
以下是一段示例的 hook 定位代码,仅供参考,实际应用中可能需要根据具体情况进行调整:
(function() {
// 保存原始的 setItem 方法
const originalSetItem = document.cookie.__lookupSetter__('setItem');
// 重写 setItem 方法
document.cookie.__defineSetter__('setItem', function(key, value) {
if (key.includes('V') || key.includes('ACWTC') || key.includes('VI')) {
debugger;
}
return originalSetItem.call(this, key, value);
});
})();
这段代码通过重写document.cookie
的setItem
方法,当设置的 cookie 键包含特定的关键字(如 'V'、'ACWTC'、'VI')时,触发调试器暂停。你可以根据实际情况调整关键字和具体的处理逻辑。
- 这个代码的作用是能够直接捕获到当页面在进行 cookie 操作,尤其是进行设置(sit)操作的时候,会给我们进行 debug(暂停)。例如,当我们运行这个代码后,在页面当中点击搜索(如搜索 5G),页面就会暂停。此时可以看到在浏览器中开始给某个值(如 V 值)进行赋值,也就是在进行设置 cookie 的操作。
二、Cookie 的概念
Cookie 是页面当中浏览器里面所看到的用户信息,一般是浏览器里面用户的信息。
三、二次加载及雪球网站示例
- 二次加载是指同一个页面做两次请求。以雪球网站为例,上面的网页地址会对其静态接口页面地址发送两次请求。
- 第一次请求所得到的是一串 JS 代码,并且会从服务器返回一个 cookie。第二次请求会携带第一次请求的 JS 代码生成的 cookie 和第一次所获取到的 cookie。
四、以 boss 直聘和京东为例
- Boss 直聘里面有指纹,处理起来相对简单。
- 京东不是 cookie 问题,而是 H5ST 问题。
五、通过 hook 方式分析页面请求
- 我们可以把 cookie 全部删掉,勾选保留日志,然后进行刷新,刷新后会有一个 debug。
- 以某个页面为例,这里可以看到做了两次接口的请求,同一个页面做两次请求。第一次请求可以携带 cookie 也可以不携带 cookie,主要的核心是会响应一个 cookie,这个 cookie 是从服务器返回的,并且在某个地方会有个勾。同时,第一次请求还会返回一段 JS 代码,但可能会被覆盖掉导致看不到。第二次请求能够正常的请求得到这个页面,但需要携带两个 cookie,一个是 ACWTC,它是刚刚第一次接口请求所响应的服务器返回到其次的;另一个是 VI,这个 VI 是由第一次所返回的 JS 代码来生成的。
六、更高级的 Cookie 嵌套
目前市场比较主流的还有更高级的 cookie 存的嵌套方式,即有很多的 cookie 来做成嵌套。
通过以上步骤,我们对大厂常见的 cookie 加密方式有了更深入的了解。在实际应用中,可以根据具体情况选择合适的方法来分析和处理 cookie 相关问题。