您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Greasy Fork is available in English.
サイト内のCookieを編集できるようになるスクリプトです。
当前为
// ==UserScript== // @name [BETA]Cookie Editor EX // @namespace http://tampermonkey.net/ // @version 0.1 // @description サイト内のCookieを編集できるようになるスクリプトです。 // @author You // @match *.x-feeder.info/*/ // @match *.x-feeder.info/*/sp/ // @exclude *.x-feeder.info/*/settings/** // @match http://drrrkari.com/room/ // @match http://www.3751chat.com/ChatRoom* // @match https://pictsense.com/* // @match http://www.himachat.com/ // @match https://discord.com/* // @match https://*.open2ch.net/* // @require https://gf.zukizuki.org/scripts/396472-yaju1919/code/yaju1919.js?version=798050 // @require https://gf.zukizuki.org/scripts/388005-managed-extensions/code/Managed_Extensions.js?version=720959 // @grant GM.setValue // @grant GM.getValue // @grant GM.cookie // ==/UserScript== (function() { 'use strict'; const addBtn = (h, title, func) => { // ボタンを作成する関数 return $("<button>").text(title).click(func).appendTo(h); } const addCheckbox = (h, title) => { // チェックボックスを作成する関数 h.append('<input type="checkbox">').append(`${title}<br>`); return h.find("input").last(); } const toBool = (data) => { // Boolean型に変換する関数 return data.toLowerCase() === "true"; } const setVal = (h, valArr, boolArr) => { // input要素の値をセットする関数 valArr.forEach((v, i) => h.eq(i).val(decodeURIComponent(v))); boolArr.forEach((v, i) => h.eq(i + 6).prop("checked", toBool(v))); // チェックボックスは6番目からなのでiに6を足す } const setCookie = (dataObj) => { if (dataObj.name === "") return; GM.cookie.set({ expirationDate: new Date().getTime() + (60 * 60 * 24 * 1000 * dataObj.expirationDate), domain: dataObj.domain, httpOnly: dataObj.httpOnly, secure: dataObj.secure, name: dataObj.name, path: dataObj.path, sameSite: dataObj.sameSite, value: dataObj.value, hostOnly: dataObj.hostOnly, }); } const getAllCookie = h => { // 引数に渡した要素にサイト内のCookieを表示する関数 GM.cookie.list({}).then(d => { h.empty(); h.append(`Cookieの数 : ${d.length}個`); if (d.length === 0) { h.append("<br>Cookieが見つかりませんでした"); return; } d.forEach(v => { let arr = []; for (let k in v) arr.push(`${k} : ${v[k]}`); let cookieText = arr.join("\n"); yaju1919.addInputText(h, { readonly: true, textarea: true, value: cookieText, width: "100%", }); // Cookieが表示されたtextareaがフォーカスされたらCookieの情報を各input要素に入力 let elm = h.find("textarea").last(); elm.focus(() => { let obj = {}; elm.val().split("\n").forEach(v => obj[v.split(" : ")[0]] = v.split(" : ")[1]); setVal(h.parent().find("input"), [obj.name, obj.value, obj.domain, obj.path, 0, obj.sameSite], [obj.hostOnly, obj.secure, obj.httpOnly]); }); //------------------------------------------------------------------------------ }); h.append("<br>"); }); } const setConfig = () => { const h = $("<div>"); const h2 = $("<div>").appendTo(h); addBtn(h, "Cookie取得", () => getAllCookie(h2)); addBtn(h, "Cookie全削除", () => { GM.cookie.list({}).then(d => d.forEach(v => GM.cookie.delete({ name: v.name, }))); if (h.find("textarea").length !== 0) setTimeout(() => getAllCookie(h2), 100); // Cookie情報の更新 }); addBtn(h, "表示クリア", () => h2.empty()); h.append("<br><br>"); addBtn(h, "編集", () => { let inputElm = h.find("input"); let keys = ["name", "value", "domain", "path", "expirationDate", "sameSite", "hostOnly", "secure", "httpOnly"]; let inputValObj = {}; inputElm.each((i, e) => { if (keys[i] === "name" || keys[i] === "value") inputValObj[keys[i]] = encodeURIComponent(e.value); else if (i < 6) inputValObj[keys[i]] = e.value; else inputValObj[keys[i]] = e.checked; }); setCookie(inputValObj); if (h.find("textarea").length !== 0) getAllCookie(h2); // Cookie情報の更新 }); addBtn(h, "削除", () => { GM.cookie.delete({ name: h.find("input").eq(0).val(), }); if (h.find("textarea").length !== 0) getAllCookie(h2); // Cookie情報の更新 }); addBtn(h, "クリア", () => setVal(h.find("input"), ["", "", "", "", 0, "unspecified"], ["false", "false", "false"])); // 入力欄やチェックボックスなどの追加 ////////////////////////////// yaju1919.addInputText(h, { title: "名前", placeholder: "Cookieの名前を入力", save: "AM_cookieName", width: "100%", }); yaju1919.addInputText(h, { title: "値", placeholder: "Cookieの値を入力", save: "AM_cookieValue", width: "100%", hankaku: false, }); yaju1919.addInputText(h, { title: "ドメイン", placeholder: "ドメインを入力", save: "AM_cookieDomain", width: "100%", }); yaju1919.addInputText(h, { title: "パス", placeholder: "パスを入力", save: "AM_cookiePath", width: "100%", }); yaju1919.addInputNumber(h, { title: "有効期限", placeholder: "Cookieの有効期限を入力", save: "AM_cookieExpireDays", width: "100%", value: 0, min: Number.NEGATIVE_INFINITY, max: Infinity, }); yaju1919.addInputText(h, { title: "SameSite", placeholder: "SameSiteを入力", save: "AM_cookieSameSite", width: "100%", change: () => { // SameSiteの入力欄が空なら既定値に戻す if (h.find("input").eq(5).val() === "") setTimeout(() => h.find("input").eq(5).val("unspecified")); } }); h.append("<br>"); addCheckbox(h, "ホストのみ"); addCheckbox(h, "安全"); addCheckbox(h, "HTTPのみ"); //////////////////////////////////////////////////////////////////// return h; } win.Managed_Extensions["Cookie Editor EX"] = { config: setConfig, tag: "実用的", } })();