使用前請務必閱讀 免責聲明。
本指令碼用於繞過臺灣電子書與教學工具的前端身分驗證,達成不需要教師帳號即可使用。
原本是因為開發者忘記帶課本,但又想要查閱課本的資料,心血來潮研究看看電子書的驗證設計。
開發這個不是希望拿去抄答案,是希望讓真正需要用的人可以用到,也希望各家出版社能提供一種學生與家長的版本,就是只能瀏覽但不能顯示解答或者專為學習者設計,就可以完美解決這些問題。
這邊示範翰林版如何使用,其他出版社以此類推。
首先先前往要使用的電子書或相關工具網站(下方有連結),接著在瀏覽器的開發人員工具(F12)中的主控台(Console)輸入以下指令碼即可迴避登入。
這邊以 Google Chrome 瀏覽器作為示範,其他瀏覽器大同小異。
請勿變更下列所有帳號的個人資料!
注意事項:需要先點選要下載的電子書資源,再執行指令碼才會生效。目前尚未支援網頁版,造成不便之處,敬請見諒。
if (window.location.href.startsWith("https://webetextbook.knsh.com.tw/")) {
var executed = false;
document.querySelectorAll('.downAssetBtn').forEach(function(button) {
if (!executed && (!document.getElementById('assetsPage') || document.getElementById('assetsPage').style.display === 'none')) {
alert('請先點選您要使用的電子書再執行指令碼。');
executed = true;
} else if (!executed && button.getAttribute('d-title').includes("(網頁版)")) {
alert('偵測到網頁版內容,目前尚未支援此功能,造成不便之處,敬請見諒。');
executed = true;
} else if (!executed) {
var link = document.createElement('a');
if (window.location.href.startsWith("https://webetextbook.knsh.com.tw/webcase/index.html")) {
link.href = 'https://storage1.knsh.com.tw/material/' + button.getAttribute('d-file_name');
link.textContent = '下載';
} else if (window.location.href.startsWith("https://webetextbook.knsh.com.tw/2/index.html")) {
link.href = 'https://webetextbook.knsh.com.tw/Ebookviewer4Teacher/Ebook.html?id=' + (button.getAttribute('d-file_name') ? button.getAttribute('d-file_name').replace('.zip', '') : '');
link.textContent = '開啟';
}
button.innerHTML = '';
button.appendChild(link);
localStorage.setItem("loginAccount", "mockAccount"); // 設定假的帳號
localStorage.setItem("uuid", "mockUUID"); // 設定假 UUID
}})} else if (confirm('網址錯誤,請選擇要開啟的項目:\n\n1. 國小領域\n2. 國小英語\n3. 國中領域\n4. 國中輔材\n5. 網頁媒體盒')) {
var selectedURL = ['https://webetextbook.knsh.com.tw/2/index.html?code_degree=1','https://webetextbook.knsh.com.tw/2/index.html?code_degree=3','https://webetextbook.knsh.com.tw/2/index.html?code_degree=2','https://digitalmaster.knsh.com.tw/ebook/review/','https://digitalmaster.knsh.com.tw/downloader/box-web/index.html'][parseInt(prompt('請輸入您的選擇(輸入數字 1、2、3、4 或 5):')) - 1];
selectedURL && window.open(selectedURL, '_blank');
}
最後測試時間:2023/12/21|感謝 @J56tw 和 @foxvegajiang 提供方法
連結:翰林行動大師
注意事項:目前「單檔下載」和「全部下載」的資源功能暫時無法使用。您可以透過「備課資料庫」進行下載。由於該資料庫包含當科的所有資源,因此檔案大小相當大,可能造成您的不便,敬請諒解。
if (window.location.href.startsWith("https://edisc3.hle.com.tw/edisc_v3")) {
let time = new Date().getTime().toString();
localStorage.setItem("last_signinX_v2023", time); // 將帳號登入日期設為目前時間,避免被判定為過期
localStorage.setItem("roleX_v2023", "老師"); // 將身分設定為老師
localStorage.setItem("emailX_v2023", "[email protected]"); // 由於翰林電子書會驗證是否有設定電子郵件,如有設定才能使用
location.reload(); // 重新載入網頁
} else if (window.confirm("網址錯誤,按一下「確定」來開啟網站。")) {
window.open('https://edisc3.hle.com.tw/edisc_v3/ebook_v2023.html', '_blank');
}
最後測試時間:2022/12/21
連結:OneBook 電子書|OneBox 網頁版|OnePaper 線上雲端出題
if (window.location.href.includes("oneclass.com.tw")) {
let mockToken = JSON.stringify({
"code": "SUCCESS",
"jwt": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwOi8vbXlhY2NvdW50Lm5hbmkuY29vbC8iLCJzdWIiOiJ1c2Vycy9MZW5zODM4MCIsImZyb20iOiJOYW5pIiwidXNlcm5hbWUiOiJMZW5zODM4MCIsImVtYWlsdmFsaWQiOnRydWUsIm1vYmlsZXZhbGlkIjpmYWxzZSwiZW1haWwiOiI1bTF0Z3J4ZkBkdWNrLmNvbSIsInVpZCI6ImNhZWEzY2EwLTZlN2QtMTFlZS05NTlhLTJmNDEzZWZhMjIxZiIsImp0aSI6Ijc0NTRhYmJiLTZiYWUtNGRkOS1iZmJiLWIxZjEyNzE3MjFlYSIsImlhdCI6MTcwMjk4MzkzNywiZXhwIjoxNzA4MTY3OTM3fQ.HvQkN-h8Y0n5yFgQQ3ckuM8X7-rIo5GRMpEn1ElRHU0"});
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); // 設定身分驗證用的權杖
location.reload(); // 重新載入網頁
} else if (confirm('網址錯誤,請選擇要開啟的項目:\n\n1. OneBook 電子書\n2. OneBox 網頁版\n3. OnePaper 線上雲端出題')) {
var selectedURL = ['https://reader.oneclass.com.tw/bookshelf','https://onebox2.oneclass.com.tw/','https://onepaper.oneclass.com.tw/'][parseInt(prompt('請輸入您的選擇(輸入數字 1、2 或 3):')) - 1];
selectedURL ? window.open(selectedURL, '_blank') : alert('無效選擇,請重新執行並輸入有效的數字。');
}
最後測試時間:2023/12/21
連結:翰林輔材網
if (window.location.href.startsWith("https://reference.hle.com.tw")) {
sessionStorage.setItem("userToken", "mockToken"); // 設定假的權杖
sessionStorage.setItem("userRole", "老師"); // 將身分設定為老師
location.reload(); // 重新載入網頁
} else if (window.confirm("網址錯誤,按一下「確定」來開啟網站。")) {
window.open('https://reference.hle.com.tw/', '_blank');
}
最後測試時間:2023/12/21
連結:何嘉仁電子書櫃
if (window.location.href.startsWith("https://bookonline.hess.com.tw/bookcase/#/")) {
if (!localStorage.getItem("isLogin")) {
localStorage.setItem("isLogin", "true"); // 將登入狀態設為是(true)
localStorage.setItem("uuid", "mock_user"); // 設定假的教師 UUID
location.reload(); // 重新載入網頁
}} else if (window.confirm("網址錯誤,按一下「確定」來開啟網站。")) {
window.open('https://bookonline.hess.com.tw/bookcase/#/', '_blank');
}
最後測試時間:2023/12/21
您可以在留言區提問,但在提供前請先看這裡!
- 為什麼原本的專案不見了?
這個 Gist 為原先的分支(Fork)版本,原作者 菘菘 已刪除原 Gist,若要查看原因請點選下方「查看原因」來展開,也請各位不要討論著作權法或出版商規範的話題。
查看原因
有鑑於蠻多人利用此討論區進行一些可能涉及著作權法或出版商規範的事情,因此我預計於今天晚些時候刪除此 Gist 的所有內容,避免造成違法疑慮。此外我發現本腳本的使用者有蠻多人是使用國民中學這教育階段的相關資源,在此也推薦一款適合要應考國中教育會考的軟體:會考沙漏
Google Play 下載(Android 手機或平板):https://play.google.com/store/apps/details?id=io.siongsng.cap_countdown iPhone、iPad、電腦等裝置:https://siongsng.github.io/cap-countdown/
- 如何解決「網址錯誤,按一下「確定」來開啟網站」錯誤訊息?
您可能到了錯誤的網站,請按一下「確定」來開啟網站,或者從上方點選連結。
- 其他電子書呢?
可以留言區詢問,我會嘗試破解看看。由於龍騰的驗證機制較強,且無帳號可供測試,目前無法提供。
- 我要怎麼回報您?
點選在本篇文章最上方的星星圖示,感謝您的支持!
- 如何在手機或平板電腦上使用?
以下以 Chrome 應用程式介紹,其他瀏覽器大同小異,詳細請點選下方「查看方法」來展開。
查看方法
- 依序輕觸網址列右側的「更多」圖示
⫶
> 「星號」圖示★
。 - 輕觸下方彈出的「編輯」,輸入您想要使用的新名稱。
- 將網址改成以下指令碼:
javascript:(function () { var script = document.createElement('script'); script.src="https://cdn.jsdelivr.net/npm/eruda"; document.body.append(script); script.onload = function () { eruda.init(); } })();
- 前往要使用電子書的網站,在網頁列輸入書籤的名稱,輕觸它。
- 輕觸右下角的「齒輪」圖示
⚙️
。 - 在 Console 分頁貼上電子書的指令碼。
- 如何在開啟電子書時跳過驗證?
由於大部分的電子書是在開啟電子書時驗證身分,直接開啟電子書的網址即可繞過身分驗證(可以將網址儲存到書籤);本指令碼隨時都有可能失效,可用時請趕快下載想要用的檔案。
- 我找到了新的方法或帳號,要怎麼提供給您?
您可以透過電子郵件 [email protected] 來跟我聯絡,感謝您!
- 如何修復指令碼無法貼到開發人員工具?
如果您使用的是繁體中文(如上圖),請輸入「允許貼上
」,然後按下 Enter 鍵。
如果您使用的是英語(如上圖),請輸入「allow pasting
」,然後按下 Enter 鍵。
對於其他語言,請輸入對應引號內的內容,然後按下 Enter 鍵。
- 因為本指令碼僅繞過前端的身分驗證,因此可能會導致無法使用儲存班級紀錄、測驗等功能。
- 翰林版電子書每天會自動重設資料,因此需重新執行指令碼。
- 目前翰林帳號已失效,需尋找更好的解決方案。
- 現有的一些指令碼有些地方的迴避方式不是很好,在未來或許可以用其他方式執行指令碼來取代現行做法。
The script was made by SiongSng, continued by notlin4. | 本指令碼由 菘菘 製作,由 notlin4 繼續更新
版權所有 © 2022-2023 菘菘 和 notlin4。保留一切權利。
Copyright © 2022-2023 SiongSng and notlin4. All rights reserved.