浅谈【油猴|谷歌插件】获取cookie、localstorage(开发谷歌插件)

4,258 阅读1分钟

背景:需要获取某些完整Application-Storage里面的相关信息

截屏2022-03-29上午11.42.47.png

结果: 可获取,但是cookie当中除了httpOnly之外的

经过一番探索:

解决方案

通过谷歌插件来获取全部cookie(包括httpOnly的),突破httpOnly的限制

GetCookies

主要代码是通过

var port = chrome.runtime.connect({name: "get_cookie"});
port.postMessage({"do": "get_cookie", "site": site, "name": name, "domain": domain});
port.onMessage.addListener(function(msg) {
    // msg这个就是cookies信息了
    console.log(msg)
})

自行开发谷歌插件:

1、去谷歌的设置-更多工具-拓展程序,

截屏2022-03-29上午11.56.45.png

在这里把开发者模式打开(目的:方便运行我们本地写的插件代码以便进行调试)

image.png

image.png

function onload(func) {
    if (document.readyState === "complete") {
        func();
    } else {
        window.addEventListener('load', func);
    }
}

onload(function() {
    console.log("onload");
    document.body.setAttribute("get-cookie", "true");
    window.postMessage("start", "*");
    window.addEventListener('click', function(event) {   
        var export_btn = event.target;
        var port = chrome.runtime.connect({name: "get_cookie"});
        var site = export_btn.getAttribute("data-site");
        var name = export_btn.getAttribute("data-name");
        var domain = export_btn.getAttribute("data-domain");
        var callback = export_btn.getAttribute("data-callback");
        port.postMessage({"do": "get_cookie", "site": site, "name": name, "domain": domain});
        port.onMessage.addListener(function(msg) {
            if (window.confirm('你确定要此网站获取你' + site + '的Cookies么?')) {
                export_btn.setAttribute("data-cookie", JSON.stringify(msg));
                window.postMessage(msg, "*");
            } else {
                return false;
            }
        });

    }, false);

});