get-cookies

获取网站的cookie,支持字符串,json,netcscpe标准格式

目前为 2021-06-24 提交的版本。查看 最新版本

  1. // ==UserScript==
  2. // @name get-cookies
  3. // @namespace https://github.com/mudssky/get-cookies
  4. // @version 0.2
  5. // @author mudssky
  6. // @description 获取网站的cookie,支持字符串,json,netcscpe标准格式
  7. // @grant GM_registerMenuCommand
  8. // @grant GM_setClipboard
  9. // @match *://*/*
  10. // @run-at document-start
  11. // @icon data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==
  12. // ==/UserScript==
  13.  
  14.  
  15. "use strict";
  16. function getCookiesStr() {
  17. return document.cookie;
  18. }
  19. function getCookieObj() {
  20. var cookieObj = {};
  21. var cookieStr = getCookiesStr();
  22. var pairList = cookieStr.split(';');
  23. for (var _i = 0, pairList_1 = pairList; _i < pairList_1.length; _i++) {
  24. var pair = pairList_1[_i];
  25. var _a = pair.trim().split('='), key = _a[0], value = _a[1];
  26. cookieObj[key] = value;
  27. }
  28. return cookieObj;
  29. }
  30. function getCookiesJson() {
  31. var cookieObj = getCookieObj();
  32. return JSON.stringify(cookieObj);
  33. }
  34. function convertNetScopeCookies(copyFromChrome) {
  35. var cookieStr = '';
  36. var header = [
  37. '# Netscape HTTP Cookie File\n',
  38. '# generate by get-cookies userscript! Do not edit.\n\n',
  39. ];
  40. cookieStr += header.join('');
  41. var cookieslines = copyFromChrome.split('\n');
  42. console.log(cookieslines);
  43. console.log(copyFromChrome);
  44. for (var _i = 0, cookieslines_1 = cookieslines; _i < cookieslines_1.length; _i++) {
  45. var cookie = cookieslines_1[_i];
  46. var _a = cookie.split('\t'), name_1 = _a[0], value = _a[1], domain = _a[2], path = _a[3], expiration = _a[4], httpOnly = _a[6];
  47. if (!name_1)
  48. continue;
  49. if (domain.charAt(0) !== '.')
  50. domain = '.' + domain;
  51. httpOnly = httpOnly === '✓' ? 'TRUE' : 'FALSE';
  52. if (expiration === 'Session') {
  53. expiration = '' + new Date(Date.now() + 86400 * 1000).getTime() / 1000;
  54. }
  55. else {
  56. expiration = '' + Math.floor(new Date(expiration).getTime());
  57. }
  58. cookieStr +=
  59. [domain, 'TRUE', path, httpOnly, expiration, name_1, value].join('\t') +
  60. '\n';
  61. }
  62. return cookieStr;
  63. }
  64. function copyCookieJson() {
  65. var cookieJson = getCookiesJson();
  66. GM_setClipboard(cookieJson, { type: 'text', mimetype: 'text/plain' });
  67. }
  68. function copyCookieString() {
  69. GM_setClipboard(getCookiesStr(), { type: 'text', mimetype: 'text/plain' });
  70. }
  71. function createConfigUI() {
  72. var div = document.createElement('div');
  73. div.innerHTML = "\n <textarea rows=\"20\" cols=\"100\" id=\"configUITextArea\"></textarea>\n <div>\n <button id=\"configUIConvert\">\u8F6C\u6362</button>\n <button id=\"configUIcancel\">\u53D6\u6D88</button>\n </div>\n ";
  74. div.id = 'configUIdiv';
  75. div.style.cssText = 'display:none';
  76. document.body.appendChild(div);
  77. var cancelBtn = document.querySelector('#configUIcancel');
  78. cancelBtn.onclick = hideConfigUI;
  79. var convertBtn = document.querySelector('#configUIConvert');
  80. convertBtn.onclick = excuteConvert;
  81. }
  82. function hideConfigUI() {
  83. var div = document.querySelector('#configUIdiv');
  84. div.style.cssText = 'display:none';
  85. }
  86. function showConfigUI() {
  87. var div = document.querySelector('#configUIdiv');
  88. div.style.cssText =
  89. 'width:800px;height:600px;position:fixed;left:0;right:0;top:0;bottom:0;margin:auto;';
  90. }
  91. function excuteConvert() {
  92. var cookieStr = document.querySelector('#configUITextArea').value;
  93. GM_setClipboard(convertNetScopeCookies(cookieStr), {
  94. type: 'text',
  95. mimetype: 'text/plain',
  96. });
  97. }
  98. ;
  99. (function () {
  100. function main() {
  101. createConfigUI();
  102. GM_registerMenuCommand('copy cookies string', copyCookieString);
  103. GM_registerMenuCommand('copy cookies json', copyCookieJson);
  104. GM_registerMenuCommand('convert cookies netscape', showConfigUI);
  105. }
  106. setTimeout(main, 3000);
  107. })();