Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save aliyaliu368/891eef75e09494e965d291ead4a80d17 to your computer and use it in GitHub Desktop.
Save aliyaliu368/891eef75e09494e965d291ead4a80d17 to your computer and use it in GitHub Desktop.
教學用電子書免登入破解教學 | 本腳本用於繞過台灣主要課本/習作出版社電子書的前端身份驗證,達成不需要教師帳號即可使用電子書。支援 翰林、南一、康軒 三大出版社 | 請勿將本腳本作為抄答案、侵權等惡意用途,使用本腳本者,請自行承擔所有後果與風險

Visits_Count

教學用電子書免登入破解教學

使用前請務必閱讀 免責聲明

免責聲明

請勿將本腳本作為抄答案、侵權等惡意用途,使用本腳本者,請自行承擔所有後果與風險。

簡介

此腳本用於繞過台灣主要課本/習作出版社電子書的前端身份驗證,達成不需要教師帳號即可使用電子書。

開發緣由

原本是因為開發者忘記帶課本,但又想要查閱課本的資料,心血來潮研究看看電子書的驗證設計。
開發這個不是希望拿去抄答案,是希望讓真正需要用的人可以用到,也希望各家出版社能提供一種學生與家長的版本,就是只能瀏覽但不能顯示解答或者專為學習者設計,就可以完美解決這些問題。

如何使用

這邊示範翰林版如何使用,其他出版社以此類推 首先先前往要使用的電子書網站 (下方有連結),接著在瀏覽器的開發者頁面 (F12) 中的主控台 (Console) 輸入以下腳本,最後重新載入網頁即可迴避登入。

這邊是以 Google Chrome 的環境作為示範,Firefox/Edge/Safari 大同小異。

image

腳本

✅ 康軒

連結:康軒網頁媒體盒

localStorage.setItem("loginAccount", "mockAccount"); // 設定一個假的帳號
localStorage.setItem("uuid", "mockUUID"); // 設定假的 UUID

最後測試時間:2022/10/18

✅ 南一

連結:OneBook 南一電子書

