├── README.md ├── _locales ├── en │ └── messages.json └── zh_CN │ └── messages.json ├── background.js ├── images ├── 64.png ├── logo128.png ├── logo16.png ├── logo32.png └── logo48.png ├── js ├── button.js └── cookie.js └── manifest.json /README.md: -------------------------------------------------------------------------------- 1 | # GetCookies 2 | 3 | Chrome下获取Cookies插件,突破HTTP ONLY限制 4 | 5 | Chrome商店安装Link: 6 | 7 | https://chrome.google.com/webstore/detail/cookies-get-assistant/ljjpkibacifkfolehlgaolibbnlapkme 8 | 9 | # 使用文档 10 | 11 | ## 绑定按钮点击事件 12 | 插件会寻找DOM树中属性为`[data-toggle='get-cookie']`的元素标签并绑定click事件, 13 | 所以如果想获取Cookies就首先必须让页面上有一个带此属性的标签. 14 | 例如button标签,所有信息都是通过button标签的属性进行获取的. 15 | 16 | 17 | 18 | ## 检测插件是否正常加载 19 | 如果插件加载了,会在body标签增加一个`get-cookie`属性,调用前JS检测一下即可 20 | 21 | 22 | 23 | ## 设置获取Cookie的site(可选) 24 | 在button标签上添加属性data-site 25 | 例如: 26 | 27 | data-site=http://pan.baidu.com/ 28 | 29 | 这样设置的是获取百度网盘页面下的Cookie,当然也包括*.baidu.com域的Cookies 30 | 31 | ## 设置获取Cookie的name(可选) 32 | 在button标签上添加属性data-name 33 | 例如: 34 | 35 | data-name=BDUSS 36 | 37 | 说明获取的Cookies的name为BDUSS. 38 | 39 | ## 设置获取Cookie的domain(可选) 40 | 在button标签上添加属性data-domain 41 | 例如: 42 | 43 | data-domain=.baidu.com 44 | 45 | 设置获取的Cookies的domain属性为.baidu.com. 46 | 47 | ## 设置Cookie的value 48 | 在button标签上添加属性data-cookie 49 | 可以默认设置为空值. 50 | 获取到的Cookie会添加到这个属性上 51 | 52 | ## 获取Cookie之后回调 53 | 54 | window.addEventListener("message", receiveMessage, false); 55 | 56 | function receiveMessage(event) 57 | { 58 | if (event.origin == window.location.origin){ 59 | console.log(event.data); 60 | } 61 | } 62 | 63 | 64 | ## 触发获取Cookie事件 65 | JS模拟Click事件即可触发,之后读取data-cookie即可. 66 | 例如: 67 | 68 | data-cookie={"BDUSS":"ABC","BAIDUID":"ASCED"} 69 | 70 | 返回一个对象. 71 | 72 | ## 备注 73 | 74 | 现阶段为了安全起见,只在以下网站加载本插件. 75 | 76 | * https://qiandao.today/ -------------------------------------------------------------------------------- /_locales/en/messages.json: -------------------------------------------------------------------------------- 1 | { 2 | "appName": { 3 | "message": "Cookies Get Assistant" 4 | }, 5 | "description": { 6 | "message": "Assistant for get HTTP ONLY Cookies." 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /_locales/zh_CN/messages.json: -------------------------------------------------------------------------------- 1 | { 2 | "appName": { 3 | "message": "Cookies获取助手" 4 | }, 5 | "description": { 6 | "message": "帮助开发者方便的获取到HTTP ONLY的Cookies。" 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /background.js: -------------------------------------------------------------------------------- 1 | chrome.tabs.onUpdated.addListener(function(tabId, changeInfo, tab) { 2 | console.log(tab); 3 | if (changeInfo.status === 'loading' && tab.url.indexOf("qiandao.today") != -1) { 4 | if (!chrome.runtime.onConnect.hasListeners()) { 5 | chrome.runtime.onConnect.addListener(function(port) { 6 | console.assert(port.name == "get_cookie"); 7 | port.onMessage.addListener(function(request) { 8 | console.log(request); 9 | if (request.do == "get_cookie") { 10 | var option = {}; 11 | if (request.site) { 12 | option["url"] = request.site; 13 | } 14 | if (request.name != null) { 15 | option["name"] = request.name; 16 | } 17 | if (request.domain) { 18 | option["domain"] = request.domain; 19 | } 20 | chrome.cookies.getAll(option, function(cookies) { 21 | var obj = {}; 22 | for (var i in cookies) { 23 | var cookie = cookies[i]; 24 | obj[cookie.name] = cookie.value; 25 | } 26 | port.postMessage(obj); 27 | console.log(obj); 28 | }); 29 | 30 | } 31 | }); 32 | }); 33 | } 34 | 35 | } 36 | 37 | }); 38 | // if (cookie) { 39 | // var data = cookies.name + "=" + cookies.value; 40 | // port.postMessage({"cookie": data}); 41 | // console.log(data); 42 | // } 43 | // chrome.runtime.onMessage.addListener( 44 | // function(request, sender, sendResponse) { 45 | // if (request.do == "get_cookie") { 46 | // var data=""; 47 | // chrome.cookies.get({"url": request.domain, "name": request.name}, function(cookies) { 48 | // if(cookies){ 49 | // data = cookies.name + "=" + cookies.value; 50 | // } 51 | 52 | // }); 53 | // sendResponse({"cookie": data}); 54 | // console.log(data); 55 | // } 56 | // }); -------------------------------------------------------------------------------- /images/64.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/acgotaku/GetCookies/824efa1690162580a0cac1884429337d8449a006/images/64.png -------------------------------------------------------------------------------- /images/logo128.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/acgotaku/GetCookies/824efa1690162580a0cac1884429337d8449a006/images/logo128.png -------------------------------------------------------------------------------- /images/logo16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/acgotaku/GetCookies/824efa1690162580a0cac1884429337d8449a006/images/logo16.png -------------------------------------------------------------------------------- /images/logo32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/acgotaku/GetCookies/824efa1690162580a0cac1884429337d8449a006/images/logo32.png -------------------------------------------------------------------------------- /images/logo48.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/acgotaku/GetCookies/824efa1690162580a0cac1884429337d8449a006/images/logo48.png -------------------------------------------------------------------------------- /js/button.js: -------------------------------------------------------------------------------- 1 | var button = function() { 2 | var cookie_btn = $("").attr("data-callback", "eval").addClass("icon-btn-device").css({float:"none"}).attr("data-cookie", " ").attr("data-domain", ".baidu.com").attr("data-site", "http://pan.baidu.com/").attr("data-toggle", "get-cookie").text("点击获取"); 3 | $(".icon-btn-device").after(cookie_btn); 4 | console.log("load JS"); 5 | window.addEventListener("message", receiveMessage, false); 6 | 7 | function receiveMessage(event) 8 | { 9 | if (event.origin == window.location.origin){ 10 | console.log(event.data); 11 | } 12 | } 13 | }; 14 | 15 | var script = document.createElement('script'); 16 | script.id = "button_script"; 17 | script.appendChild(document.createTextNode('(' + button + ')();')); 18 | (document.body || document.head || document.documentElement).appendChild(script); 19 | 20 | -------------------------------------------------------------------------------- /js/cookie.js: -------------------------------------------------------------------------------- 1 | function onload(func) { 2 | if (document.readyState === "complete") { 3 | func(); 4 | } else { 5 | window.addEventListener('load', func); 6 | } 7 | } 8 | 9 | onload(function() { 10 | console.log("onload"); 11 | document.body.setAttribute("get-cookie", "true"); 12 | window.postMessage("start", "*"); 13 | window.addEventListener('click', function(event) { 14 | var export_btn = event.target; 15 | var port = chrome.runtime.connect({name: "get_cookie"}); 16 | if (export_btn.getAttribute("data-toggle") == "get-cookie") { 17 | var site = export_btn.getAttribute("data-site"); 18 | var name = export_btn.getAttribute("data-name"); 19 | var domain = export_btn.getAttribute("data-domain"); 20 | var callback = export_btn.getAttribute("data-callback"); 21 | port.postMessage({"do": "get_cookie", "site": site, "name": name, "domain": domain}); 22 | port.onMessage.addListener(function(msg) { 23 | if (window.confirm('你确定要此网站获取你' + site + '的Cookies么?')) { 24 | export_btn.setAttribute("data-cookie", JSON.stringify(msg)); 25 | window.postMessage(msg, "*"); 26 | } else { 27 | return false; 28 | } 29 | 30 | }); 31 | } 32 | 33 | }, false); 34 | 35 | }); 36 | -------------------------------------------------------------------------------- /manifest.json: -------------------------------------------------------------------------------- 1 | { 2 | "background": { 3 | "scripts": ["background.js"], 4 | "persistent": false 5 | }, 6 | "content_scripts": [ { 7 | "js": ["js/cookie.js" ], 8 | "matches": [ "https://qiandao.today/*"] 9 | } ], 10 | "default_locale": "en", 11 | "description": "__MSG_description__", 12 | "icons": { 13 | "32": "images/logo32.png", 14 | "16": "images/logo16.png", 15 | "48": "images/logo48.png", 16 | "128": "images/logo128.png" 17 | }, 18 | "manifest_version": 2, 19 | "permissions": [ "cookies", "tabs", "http://*/*", "https://*/*"], 20 | "name": "__MSG_appName__", 21 | "version": "0.0.6" 22 | } 23 | --------------------------------------------------------------------------------