2回答

0收藏

如何hook sessionStorage的setItem getItem

问答交流 问答交流 2125 人阅读 | 2 人回复 | 2020-06-12


问题描述

有一个网站在js里向sessionStorage和Local Storage里设置一个值smidV2,

我想知道设置这个值的位置,想使用油猴hook的方式hook住设置的位置debugger,参考hook cookie的写法但是不成功,请问我这代码错的哪里,正确的代码如何写
(function() {
    console.log("hook sessionStorage start");
    var session_cache = sessionStorage;
    console.log(session_cache);
    Object.defineProperty(window.sessionStorage, 'getItem', {
        value: function(k){
            return 'kk'
        },
        set: function(k, v){
            console.log("sessionStorage --> set ", k, v);
            session_cache.k = v;
        },
        get: function(k){
            console.log("sessionStorage --> get ", k);
debugger;
            if (k in session_cache){
                debugger;
                return session_cache.k
            }
        },
        setItem: function(key, val){
            console.log("Hook sessionStorage setItem -->", key, val);
            debugger;
            session_cache.setItem(key, val);
        },
        getItem: function(key){
            console.log("Hook sessionStorage getItem -->", key);
            debugger;
            return session_cache.getItem(key)
        }
    });
    //console.log("Hook session getItem");
    //window.real_sessionStorage = window.sessionStorage
    //window.sessionStorage = storageUtil;
    //storageUtil.getItem("a");
    //window.sessionStorage.getItem("a");
    //debugger;
    //var my_session = storageUtil;
    //Object.defineProperty(window.sessionStorage, 'getItem', { get: _myeval })
})();
url:
https://passport.douyu.com/index/login?passport_login_callback=PASSPORT_LOGIN_SUCCESS_CALLBACK&passport_reg_callback=PASSPORT_REG_SUCCESS_CALLBACK&passport_close_callback=PASSPORT_CLOSE_CALLBACK&passport_dp_callback=PASSPORT_DP_CALLBACK&did=10000000000000000000000000001501&client_id=71&type=undefined&state=https%3A%2F%2Fzhaobiao.douyu.com%2Findex.html


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
分享到:
回复

使用道具 举报

回答|共 2 个

丁仔

发表于 2020-6-14 18:45:55 | 显示全部楼层

var setItem = localStorage.setItem.bind(localStorage);
localStorage.setItem = function(key, value) {
    console.log(key, value);
    debugger;
    return setItem(key, value);
}
这样就行了,sessionStorage差不多。
回复

使用道具 举报

fuck

发表于 2020-6-15 09:40:19 | 显示全部楼层

谢谢丁老板,测试可用
回复

使用道具 举报