let mockToken = JSON.stringify({
    "code": "SUCCESS",
    "jwt": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwOi8vbXlhY2NvdW50Lm5hbmkuY29vbC8iLCJzdWIiOiJ1c2Vycy9qYWNreWNoaXUwMSIsImZyb20iOiJOYW5pIiwidXNlcm5hbWUiOiJqYWNreWNoaXUwMSIsImVtYWlsdmFsaWQiOnRydWUsIm1vYmlsZXZhbGlkIjpmYWxzZSwiZW1haWwiOiJraW5tYTE1OTg3NTMyQGdtYWlsLmNvbSIsInVpZCI6ImI1ZjE3MGYwLTI5ZmMtMTFlZC04NDJjLTQ5OTAxMGVhODI0MCIsImp0aSI6IjliOGI5OTE1LWYyMGQtNGNlMS04ZmJjLTA0OWFhYjkzZTY4ZiIsImlhdCI6MTY2NzIzMTA2NiwiZXhwIjoxNjcyNDE1MDY2fQ.R9cjUUSocKL9CiPTa2Tf8zPNiZLSJLRqH9eQAniMsJw"});

let fieldName = "nani_oneclass_login_token";
var d = new Date();
d.setTime(d.getTime() + (1 * 24 * 60 * 60 * 1000));
var expires = "expires=" + d.toUTCString();
var hostname = window.location.hostname;
if (hostname.indexOf("oneclass.com.tw") > 0) {
  document.cookie = fieldName + "=" + mockToken + ";" + expires + ";path=/;domain=oneclass.com.tw";
} else {
  document.cookie = fieldName + "=" + mockToken + ";" + expires + ";path=/";
}
    
localStorage.setItem("nani_tokenInfo", mockToken); // 設定身分驗證用的 toekn

最後測試時間:2022/11/13
token 由 @jackychiu0207 提供

❌ 翰林

連結:翰林行動大師電子書

let time = new Date().getTime().toString();
localStorage.setItem("last_signinX_v2023", time); // 將帳號登入日期設定為現在,避免被判定為過期
localStorage.setItem("roleX_v2023", "老師"); // 設定身份為老師
localStorage.setItem("emailX_v2023", "[email protected]"); // 由於翰林電子書會驗證是否有設定 email,如果有設定才能使用
localStorage.setItem("tokenX_v2023", "eyJhbGciOiJSUzI1NiIsImtpZCI6Ijg1NzgwNWYxZGQ3ZmE5YTZiNTI3ZjQ0ZWNmZmJkNDhjIiwidHlwIjoiSldUIn0.eyJuYmYiOjE2NjYyNTk4NzEsImV4cCI6MTY2ODkzODI3MSwiaXNzIjoiaHR0cHM6Ly9pZC5obGUuY29tLnR3IiwiYXVkIjpbImh0dHBzOi8vaWQuaGxlLmNvbS50dy9yZXNvdXJjZXMiLCJhcGkxIiwiSWRlbnRpdHlTZXJ2ZXJBcGkiLCJoYW5saW4tYXBpIl0sImNsaWVudF9pZCI6ImpzIiwic3ViIjoiZGJiYmEwNmEtNWNkNy00NTI5LWI2MjEtOTBlYjdhMGIxOWZlIiwiYXV0aF90aW1lIjoxNjY2MjU5ODcwLCJpZHAiOiJsb2NhbCIsIkFzcE5ldC5JZGVudGl0eS5TZWN1cml0eVN0YW1wIjoiNURHN1ZSWVVWRUdUSjJVQ1czU0FDRkpBT1NHM0RONEIiLCJyb2xlIjpbIuiAgeW4qyIsIuiAgeW4qyJdLCJlbWFpbCI6WyJraW5tYTE1OTg3NTMyQGdtYWlsLmNvbSIsImtpbm1hMTU5ODc1MzJAZ21haWwuY29tIl0sImZhbWlseV9uYW1lIjoi576FIiwiZ2l2ZW5fbmFtZSI6IuWFg-iyniIsIm5hbWUiOiLnvoXlhYPosp4iLCJlbWFpbF92ZXJpZmllZCI6dHJ1ZSwicHJlZmVycmVkX3VzZXJuYW1lIjoi576F5YWD6LKeIiwidXNlcl9kb21haW4iOiJlZHUiLCJzY29wZSI6WyJvcGVuaWQiLCJwcm9maWxlIiwiYXBpMSIsIklkZW50aXR5U2VydmVyQXBpIiwiaGFubGluLWFwaSIsIm9mZmxpbmVfYWNjZXNzIl0sImFtciI6WyJwd2QiXX0.So0Fcvd-a_BlnQcgcmO7vXTxlCJ_AnIEPPwpoHHpqc2cP3fBCGrY496R1q4J9j2E9sYUahxeYu7M3RMhPS_79JiEq8EWcSUvNxJASwAgvmek_HxWS2sgPZbvFkCJ1zYXfqHpbUaRfeqNPZyB3Yno94OYU4nl5f0gRzwUf2kGiyM2XhTO5EQZUCXGDJfqNmBlnwL45MwlQ_l_sRSYFNllda37nTECse91Qe1DeYKCm1Z9s8MerCCnmJgpjNsKOPodvbz8ynUT7qbU2IDldb8z8h0mtI9DbW8tuG63c-Nqyr2ZHPXT5aIaWtYUUBgFrVakVW-nI0kv5cEYj8grUyuZFg") // 設定身分驗證用的 token

最後測試時間:2022/11/12
token 由 @jackychiu0207 提供

限制

  • 因為此腳本僅繞過前端的身份驗證,因此可能會導致無法使用儲存班級紀錄、測驗等功能。
  • 翰林版電子書每天會自動重置資料,因此需重新執行腳本。
  • 南一版電子書因設計較為嚴謹,可能在未來此破解方法將無法使用,需尋找更好的解決方案。

The script was made by SiongSng | 此腳本由 菘菘 製作
版權所有 © 2022 菘菘。 保留所有權利。
Copyright © 2022 SiongSng. All rights reserved.

@zhangenyu51
Copy link

我有一個翰林公用帳號,使用前請勿以抄襲的方式,
帳號:[email protected]
密碼:enyu0818

@zhangenyu51
Copy link

希望大家喜歡

@sam221315
Copy link

sam221315 commented Feb 1, 2025 via email

Copy link

ghost commented Feb 5, 2025

有康嗎?
求求求

@kerry0112
Copy link

@ray1119ray
Copy link

求南一帳號,感謝~!
([email protected])

@bowenx442
Copy link

@kerry0112 你這個康軒媒體盒免登入版要安裝嗎

@kerry0112
Copy link

kerry0112 commented Feb 11, 2025 via email

@Winsbacker
Copy link

Winsbacker commented Feb 12, 2025

分享竄改猴腳本, 在瀏覽器分頁顯示電子書名稱, 適用翰林行動大師電子書, 登入後可用, 沒有登入也可以用 😁

image

安裝方法:

  1. 安裝 Tampermonkey(篡改猴)擴充功能元件
  2. 新增使用者脚本
  3. 把下面的程式碼複製進去
// ==UserScript==
// @name         HanBook Utility
// @version      0.95
// @description  行動大師電子書分頁顯示書本名稱
// @namespace    https://edisc3.hle.com.tw/
// @author       none
// @icon         https://www.google.com/s2/favicons?sz=64&domain=hle.com.tw
// @match        https://edisc3.hle.com.tw/edisc_v3/*book_v2023.html*
// @match        https://h5.hle.com.tw/toolbar/release/index.html*
// @grant        unsafeWindow
// ==/UserScript==

(function() {
  'use strict';

  const getCookieData = (key) => new URLSearchParams(document.cookie.replace(/; /g, '&')).get(key) || null, handleMutation = (mutations, callback) => { mutations.forEach(callback); }, removeElementsBySelectors = (selectors) => { selectors.forEach(selector => { const el = document.querySelector(selector); if (el) el.remove(); }); };

  // 監視書名變化
  (new MutationObserver(d => { d.forEach(e => { if (document.title.includes("翰林電子書")) { const h = getCookieData('data');
    if (h) { document.title = h; document.cookie = "data=; domain=hle.com.tw; path=/; expires=Thu, 01 Jan 1970 00:00:00 GMT;"; } } });
  })).observe(document, { subtree: true, childList: true });

  // 移除對話元件
  new MutationObserver(i => handleMutation(i, (j) => { if (j.type === 'childList') { [...j.addedNodes].forEach(k => {
    if (k.nodeType === 1 && k.classList.contains('swal2-container') && k.classList.contains('swal2-center') && k.classList.contains('swal2-backdrop-show')) {
      k.remove();
      document.documentElement.style.overflow = 'auto';
      document.body.style.overflow = 'auto';
    } }); } })).observe(document.body, { childList: true, subtree: true });

  // 移除個人資訊元件
  removeElementsBySelectors([ "#editor-submit",  "#emailField",  "#page-top > div > section > div > div > div.row > div > div > form > div > div > div > input",  "html > body > section > lock-account-pop#lock-account-pop.popup-overlay" ]);

  // 木遁。替身之術。
  const interceptAPI = () => {
    if (unsafeWindow.nxlib?.YouflipWebAPI?.postData) {
      const originalPostData = unsafeWindow.nxlib.YouflipWebAPI.postData;
      unsafeWindow.nxlib.YouflipWebAPI.postData = function(c, d, e) { if (c === "https://api-edisc3.hle.com.tw/token-verify") { e('true', '200'); console.log("回傳測試結果"); } else { originalPostData(c, d, e); } };
    } else { setTimeout(interceptAPI, 100); }
  };
  interceptAPI();

  // 行動大師 - 顯示電子書名稱
  if (location.hostname === 'edisc3.hle.com.tw') {
    const swalContainer = document.querySelector("body > div.swal2-container.swal2-center.swal2-backdrop-show"), headerLabel = document.querySelector("#wrapcontent > nav > header > div > label");
    if (swalContainer) swalContainer.style.display = 'none';
    if (headerLabel) headerLabel.removeAttribute('for');
    const observer = new MutationObserver(d => handleMutation(d, ({ type }) => {
      if (type === 'childList') {
        const btnPlayBook = document.getElementById('btnPlayBook');
        if (btnPlayBook) {
          btnPlayBook.addEventListener('click', () => { document.querySelector("#recordForm").style.display = "none"; });
          document.cookie = `data=${encodeURIComponent(document.querySelector('.lblTitle').innerText)}; domain=hle.com.tw; path=/;`;
        }
      }
    }));
    const table = document.querySelector('.detable');
    if (table) observer.observe(table, { childList: true, subtree: true });
  }

  // 測試資訊
  if (!localStorage.getItem(atob('b2lkYy51c2VyOmh0dHBzOi8vaWQuaGxlLmNvbS50dzpqcw=='))) {
    Object.entries({ [decodeURIComponent(escape(atob('b2lkYy51c2VyOmh0dHBzOi8vaWQuaGxlLmNvbS50dzpqcw==')))]: decodeURIComponent(escape(atob('eyJpZF90b2tlbiI6ImV5SmhiR2NpT2lKU1V6STFOaUlzSW10cFpDSTZJamcxTnpnd05XWXhaR1EzWm1FNVlUWmlOVEkzWmpRMFpXTm1abUprTkRoaklpd2lkSGx3SWpvaVNsZFVJbjAuZXlKdVltWWlPakUzTXpjek1ETXdNRE1zSW1WNGNDSTZNVGN6T1RrNE1UUXdNeXdpYVhOeklqb2lhSFIwY0hNNkx5OXBaQzVvYkdVdVkyOXRMblIzSWl3aVlYVmtJam9pYW5NaUxDSnBZWFFpT2pFM016Y3pNRE13TURNc0ltRjBYMmhoYzJnaU9pSmZiMVpoYmxKVGQxOVBRekJTTUZKUVRFZDNiWFZCSWl3aWMxOW9ZWE5vSWpvaVYyNXRSMEZvTlRsYWFscE1URlY0TVVGMmFIRk9aeUlzSW5OcFpDSTZJa1EwYURCRExYYzNNM0ZPVFdWWWVubEVVWFpWVVVFaUxDSnpkV0lpT2lKaU56Y3lNakE1TVMwMFlXUXlMVFF4WVRRdFlqTXpaaTA1WXpReU5EWmpOell4T1RRaUxDSmhkWFJvWDNScGJXVWlPakUzTXpjek1ETXdNRElzSW1sa2NDSTZJbXh2WTJGc0lpd2lhSFIwY0RvdkwzTmphR1Z0WVhNdWVHMXNjMjloY0M1dmNtY3ZkM012TWpBd05TOHdOUzlwWkdWdWRHbDBlUzlqYkdGcGJYTXZaVzFoYVd4aFpHUnlaWE56SWpvaWEyOXNZV1JwTVRjMk1rQmlkWHBpYkc5NExtTnZiU0lzSWtGemNFNWxkQzVKWkdWdWRHbDBlUzVUWldOMWNtbDBlVk4wWVcxd0lqb2lOMGRHU1VSSVdrdEZWMUJVU2xkUlFrbzNTVGROTlZVME5WbFhNa2xSVWpVaUxDSmxiV0ZwYkNJNkltdHZiR0ZrYVRFM05qSkFZblY2WW14dmVDNWpiMjBpTENKbVlXMXBiSGxmYm1GdFpTSTZJdW1ac3lJc0ltZHBkbVZ1WDI1aGJXVWlPaUxvZ0lIbHVLc2lMQ0p1WVcxbElqb2k2Wm16NklDQjViaXJJaXdpWlcxaGFXeGZkbVZ5YVdacFpXUWlPblJ5ZFdVc0luQm9iMjVsWDI1MWJXSmxjaUk2SWpBNU1qZ3pOVEk1TlRFaUxDSndhRzl1WlY5dWRXMWlaWEpmZG1WeWFXWnBaV1FpT25SeWRXVXNJbkJ5WldabGNuSmxaRjkxYzJWeWJtRnRaU0k2SXVtWnMtaUFnZVc0cXlJc0luVnpaWEpmWkc5dFlXbHVJam9pWldSMUlpd2ljbTlzWlNJNkl1aUFnZVc0cXlJc0luTmphRzl2YkZONWMzUmxiU0k2SXVXY2ktV3dqeUlzSW1semFXUmxiblJwWm1sbFpDSTZkSEoxWlN3aWJHOWpheUk2ZEhKMVpTd2lkbVZ5SWpvekxDSmhiWElpT2xzaWNIZGtJbDE5LjczVXZQUlRSSWVLNFIxTloxUWhCZHI2RVZjdDFyU1VKcEdLSVAteU1OM2hsTEttSWJITXpyTnAxNEZaZVY4YUpEaEQtb3A2MER0OE9mRlAxX2hxZjdfc2R5QWptbW41bEEwdXU5akxmMU9sbTE5SUZrMHlSZkpUcHNyLTczeFBrNTdmcllGdGZWZmlDVWZGS1Z6RWx1LTc4YnFBX2VmQUE1a1RtRGNRMHBiVHAzaWpxeDBEZktOcXJPVHJXcTk2WFUzSURDYi00R191SnpualdicVNQOXVObUhCeXFZaGlKZ1JqQTJSb091ekFIRWtCNFh0S2VRbF9ITzVlcWNKMnRXVER1LWU4eTRpTWtsdmd3emdPY0dUSW1aSXFIZDE5VkN5U3lvNlR1WnJwdlMxNVhlR0x3UDBJbm8zaEhtcXdiTzFURGlJeEVnN21KZ0dPdnBORklhUSIsInNlc3Npb25fc3RhdGUiOiJjSFdsLW1RYUpKeFU1bEFNckNaUy1LTXFHZHkxdXp5bk8yVGNwX2trRDBZLkFDZXBHZ01YNEVRV3I1V1IyMUJHQkEiLCJhY2Nlc3NfdG9rZW4iOiJleUpoYkdjaU9pSlNVekkxTmlJc0ltdHBaQ0k2SWpnMU56Z3dOV1l4WkdRM1ptRTVZVFppTlRJM1pqUTBaV05tWm1Ka05EaGpJaXdpZEhsd0lqb2lZWFFyYW5kMEluMC5leUp1WW1ZaU9qRTNNemN6TURNd01ETXNJbVY0Y0NJNk1UYzJPVFEwTXpnd015d2lhWE56SWpvaWFIUjBjSE02THk5cFpDNW9iR1V1WTI5dExuUjNJaXdpWVhWa0lqcGJJbUZ3YVRFaUxDSkpaR1Z1ZEdsMGVWTmxjblpsY2tGd2FTSXNJbWhoYm14cGJpMWhjR2tpWFN3aVkyeHBaVzUwWDJsa0lqb2lhbk1pTENKemRXSWlPaUppTnpjeU1qQTVNUzAwWVdReUxUUXhZVFF0WWpNelppMDVZelF5TkRaak56WXhPVFFpTENKaGRYUm9YM1JwYldVaU9qRTNNemN6TURNd01ESXNJbWxrY0NJNklteHZZMkZzSWl3aWFIUjBjRG92TDNOamFHVnRZWE11ZUcxc2MyOWhjQzV2Y21jdmQzTXZNakF3TlM4d05TOXBaR1Z1ZEdsMGVTOWpiR0ZwYlhNdlpXMWhhV3hoWkdSeVpYTnpJam9pYTI5c1lXUnBNVGMyTWtCaWRYcGliRzk0TG1OdmJTSXNJa0Z6Y0U1bGRDNUpaR1Z1ZEdsMGVTNVRaV04xY21sMGVWTjBZVzF3SWpvaU4wZEdTVVJJV2t0RlYxQlVTbGRSUWtvM1NUZE5OVlUwTlZsWE1rbFJValVpTENKbGJXRnBiQ0k2SW10dmJHRmthVEUzTmpKQVluVjZZbXh2ZUM1amIyMGlMQ0ptWVcxcGJIbGZibUZ0WlNJNkl1bVpzeUlzSW1kcGRtVnVYMjVoYldVaU9pTG9nSUhsdUtzaUxDSnVZVzFsSWpvaTZabXo2SUNCNWJpcklpd2laVzFoYVd4ZmRtVnlhV1pwWldRaU9uUnlkV1VzSW5Cb2IyNWxYMjUxYldKbGNpSTZJakE1TWpnek5USTVOVEVpTENKd2FHOXVaVjl1ZFcxaVpYSmZkbVZ5YVdacFpXUWlPblJ5ZFdVc0luQnlaV1psY25KbFpGOTFjMlZ5Ym1GdFpTSTZJdW1acy1pQWdlVzRxeUlzSW5WelpYSmZaRzl0WVdsdUlqb2laV1IxSWl3aWNtOXNaU0k2SXVpQWdlVzRxeUlzSW5OamFHOXZiRk41YzNSbGJTSTZJdVdjaS1Xd2p5SXNJbWx6YVdSbGJuUnBabWxsWkNJNmRISjFaU3dpYkc5amF5STZkSEoxWlN3aWRtVnlJam96TENKelkyOXdaU0k2V3lKdmNHVnVhV1FpTENKd2NtOW1hV3hsSWl3aVlYQnBNU0lzSWtsa1pXNTBhWFI1VTJWeWRtVnlRWEJwSWl3aWFHRnViR2x1TFdGd2FTSXNJbTltWm14cGJtVmZZV05qWlhOeklsMHNJbUZ0Y2lJNld5SndkMlFpWFgwLkhkQ1FwQnJMRXkxVktraFNIVThWU05fZmlOSVU1alBuZUJuaGVrdzY0R1lBX3VLNEh5S2N4SXFnX2dicFdnQVVOWlZXSXZHbXBhTEItRGp4bVlka3N3dkFYVE9GazJrc2NYNXQ2R0RYTHdLaVhkS3J3QmkxQ0hUdEppWUVtdmNKcDR2M2JENy0yTjdxTkNVMFJ5dzFudEJEUU1rTFM5UzNxTnBCTmNmQ2VZN195enlpR050QVJsS1cxeEw0bzI4UEpVN3BmSngxdEZ6WGZESVJpLVFVbzh1T1lOSEFUX21iUEVKTm01eVM5RU5BallMS1F6LXVVb3hTUndIMDl5aUVFaXJEZlZTN1JjWlhFMS1KbVhkcXRXN1hlbF9XdTRZYVlDYlpvN0pia2FlMWxvbjBYR3lVWTRTS09Kb2E5VVplUWVMNTZzZzhhX3BqTC13MEE3eEpkUSIsInJlZnJlc2hfdG9rZW4iOiJVYWI2ZHV4N0ltV3lHM2lqZFNESWJvOHdib2JFZ3psQUtMN3NXb3Jvd044IiwidG9rZW5fdHlwZSI6IkJlYXJlciIsInNjb3BlIjoib3BlbmlkIHByb2ZpbGUgYXBpMSBJZGVudGl0eVNlcnZlckFwaSBoYW5saW4tYXBpIG9mZmxpbmVfYWNjZXNzIiwicHJvZmlsZSI6eyJzX2hhc2giOiJXbm1HQWg1OVpqWkxMVXgxQXZocU5nIiwic2lkIjoiRDRoMEMtdzczcU5NZVh6eURRdlVRQSIsInN1YiI6ImI3NzIyMDkxLTRhZDItNDFhNC1iMzNmLTljNDI0NmM3NjE5NCIsImF1dGhfdGltZSI6MTczNzMwMzAwMiwiaWRwIjoidHJ1ZSIsImh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzLzIwMDUvMDUvaWRlbnRpdHkvY2xhaW1zL2VtYWlsYWRkcmVzcyI6ImtvbGFkaTE3NjJAYnV6YmxveC5jb20iLCJBc3BOZXQuSWRlbnRpdHkuU2VjdXJpdHlTdGFtcCI6IjdHRklESFpLRVdQVEpXUUJKN0k3TTVVNDVZVzJJUVI1IiwiZW1haWwiOiJ0ZWFjaGVyQGhsZS5jb20udHciLCJmYW1pbHlfbmFtZSI6Iue/sOaelyIsImdpdmVuX25hbWUiOiLmm7jlsYAiLCJuYW1lIjoi57+w5p6X5pu45bGAIiwiZW1haWxfdmVyaWZpZWQiOnRydWUsInBob25lX251bWJlciI6IjA5MjgzNTI5NTEiLCJwaG9uZV9udW1iZXJfdmVyaWZpZWQiOnRydWUsInByZWZlcnJlZF91c2VybmFtZSI6Iue/sOael+abuOWxgCIsInVzZXJfZG9tYWluIjoiZWR1Iiwicm9sZSI6IuiAgeW4qyIsInNjaG9vbFN5c3RlbSI6IuWci+WwjyIsImlzaWRlbnRpZmllZCI6dHJ1ZSwibG9jayI6ZmFsc2UsInZlciI6MywiYW1yIjpbInB3ZCJdfSwiZXhwaXJlc19hdCI6MTc2OTQ0MzgwNH0='))), [decodeURIComponent(escape(atob('ZWRpc2NfdmFsaWR1c2VyX3YyMDIz')))]: decodeURIComponent(escape(atob('bW9ja1VzZXI='))) }).forEach(([k, v]) => localStorage.setItem(k, v));
    window.location.reload();
  }

})();

@ghostgt2
Copy link

分享竄改猴腳本, 在瀏覽器分頁顯示電子書名稱, 適用翰林行動大師電子書, 登入後可用, 沒有登入也可以用 😁

image

安裝方法:

1. 安裝 Tampermonkey(篡改猴)擴充功能元件

2. 新增使用者脚本

3. 把下面的程式碼複製進去
// ==UserScript==
// @name         HanBook Utility
// @version      0.95
// @description  行動大師電子書分頁顯示書本名稱
// @namespace    https://edisc3.hle.com.tw/
// @author       none
// @icon         https://www.google.com/s2/favicons?sz=64&domain=hle.com.tw
// @match        https://edisc3.hle.com.tw/edisc_v3/*book_v2023.html*
// @match        https://h5.hle.com.tw/toolbar/release/index.html*
// @grant        unsafeWindow
// ==/UserScript==

(function() {
  'use strict';

  const getCookieData = (key) => new URLSearchParams(document.cookie.replace(/; /g, '&')).get(key) || null, handleMutation = (mutations, callback) => { mutations.forEach(callback); }, removeElementsBySelectors = (selectors) => { selectors.forEach(selector => { const el = document.querySelector(selector); if (el) el.remove(); }); };

  // 監視書名變化
  (new MutationObserver(d => { d.forEach(e => { if (document.title.includes("翰林電子書")) { const h = getCookieData('data');
    if (h) { document.title = h; document.cookie = "data=; domain=hle.com.tw; path=/; expires=Thu, 01 Jan 1970 00:00:00 GMT;"; } } });
  })).observe(document, { subtree: true, childList: true });

  // 移除對話元件
  new MutationObserver(i => handleMutation(i, (j) => { if (j.type === 'childList') { [...j.addedNodes].forEach(k => {
    if (k.nodeType === 1 && k.classList.contains('swal2-container') && k.classList.contains('swal2-center') && k.classList.contains('swal2-backdrop-show')) {
      k.remove();
      document.documentElement.style.overflow = 'auto';
      document.body.style.overflow = 'auto';
    } }); } })).observe(document.body, { childList: true, subtree: true });

  // 移除個人資訊元件
  removeElementsBySelectors([ "#editor-submit",  "#emailField",  "#page-top > div > section > div > div > div.row > div > div > form > div > div > div > input",  "html > body > section > lock-account-pop#lock-account-pop.popup-overlay" ]);

  // 木遁。替身之術。
  const interceptAPI = () => {
    if (unsafeWindow.nxlib?.YouflipWebAPI?.postData) {
      const originalPostData = unsafeWindow.nxlib.YouflipWebAPI.postData;
      unsafeWindow.nxlib.YouflipWebAPI.postData = function(c, d, e) { if (c === "https://api-edisc3.hle.com.tw/token-verify") { e('true', '200'); console.log("回傳測試結果"); } else { originalPostData(c, d, e); } };
    } else { setTimeout(interceptAPI, 100); }
  };
  interceptAPI();

  // 行動大師 - 顯示電子書名稱
  if (location.hostname === 'edisc3.hle.com.tw') {
    const swalContainer = document.querySelector("body > div.swal2-container.swal2-center.swal2-backdrop-show"), headerLabel = document.querySelector("#wrapcontent > nav > header > div > label");
    if (swalContainer) swalContainer.style.display = 'none';
    if (headerLabel) headerLabel.removeAttribute('for');
    const observer = new MutationObserver(d => handleMutation(d, ({ type }) => {
      if (type === 'childList') {
        const btnPlayBook = document.getElementById('btnPlayBook');
        if (btnPlayBook) {
          btnPlayBook.addEventListener('click', () => { document.querySelector("#recordForm").style.display = "none"; });
          document.cookie = `data=${encodeURIComponent(document.querySelector('.lblTitle').innerText)}; domain=hle.com.tw; path=/;`;
        }
      }
    }));
    const table = document.querySelector('.detable');
    if (table) observer.observe(table, { childList: true, subtree: true });
  }

  // 測試資訊
  if (!localStorage.getItem(atob('b2lkYy51c2VyOmh0dHBzOi8vaWQuaGxlLmNvbS50dzpqcw=='))) {
    Object.entries({ [decodeURIComponent(escape(atob('b2lkYy51c2VyOmh0dHBzOi8vaWQuaGxlLmNvbS50dzpqcw==')))]: decodeURIComponent(escape(atob('eyJpZF90b2tlbiI6ImV5SmhiR2NpT2lKU1V6STFOaUlzSW10cFpDSTZJamcxTnpnd05XWXhaR1EzWm1FNVlUWmlOVEkzWmpRMFpXTm1abUprTkRoaklpd2lkSGx3SWpvaVNsZFVJbjAuZXlKdVltWWlPakUzTXpjek1ETXdNRE1zSW1WNGNDSTZNVGN6T1RrNE1UUXdNeXdpYVhOeklqb2lhSFIwY0hNNkx5OXBaQzVvYkdVdVkyOXRMblIzSWl3aVlYVmtJam9pYW5NaUxDSnBZWFFpT2pFM016Y3pNRE13TURNc0ltRjBYMmhoYzJnaU9pSmZiMVpoYmxKVGQxOVBRekJTTUZKUVRFZDNiWFZCSWl3aWMxOW9ZWE5vSWpvaVYyNXRSMEZvTlRsYWFscE1URlY0TVVGMmFIRk9aeUlzSW5OcFpDSTZJa1EwYURCRExYYzNNM0ZPVFdWWWVubEVVWFpWVVVFaUxDSnpkV0lpT2lKaU56Y3lNakE1TVMwMFlXUXlMVFF4WVRRdFlqTXpaaTA1WXpReU5EWmpOell4T1RRaUxDSmhkWFJvWDNScGJXVWlPakUzTXpjek1ETXdNRElzSW1sa2NDSTZJbXh2WTJGc0lpd2lhSFIwY0RvdkwzTmphR1Z0WVhNdWVHMXNjMjloY0M1dmNtY3ZkM012TWpBd05TOHdOUzlwWkdWdWRHbDBlUzlqYkdGcGJYTXZaVzFoYVd4aFpHUnlaWE56SWpvaWEyOXNZV1JwTVRjMk1rQmlkWHBpYkc5NExtTnZiU0lzSWtGemNFNWxkQzVKWkdWdWRHbDBlUzVUWldOMWNtbDBlVk4wWVcxd0lqb2lOMGRHU1VSSVdrdEZWMUJVU2xkUlFrbzNTVGROTlZVME5WbFhNa2xSVWpVaUxDSmxiV0ZwYkNJNkltdHZiR0ZrYVRFM05qSkFZblY2WW14dmVDNWpiMjBpTENKbVlXMXBiSGxmYm1GdFpTSTZJdW1ac3lJc0ltZHBkbVZ1WDI1aGJXVWlPaUxvZ0lIbHVLc2lMQ0p1WVcxbElqb2k2Wm16NklDQjViaXJJaXdpWlcxaGFXeGZkbVZ5YVdacFpXUWlPblJ5ZFdVc0luQm9iMjVsWDI1MWJXSmxjaUk2SWpBNU1qZ3pOVEk1TlRFaUxDSndhRzl1WlY5dWRXMWlaWEpmZG1WeWFXWnBaV1FpT25SeWRXVXNJbkJ5WldabGNuSmxaRjkxYzJWeWJtRnRaU0k2SXVtWnMtaUFnZVc0cXlJc0luVnpaWEpmWkc5dFlXbHVJam9pWldSMUlpd2ljbTlzWlNJNkl1aUFnZVc0cXlJc0luTmphRzl2YkZONWMzUmxiU0k2SXVXY2ktV3dqeUlzSW1semFXUmxiblJwWm1sbFpDSTZkSEoxWlN3aWJHOWpheUk2ZEhKMVpTd2lkbVZ5SWpvekxDSmhiWElpT2xzaWNIZGtJbDE5LjczVXZQUlRSSWVLNFIxTloxUWhCZHI2RVZjdDFyU1VKcEdLSVAteU1OM2hsTEttSWJITXpyTnAxNEZaZVY4YUpEaEQtb3A2MER0OE9mRlAxX2hxZjdfc2R5QWptbW41bEEwdXU5akxmMU9sbTE5SUZrMHlSZkpUcHNyLTczeFBrNTdmcllGdGZWZmlDVWZGS1Z6RWx1LTc4YnFBX2VmQUE1a1RtRGNRMHBiVHAzaWpxeDBEZktOcXJPVHJXcTk2WFUzSURDYi00R191SnpualdicVNQOXVObUhCeXFZaGlKZ1JqQTJSb091ekFIRWtCNFh0S2VRbF9ITzVlcWNKMnRXVER1LWU4eTRpTWtsdmd3emdPY0dUSW1aSXFIZDE5VkN5U3lvNlR1WnJwdlMxNVhlR0x3UDBJbm8zaEhtcXdiTzFURGlJeEVnN21KZ0dPdnBORklhUSIsInNlc3Npb25fc3RhdGUiOiJjSFdsLW1RYUpKeFU1bEFNckNaUy1LTXFHZHkxdXp5bk8yVGNwX2trRDBZLkFDZXBHZ01YNEVRV3I1V1IyMUJHQkEiLCJhY2Nlc3NfdG9rZW4iOiJleUpoYkdjaU9pSlNVekkxTmlJc0ltdHBaQ0k2SWpnMU56Z3dOV1l4WkdRM1ptRTVZVFppTlRJM1pqUTBaV05tWm1Ka05EaGpJaXdpZEhsd0lqb2lZWFFyYW5kMEluMC5leUp1WW1ZaU9qRTNNemN6TURNd01ETXNJbVY0Y0NJNk1UYzJPVFEwTXpnd015d2lhWE56SWpvaWFIUjBjSE02THk5cFpDNW9iR1V1WTI5dExuUjNJaXdpWVhWa0lqcGJJbUZ3YVRFaUxDSkpaR1Z1ZEdsMGVWTmxjblpsY2tGd2FTSXNJbWhoYm14cGJpMWhjR2tpWFN3aVkyeHBaVzUwWDJsa0lqb2lhbk1pTENKemRXSWlPaUppTnpjeU1qQTVNUzAwWVdReUxUUXhZVFF0WWpNelppMDVZelF5TkRaak56WXhPVFFpTENKaGRYUm9YM1JwYldVaU9qRTNNemN6TURNd01ESXNJbWxrY0NJNklteHZZMkZzSWl3aWFIUjBjRG92TDNOamFHVnRZWE11ZUcxc2MyOWhjQzV2Y21jdmQzTXZNakF3TlM4d05TOXBaR1Z1ZEdsMGVTOWpiR0ZwYlhNdlpXMWhhV3hoWkdSeVpYTnpJam9pYTI5c1lXUnBNVGMyTWtCaWRYcGliRzk0TG1OdmJTSXNJa0Z6Y0U1bGRDNUpaR1Z1ZEdsMGVTNVRaV04xY21sMGVWTjBZVzF3SWpvaU4wZEdTVVJJV2t0RlYxQlVTbGRSUWtvM1NUZE5OVlUwTlZsWE1rbFJValVpTENKbGJXRnBiQ0k2SW10dmJHRmthVEUzTmpKQVluVjZZbXh2ZUM1amIyMGlMQ0ptWVcxcGJIbGZibUZ0WlNJNkl1bVpzeUlzSW1kcGRtVnVYMjVoYldVaU9pTG9nSUhsdUtzaUxDSnVZVzFsSWpvaTZabXo2SUNCNWJpcklpd2laVzFoYVd4ZmRtVnlhV1pwWldRaU9uUnlkV1VzSW5Cb2IyNWxYMjUxYldKbGNpSTZJakE1TWpnek5USTVOVEVpTENKd2FHOXVaVjl1ZFcxaVpYSmZkbVZ5YVdacFpXUWlPblJ5ZFdVc0luQnlaV1psY25KbFpGOTFjMlZ5Ym1GdFpTSTZJdW1acy1pQWdlVzRxeUlzSW5WelpYSmZaRzl0WVdsdUlqb2laV1IxSWl3aWNtOXNaU0k2SXVpQWdlVzRxeUlzSW5OamFHOXZiRk41YzNSbGJTSTZJdVdjaS1Xd2p5SXNJbWx6YVdSbGJuUnBabWxsWkNJNmRISjFaU3dpYkc5amF5STZkSEoxWlN3aWRtVnlJam96TENKelkyOXdaU0k2V3lKdmNHVnVhV1FpTENKd2NtOW1hV3hsSWl3aVlYQnBNU0lzSWtsa1pXNTBhWFI1VTJWeWRtVnlRWEJwSWl3aWFHRnViR2x1TFdGd2FTSXNJbTltWm14cGJtVmZZV05qWlhOeklsMHNJbUZ0Y2lJNld5SndkMlFpWFgwLkhkQ1FwQnJMRXkxVktraFNIVThWU05fZmlOSVU1alBuZUJuaGVrdzY0R1lBX3VLNEh5S2N4SXFnX2dicFdnQVVOWlZXSXZHbXBhTEItRGp4bVlka3N3dkFYVE9GazJrc2NYNXQ2R0RYTHdLaVhkS3J3QmkxQ0hUdEppWUVtdmNKcDR2M2JENy0yTjdxTkNVMFJ5dzFudEJEUU1rTFM5UzNxTnBCTmNmQ2VZN195enlpR050QVJsS1cxeEw0bzI4UEpVN3BmSngxdEZ6WGZESVJpLVFVbzh1T1lOSEFUX21iUEVKTm01eVM5RU5BallMS1F6LXVVb3hTUndIMDl5aUVFaXJEZlZTN1JjWlhFMS1KbVhkcXRXN1hlbF9XdTRZYVlDYlpvN0pia2FlMWxvbjBYR3lVWTRTS09Kb2E5VVplUWVMNTZzZzhhX3BqTC13MEE3eEpkUSIsInJlZnJlc2hfdG9rZW4iOiJVYWI2ZHV4N0ltV3lHM2lqZFNESWJvOHdib2JFZ3psQUtMN3NXb3Jvd044IiwidG9rZW5fdHlwZSI6IkJlYXJlciIsInNjb3BlIjoib3BlbmlkIHByb2ZpbGUgYXBpMSBJZGVudGl0eVNlcnZlckFwaSBoYW5saW4tYXBpIG9mZmxpbmVfYWNjZXNzIiwicHJvZmlsZSI6eyJzX2hhc2giOiJXbm1HQWg1OVpqWkxMVXgxQXZocU5nIiwic2lkIjoiRDRoMEMtdzczcU5NZVh6eURRdlVRQSIsInN1YiI6ImI3NzIyMDkxLTRhZDItNDFhNC1iMzNmLTljNDI0NmM3NjE5NCIsImF1dGhfdGltZSI6MTczNzMwMzAwMiwiaWRwIjoidHJ1ZSIsImh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzLzIwMDUvMDUvaWRlbnRpdHkvY2xhaW1zL2VtYWlsYWRkcmVzcyI6ImtvbGFkaTE3NjJAYnV6YmxveC5jb20iLCJBc3BOZXQuSWRlbnRpdHkuU2VjdXJpdHlTdGFtcCI6IjdHRklESFpLRVdQVEpXUUJKN0k3TTVVNDVZVzJJUVI1IiwiZW1haWwiOiJ0ZWFjaGVyQGhsZS5jb20udHciLCJmYW1pbHlfbmFtZSI6Iue/sOaelyIsImdpdmVuX25hbWUiOiLmm7jlsYAiLCJuYW1lIjoi57+w5p6X5pu45bGAIiwiZW1haWxfdmVyaWZpZWQiOnRydWUsInBob25lX251bWJlciI6IjA5MjgzNTI5NTEiLCJwaG9uZV9udW1iZXJfdmVyaWZpZWQiOnRydWUsInByZWZlcnJlZF91c2VybmFtZSI6Iue/sOael+abuOWxgCIsInVzZXJfZG9tYWluIjoiZWR1Iiwicm9sZSI6IuiAgeW4qyIsInNjaG9vbFN5c3RlbSI6IuWci+WwjyIsImlzaWRlbnRpZmllZCI6dHJ1ZSwibG9jayI6ZmFsc2UsInZlciI6MywiYW1yIjpbInB3ZCJdfSwiZXhwaXJlc19hdCI6MTc2OTQ0MzgwNH0='))), [decodeURIComponent(escape(atob('ZWRpc2NfdmFsaWR1c2VyX3YyMDIz')))]: decodeURIComponent(escape(atob('bW9ja1VzZXI='))) }).forEach(([k, v]) => localStorage.setItem(k, v));
    window.location.reload();
  }

})();

感謝,試了登入可以,但未登入不行,仍是非常感謝!

@Junwei601
Copy link

Junwei601 commented Feb 12, 2025

需要康軒帳號跟奇鼎的業務號碼麻煩各為了(不會更改任何設定)
如果願意請傳到
[email protected]的信箱謝謝

@jenny7202
Copy link

求康軒跟南一雲端出題帳號,小孩自學要用的急需,如願意者請傳送到
[email protected] 信箱,非常感謝.

@maggiezoe
Copy link

需要康軒帳號(不會更改任何設定)
我的信箱[email protected] 謝謝

@lisa830315
Copy link

需要康跟南帳號密碼
小孩自學 不會更改任何設定
我的信箱[email protected]

@yyyr1005
Copy link

@yyyr1005
Copy link

Copy link

ghost commented Feb 14, 2025

需要康軒賬號(不會更改任何設定)
我的信箱[[email protected]]謝謝

@yyyr1005
Copy link

@BenChen5
Copy link

因為小孩子使用康軒的教材
所以需要康軒帳號(不會更改任何設定)
我的信箱:[email protected]
非常謝謝您

@ino26
Copy link

ino26 commented Feb 14, 2025

若要找的是【國小】資源
網路應可找到所需的免登入雲端硬碟的資源

@liutnnnnng
Copy link

我是家裡長
懷求康軒、南一帳密(最終對不會改變),感謝~
信箱:[email protected]

@itsnottzqj
Copy link

需要康軒帳號(不會更改任何設定)
我的信箱[email protected]謝謝

@Kevin-Cheong
Copy link

自學需要,在此懇求龍騰帳密(絕不變更),郵箱如下,感謝~!
[email protected]

@Hohn0987
Copy link

有人可提供康軒帳密嗎?

@sera5885
Copy link

我有康軒南一的帳號和密碼 有需要電子書可以跟我說

麻煩我要康軒帳號,謝謝 [email protected]

我需要南一跟康軒的帳號密碼,謝謝您的分享

可以跟您索取康軒帳號及密碼嗎?很需要學習資源協助孩子,懇請協助

[email protected]
您好 我需要康軒帳密 [email protected]

@emily810022
Copy link

我有康軒南一的帳號和密碼 有需要電子書可以跟我說

麻煩我要康軒帳號,謝謝 [email protected]

我需要南一跟康軒的帳號密碼,謝謝您的分享

可以跟您索取康軒帳號及密碼嗎?很需要學習資源協助孩子,懇請協助
[email protected]
您好 我需要康軒帳密 [email protected]

您好~我需要康軒的帳密 ([email protected]) 謝謝您

@ericliuliuliu
Copy link

您好 我需要翰林輔材網的帳號密碼 絕對不會隨意更改
[email protected]

@fyrryr
Copy link

fyrryr commented Feb 18, 2025 via email

@kerry0112
Copy link

我覺得用安裝版的會比較好,因為大部分書局會為了兼容性而繼續讓舊版本可以使用,那我們就只要找到一個漏洞就可以使用很久,不過也要想辦法把自動更新關掉

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment