Baidu Multiuser Unsafe

百度马甲切换不安全版(将保存用户名和密码,请慎用!)

  1. // ==UserScript==
  2. // @name Baidu Multiuser Unsafe
  3. // @name:zh-CN 百度马甲切换不安全版
  4. // @namespace http://geraldl.ml/
  5. // @author Gerald <gera2ld@163.com>
  6. // @icon http://cn.gravatar.com/avatar/a0ad718d86d21262ccd6ff271ece08a3?s=80
  7. // @version 2.1.2
  8. // @description 百度马甲切换不安全版(将保存用户名和密码,请慎用!)
  9. // @homepageURL http://gerald.top/code/BaiduMultiuserUnsafe
  10. // @match *://*.baidu.com/*
  11. // @include *.baidu.com/*
  12. // @exclude http://developer.baidu.com/*
  13. // @exclude http://web.im.baidu.com/*
  14. // @run-at document-start
  15. // @grant GM_getValue
  16. // @grant GM_setValue
  17. // @grant GM_addStyle
  18. // @grant GM_xmlhttpRequest
  19. // ==/UserScript==
  20.  
  21. 'use strict';
  22.  
  23. function safeText(text) {
  24. return text.replace(/[&<]/g, function(m) {
  25. return {
  26. '&': '&amp;',
  27. '<': '&lt;',
  28. }[m];
  29. });
  30. }
  31.  
  32. function getValue(key, def) {
  33. var val = GM_getValue(key) || '';
  34. try {
  35. val = JSON.parse(val);
  36. } catch(e) {
  37. val = def;
  38. }
  39. return val;
  40. }
  41.  
  42. function setValue(key, val) {
  43. GM_setValue(key, JSON.stringify(val));
  44. }
  45.  
  46. function showMessage(msg) {
  47. var msgbox = manager.msgbox;
  48. msgbox.firstChild.innerHTML = msg;
  49. msgbox.style.display = 'block';
  50. msgbox.style.top = (innerHeight - msgbox.offsetHeight) / 2 + 'px';
  51. msgbox.style.left = (innerWidth - msgbox.offsetWidth) / 2 + 'px';
  52. }
  53.  
  54. // function doSetCookie(str) {
  55. // var date = new Date();
  56. // if (str) date.setTime(16094e8);
  57. // else str = '';
  58. // document.cookie = 'BDUSS=' + str + ';domain=baidu.com;path=/;expires=' + date.toGMTString();
  59. // }
  60. //
  61. // function setCookie(str) {
  62. // var re = /\bBDUSS=/;
  63. // if (re.test(document.cookie)) {
  64. // doSetCookie(str);
  65. // return true;
  66. // }
  67. // doSetCookie(str ? str : 'logout');
  68. // if (re.test(document.cookie)) {
  69. // if (!str) doSetCookie(str);
  70. // return true;
  71. // }
  72. // }
  73. //
  74. // function extractData(form) {
  75. // var data = {};
  76. // form.replace(/<input [^>]*>/g, function(value) {
  77. // var attrs = {};
  78. // value.replace(/(\w+)="(.*?)"/g, function(value, group1, group2) {
  79. // attrs[group1] = group2;
  80. // });
  81. // data[attrs.name] = attrs.value;
  82. // });
  83. // return data;
  84. // }
  85. //
  86. // function encodeData(data) {
  87. // var items = [];
  88. // for (var i in data)
  89. // items.push(encodeURIComponent(i) + '=' + encodeURIComponent(data[i]));
  90. // return items.join('&');
  91. // }
  92.  
  93. function switchUser(user) {
  94. function checkLogIn(callback) {
  95. GM_xmlhttpRequest({
  96. method: 'GET',
  97. url: 'http://www.baidu.com',
  98. onload: function(res) {
  99. var match = res.responseText.match(/<span class=user-name>(.*?)<\/span>/);
  100. // if (match) setValue('ge_cuser', user);
  101. callback(!!match);
  102. },
  103. });
  104. }
  105. // function checkLogInMobile(res) {
  106. // if (res.finalUrl.slice(0, manager.url_waplogin.length) == manager.url_waplogin)
  107. // preLogInMobile(res.responseText);
  108. // else if (res.finalUrl.slice(0, manager.url_protect.length) == manager.url_protect)
  109. // logInProtect(res.responseText, res.finalUrl);
  110. // else checkLogIn(function(ok) {
  111. // if (ok) location.reload();
  112. // else alert('出错了!我也不知道要怎么办。。');
  113. // });
  114. // }
  115. // function logInProtect(src, url) {
  116. // var j = src.indexOf('<div class="mod-content">');
  117. // var i = src.indexOf('<form action="" method="post">');
  118. // var msg = src.slice(j, i).match(/>([^<]*)</);
  119. // j = src.indexOf('</form>', i);
  120. // var form = src.slice(i, j);
  121. // var data = extractData(form);
  122. // var resend = src.match(/<a href="([^"]*)">再次发送<\/a>/);
  123. // form = document.createElement('form');
  124. // form.innerHTML =
  125. // '<h3>马甲切换</h3>' +
  126. // '<p>已启动登录保护!</p>' +
  127. // (msg ? '<p>' + msg[1] + '</p>' : '') +
  128. // '请输入手机收到的激活码:<input type=text class=vcode><br>' +
  129. // '<button>重新发送</button>' +
  130. // '<input type=submit>';
  131. // if (resend) form.querySelector('button').onclick = function () {
  132. // this.disabled = true;
  133. // this.innerHTML = '正在发送...';
  134. // GM_xmlhttpRequest({
  135. // method: 'GET',
  136. // url: 'http://wappass.baidu.com' + resend[1],
  137. // headers: {
  138. // 'User-Agent': manager.User_Agent,
  139. // },
  140. // onload: function (res) {
  141. // logInProtect(res.responseText, res.finalUrl);
  142. // },
  143. // });
  144. // };
  145. // form.onsubmit = function (e) {
  146. // e.preventDefault();
  147. // data.vcode = form.querySelector('.vcode').value;
  148. // GM_xmlhttpRequest({
  149. // method: 'POST',
  150. // url: url,
  151. // data: encodeData(data),
  152. // headers: {
  153. // },
  154. // onload: checkLogInMobile,
  155. // });
  156. // };
  157. // manager.msgbox.firstChild.innerHTML = '';
  158. // manager.msgbox.firstChild.appendChild(form);
  159. // }
  160. // function doLogInMobile(data) {
  161. // showMessage('正在使用手机版登录,请等待...');
  162. // data['username'] = user;
  163. // data['password'] = manager.users[user];
  164. // GM_xmlhttpRequest({
  165. // method: 'POST',
  166. // url: manager.url_waplogin,
  167. // data: encodeData(data),
  168. // headers: postHeaders,
  169. // onload: checkLogInMobile,
  170. // });
  171. // }
  172. // function preLogInMobile(src) {
  173. // var i = src.indexOf('<div id="error_area"');
  174. // var j = src.indexOf('</div>', i);
  175. // var msg = src.slice(i, j).match(/<span class="highlight">(.*?)<\/span>/);
  176. // if (msg && msg[1] != '请您输入验证码')
  177. // return showMessage('登录失败:' + msg[1]);
  178. // i = src.indexOf('<form action="/passport/login"');
  179. // j = src.indexOf('</form>', i);
  180. // var form = src.slice(i, j);
  181. // var data = extractData(form);
  182. // data.submit = '登录';
  183. // if (data['vcodestr']) {
  184. // form = document.createElement('form');
  185. // form.innerHTML =
  186. // '<h3>马甲切换</h3>' +
  187. // '请输入验证码:<input type=text class=vcode><br>' +
  188. // '<img src=http://wappass.baidu.com/cgi-bin/genimage?' + data['vcodestr'] + ' style="cursor:pointer" title="看不清,换一张">' +
  189. // '<input type=submit>';
  190. // form.onsubmit = function (e) {
  191. // e.preventDefault();
  192. // data.verifycode = form.querySelector('.vcode').value;
  193. // doLogInMobile(data);
  194. // };
  195. // form.querySelector('img').onclick = function () {
  196. // setTimeout(logInMobile, 0);
  197. // };
  198. // manager.msgbox.firstChild.innerHTML = '';
  199. // manager.msgbox.firstChild.appendChild(form);
  200. // } else doLogInMobile(data);
  201. // }
  202. // function logInMobile(planB) {
  203. // if (planB) showMessage('正在尝试手机版登录,请等待...');
  204. // GM_xmlhttpRequest({
  205. // method: 'GET',
  206. // url: manager.url_waplogin + '?type=1',
  207. // headers: {
  208. // 'User-Agent': manager.User_Agent,
  209. // },
  210. // onload: function (res) {
  211. // if (!res.finalUrl) {
  212. // setValue('ge_mobile', manager.mobile = false);
  213. // showMessage('您的运行环境不支持手机版登录,已自动关闭此功能,正在切换到普通登录...');
  214. // if (planB) setTimeout(planB, 2000);
  215. // return;
  216. // }
  217. // preLogInMobile(res.responseText);
  218. // },
  219. // });
  220. // }
  221. function logInNormal() {
  222. setValue('ge_login', user);
  223. location.href = manager.url_login + encodeURIComponent(location.href);
  224. }
  225. function logIn() {
  226. // if (manager.mobile)
  227. // logInMobile(logInNormal);
  228. // else
  229. logInNormal();
  230. }
  231. function logOut() {
  232. location.href = (/*manager.mobile ? manager.url_waplogout :*/ manager.url_logout) + encodeURIComponent(location.href);
  233. }
  234. // var postHeaders = {
  235. // 'User-Agent': manager.User_Agent,
  236. // 'Content-Type': 'application/x-www-form-urlencoded',
  237. // };
  238. if (user) { // 切换账号
  239. /*
  240. if (manager.mobile) {
  241. var cookie = manager.cookies[user];
  242. if(cookie) {
  243. if(setCookie(cookie))
  244. return checkLogIn(function (ok) {
  245. if (ok) location.reload();
  246. else {
  247. showMessage('Cookie失效了,正在尝试重新登录...');
  248. setTimeout(logIn, 1000);
  249. }
  250. });
  251. else
  252. showMessage('设置Cookie失败,正在尝试重新登录...<br>这可能是因为您使用了普通登录。');
  253. } else
  254. showMessage('没有找到Cookie,正在尝试重新登录...');
  255. return setTimeout(logIn,1000);
  256. }
  257. */
  258. logIn();
  259. } else { // 登出
  260. /*
  261. if (manager.mobile) {
  262. if (setCookie())
  263. return checkLogIn(function (ok) {
  264. if(ok) logOut();
  265. else location.reload();
  266. });
  267. else
  268. showMessage('设置Cookie失败,正在尝试登出...<br>这可能是因为您使用了普通登录。');
  269. }
  270. */
  271. logOut();
  272. }
  273. }
  274.  
  275. function initLoc() {
  276. var gu = manager.container;
  277. gu.right = gu._right = gu.parentNode.offsetWidth - gu.offsetWidth - gu.offsetLeft;
  278. gu.top = gu._top = gu.offsetTop;
  279. }
  280.  
  281. function saveAndUpdate() {
  282. setValue('ge_users', manager.users);
  283. initMenu();
  284. }
  285.  
  286. // function saveCookies() {
  287. // setValue('ge_cookies', manager.cookies);
  288. // }
  289.  
  290. function saveLoc() {
  291. var gu = manager.container;
  292. setValue('ge_users_loc', {right: gu.right, top: gu.top});
  293. }
  294.  
  295. function panelClick(e) {
  296. e.preventDefault();
  297. var target = e.target;
  298. var cmd = target.dataset.cmd;
  299. if(cmd == 'settings') { // 设置
  300. manager.showOptions();
  301. } else if (cmd == 'logout') { // 登出
  302. switchUser();
  303. } else if (cmd[0] == 'u') { // 切换
  304. cmd = decodeURI(cmd.slice(1));
  305. if (cmd) switchUser(cmd);
  306. }
  307. }
  308.  
  309. function locate(loc) {
  310. var gu = manager.container;
  311. if (loc) {
  312. gu.right = loc && !isNaN(loc.right) ? loc.right : 100;
  313. gu.top = loc && !isNaN(loc.top) ? loc.top : 100;
  314. }
  315. gu.style.right = gu.right + 'px';
  316. gu.style.top = gu.top + 'px';
  317. }
  318.  
  319. function mousemove(e) {
  320. var gu = manager.container;
  321. var loc = {
  322. right: gu._right + gu.x - e.pageX,
  323. top: gu._top + e.pageY - gu.y,
  324. };
  325. locate(loc);
  326. }
  327.  
  328. function pinUpdate() {
  329. var gu = manager.container;
  330. var symbol = manager.symbol;
  331. if (gu.pin) {
  332. symbol.classList.add('ge_pin');
  333. symbol.setAttribute('title', '固定在页面上');
  334. gu.style.position = 'absolute';
  335. } else {
  336. symbol.classList.remove('ge_pin');
  337. symbol.setAttribute('title', '固定在屏幕上');
  338. gu.style.position = '';
  339. }
  340. }
  341.  
  342. function pin() {
  343. var gu = manager.container;
  344. initLoc();
  345. if (gu.pin) // fixed => absolute
  346. gu.top += window.pageYOffset;
  347. else // absolute => fixed
  348. gu.top -= window.pageYOffset;
  349. pinUpdate();
  350. locate();
  351. saveLoc();
  352. }
  353.  
  354. function buildMenu() {
  355. GM_addStyle('\
  356. #ge_uu{display:block;padding:10px;text-align:left;}\
  357. #ge_uu .ge_h{display:none;}\
  358. #ge_uu{z-index:10006;font:normal normal 400 12px/18px 宋体;position:fixed;}\
  359. #ge_uu>span{background:white;color:blue;border-radius:3px;border:1px solid #c0c0c0;padding:3px;cursor:pointer;vertical-align:middle;}\
  360. #ge_uu>div{position:relative;margin-top:3px;}\
  361. #ge_uu>div>*{position:absolute;margin:0;padding:0;}\
  362. .ge_uu{background:white;border:1px solid silver;box-shadow:5px 5px 7px #333;}\
  363. .ge_uu{width:120px;max-height:400px;overflow-x:hidden;overflow-y:auto;}\
  364. .ge_uu>li{position:relative;display:block;padding:2px 20px 4px 6px;}\
  365. .ge_uu>li:hover,#gu_users .ge_user:hover{background:lightgray;}\
  366. .ge_uu>li:last-child:hover{background:white;}\
  367. .ge_uu span{position:absolute;top:0;right:0;color:white;background:#77f;border-radius:3px;margin:2px;cursor:pointer;padding:2px;}\
  368. .ge_uu span:hover{background:red;}\
  369. .ge_uu a,#gu_users span{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;display:block;max-width:100%;}\
  370. .ge_uu>li:last-child a{display:inline;}\
  371. #gu_users{width:340px;height:100px;overflow:auto;border:1px solid;margin-bottom:.5em;}\
  372. #gu_users .ge_user{position:relative;color:dodgerblue;}\
  373. #gu_users .ge_name{display:block;margin-right:100px;padding:3px 5px;}\
  374. #gu_users .ge_control{position:absolute;top:0;right:0;text-align:right;}\
  375. .ge_sym{display:inline-block;width:7px;height:7px;border:1px solid #c0c0c0;border-radius:4px;margin-left:3px;}\
  376. .ge_sym.ge_pin{background:#c0c0c0;}\
  377. ');
  378. if (!document.querySelector('#ge_css')) GM_addStyle('\
  379. .ge_popup{display:none;z-index:10006;font:normal normal 400 12px/18px 宋体;position:fixed;background:white;border:1px solid silver;box-shadow:5px 5px 7px #333;text-align:left;}\
  380. .ge_opt{padding:20px;border-radius:5px;}\
  381. .ge_opt fieldset{border:1px solid silver;border-radius:5px;padding:5px;}\
  382. .ge_opt textarea{min-height:100px;width:100%;}\
  383. ');
  384. var gu = manager.container = document.createElement('div');
  385. gu.id = 'ge_uu';
  386. gu.innerHTML = '<span>马甲<span class=ge_sym></span></span><div><ul class="ge_uu ge_h"></ul></div>';
  387. gu.style.display = getValue('float', '');
  388. var ul = manager.list = gu.querySelector('ul');
  389. ul.addEventListener('click', panelClick, false);
  390. var symbol = manager.symbol = gu.querySelector('.ge_sym');
  391. gu.pin = !!getValue('ge_pin');
  392. pinUpdate();
  393. symbol.addEventListener('click', function () {
  394. setValue('ge_pin', gu.pin = !gu.pin);
  395. pin();
  396. }, false);
  397. gu.addEventListener('mouseover', function (e) {
  398. if (this.contains(e.relatedTarget)) return;
  399. ul.classList.remove('ge_h');
  400. if (gu.offsetLeft + gu.firstChild.offsetLeft + ul.offsetWidth <= document.body.offsetWidth)
  401. ul.style.pixelLeft = 0;
  402. else
  403. ul.style.pixelLeft = document.body.offsetWidth - gu.offsetLeft - gu.firstChild.offsetLeft - ul.offsetWidth;
  404. }, false);
  405. gu.addEventListener('mouseout', function (e) {
  406. if (!this.contains(e.relatedTarget)) ul.classList.add('ge_h');
  407. }, false);
  408. document.body.appendChild(gu);
  409. gu.moving = false;
  410. locate(getValue('ge_users_loc', {}));
  411. gu.firstChild.draggable = true;
  412. gu.firstChild.addEventListener('dragstart', function (e) {
  413. e.preventDefault();
  414. if (e.target != gu.firstChild || gu.moving) return;
  415. gu.moving = true;
  416. initLoc();
  417. gu.x = e.pageX;
  418. gu.y = e.pageY;
  419. document.addEventListener('mousemove', mousemove, false);
  420. }, false);
  421. gu.addEventListener('mouseup', function (e) {
  422. if (!gu.moving) return;
  423. gu.moving = false;
  424. e.preventDefault();
  425. e.stopPropagation();
  426. document.removeEventListener('mousemove', mousemove, false);
  427. saveLoc();
  428. }, false);
  429. watch('ge_users', function (data) {
  430. manager.users = data;
  431. initMenu();
  432. }, function (now, old) {
  433. return !old && now || JSON.stringify(now) != JSON.stringify(old);
  434. });
  435. initMenu();
  436. }
  437.  
  438. function initMenu() {
  439. var data = [];
  440. for(var i in manager.users)
  441. data.push('<li><a href=# data-cmd="u' + encodeURI(i) + '">' + safeText(i) + '</a></li>');
  442. data.push('<li><a href=# data-cmd=settings>设置</a> | <a href=# data-cmd=logout>登出</a></li>');
  443. manager.list.innerHTML = data.join('');
  444. }
  445.  
  446. function initManage() {
  447. function addItem(name) {
  448. var div = document.createElement('div');
  449. div.className = 'ge_user';
  450. div.dataset.name = name;
  451. div.innerHTML = '<div class=ge_name>' + safeText(name) + '</div><div class=ge_control><button data-cmd=mod>修改</button><button data-cmd=del>删除</button></div>';
  452. users.appendChild(div);
  453. }
  454. var msgbox = manager.msgbox = document.createElement('div');
  455. msgbox.className = 'ge_popup ge_opt';
  456. msgbox.innerHTML = '<div></div><p align=right><button>关闭</button></p>';
  457. msgbox.querySelector('button').addEventListener('click', function () {
  458. msgbox.style.display = '';
  459. }, false);
  460. document.body.appendChild(msgbox);
  461. var popup = document.createElement('div');
  462. popup.className = 'ge_popup ge_opt';
  463. popup.innerHTML =
  464. '<h3>百度马甲切换<font color=red>不安全版</font></h3>' +
  465. '<fieldset><legend>马甲管理 <button data-id=add>添加</button></legend>' +
  466. '<form data-id=modify style="display:none;">' +
  467. '<input type=text data-id=user placeholder="用户名">' +
  468. '<input type=password data-id=pwd placeholder="密码">' +
  469. '<input type=submit value="确认">' +
  470. '<input type=button data-id=cancel value="取消">' +
  471. '</form><div id=gu_users></div>' +
  472. // '<label><input type=checkbox data-id=mobile>尝试使用<b>手机版</b>登录模式和<b>Cookie快速切换</b>功能 ' +
  473. // '<a title="使用手机版登录后其他脚本也可以获取cookie,主要缺点是使用频率较高时就会要求输入验证码">(?)</a></label><br>' +
  474. '</fieldset>' +
  475. '<fieldset><legend>马甲数据 <button data-id=import>导入</button> <button data-id=export>导出</button> ' +
  476. '<a title="复制数据到以下文本框然后点击导入即可导入数据。\n点击导出后复制数据文本即可用于导入。">(?)</a></legend>' +
  477. '<textarea data-id=data></textarea></fieldset>' +
  478. '<p align=right><button data-id=close>关闭</button></p>';
  479. document.body.appendChild(popup);
  480. //popup.addEventListener('click', function (e) {e.stopPropagation();}, false);
  481. var users = popup.querySelector('#gu_users');
  482. var items = {}, current;
  483. Array.prototype.forEach.call(popup.querySelectorAll('[data-id]'), function(node) {
  484. items[node.dataset.id] = node;
  485. });
  486. // items.mobile.checked = manager.mobile;
  487. // items.mobile.addEventListener('change', function (e) {
  488. // setValue('ge_mobile', manager.mobile = this.checked);
  489. // });
  490. items.add.addEventListener('click', function () {
  491. items.user.value = items.pwd.value = '';
  492. items.user.disabled = false;
  493. items.modify.style.display = 'block';
  494. current = null;
  495. items.user.focus();
  496. }, false);
  497. users.addEventListener('click', function (e) {
  498. var target = e.target;
  499. var cmd = target.dataset.cmd;
  500. if (cmd) {
  501. current = target.parentNode.parentNode;
  502. var user = current.dataset.name;
  503. if(cmd == 'del') {
  504. delete manager.users[user];
  505. // delete manager.cookies[user];
  506. current.parentNode.removeChild(current);
  507. current = null;
  508. saveAndUpdate();
  509. // saveCookies();
  510. } else if(cmd == 'mod') {
  511. items.user.value = user;
  512. items.user.disabled = true;
  513. items.pwd.value = manager.users[user];
  514. items.modify.style.display = 'block';
  515. items.pwd.focus();
  516. items.pwd.select();
  517. }
  518. }
  519. }, false);
  520. items.modify.addEventListener('submit', function (e) {
  521. e.preventDefault();
  522. var user = items.user.value;
  523. var pwd = items.pwd.value;
  524. if (!user || !pwd) return;
  525. if (current) {
  526. current.dataset.name = user;
  527. current.firstChild.innerHTML = safeText(user);
  528. } else addItem(user);
  529. manager.users[user] = pwd;
  530. saveAndUpdate();
  531. items.modify.style.display = 'none';
  532. current = null;
  533. }, false);
  534. items.cancel.addEventListener('click', function (e) {
  535. e.preventDefault();
  536. items.modify.style.display = 'none';
  537. }, false);
  538. items.data.addEventListener('click', function () {this.select();}, false);
  539. items.import.addEventListener('click', function () {
  540. var data = null;
  541. try{
  542. data = JSON.parse(unescape(window.atob(items.data.value)));
  543. } catch(e) {}
  544. if (data && data.version == 'unsafe' && data.users) {
  545. for (var i in data.users) manager.users[i] = data.users[i];
  546. saveAndUpdate();
  547. alert('导入成功!');
  548. manager.showOptions();
  549. } else alert('导入失败!');
  550. }, false);
  551. items.export.addEventListener('click', function () {
  552. var data = {version: 'unsafe', users: manager.users};
  553. items.data.value = window.btoa(escape(JSON.stringify(data)));
  554. }, false);
  555. items.close.addEventListener('click', function () {popup.style.display = '';}, false);
  556. manager.showOptions = function () {
  557. popup.style.display = 'block';
  558. popup.style.top = (innerHeight - popup.offsetHeight) / 2 + 'px';
  559. popup.style.left = (innerWidth - popup.offsetWidth) / 2 + 'px';
  560. users.innerHTML = '';
  561. for(var i in manager.users) addItem(i);
  562. };
  563. }
  564.  
  565. function watch(key, cb, comp, interval) {
  566. function loop() {
  567. var value = getValue(key);
  568. if (comp ? comp(value, lastValue) : value != lastValue) cb(value);
  569. lastValue = value;
  570. setTimeout(loop, interval || 1000);
  571. }
  572. var lastValue;
  573. loop();
  574. }
  575.  
  576. function init() {
  577. var user = getValue('ge_login');
  578. var pwd;
  579. manager.users = getValue('ge_users', {});
  580. if (typeof manager.users == 'string') try {
  581. manager.users = JSON.parse(manager.users);
  582. } catch(e) {
  583. manager.users = {};
  584. }
  585. // manager.cookies = getValue('ge_cookies', {});
  586. // manager.mobile = getValue('ge_mobile', true);
  587. if (location.href.slice(0, manager.url_login.length) == manager.url_login) {
  588. pwd = manager.users[user];
  589. // XXX: encode pwd
  590. }
  591. if (user) setValue('ge_login', '');
  592. if (pwd) {
  593. !function(user){
  594. window.addEventListener('load', function () {
  595. document.querySelector('#TANGRAM__PSP_3__userName').value = user;
  596. document.querySelector('#TANGRAM__PSP_3__password').value = pwd;
  597. document.querySelector('#TANGRAM__PSP_3__submit').click();
  598. }, false);
  599. }(user);
  600. } else {
  601. window.addEventListener('DOMContentLoaded', function () {
  602. if (window.top === window && document.head) {
  603. initManage();
  604. buildMenu();
  605. }
  606. }, false);
  607. }
  608. // user = getValue('ge_cuser');
  609. // if (user) { // update cookie
  610. // var match = document.cookie.match(/\bBDUSS=(.*?)(;|$)/);
  611. // if (match) {
  612. // manager.cookies[user] = match[1];
  613. // saveCookies();
  614. // }
  615. // setValue('ge_cuser', '');
  616. // }
  617. }
  618.  
  619. var manager = {
  620. // User_Agent: 'Most handsome in the world',
  621. // url_waplogin: 'http://wappass.baidu.com/passport/login',
  622. // url_waplogout: 'http://wappass.baidu.com/passport/?logout&u=',
  623. url_login: 'https://passport.baidu.com/v2/?login&u=',
  624. url_logout: 'https://passport.baidu.com/?logout&u=',
  625. url_protect: 'http://wappass.baidu.com/wp/login/sec?u=',
  626. };
  627. init();