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", "test@test.com"); // 由於翰林電子書會驗證是否有設定 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.

@Chien-mia
Copy link

@R9OKM
請問還有康軒的帳號密碼嗎?
感謝分享
irenegogo@livemail.tw

@Chien-mia
Copy link

@ Jetfuhong
請問方便跟您索取康軒出題高手的帳密嗎?
irenegogo@livemail.tw

@Vivi1226
Copy link

大家好,想求康軒 wonder world 7 電子書,破解或是帳密,給孩子學習用的,懇請好心專業分享,謝謝呢
weipuding@gmail.com

@xiaozhaoTW
Copy link

Copy link

ghost commented Oct 28, 2024

大家好,想求康軒 wonder world 7 電子書,破解或是帳密,給孩子學習用的,懇請好心專業分享,謝謝呢 weipuding@gmail.com


電子書3分鐘設定好的快速方法

1. 先幫瀏覽器裝腳本執行環境  [ 適用 Microsoft Edge 的下載 ]


2. 把 vochant 大大建立的腳本貼進去

點一下展開腳本
// ==UserScript==
// @name         KNSHUtility Lite
// @namespace    http://vochant.github.io/
// @version      2.3
// @description  KNSH Utility - Cracks & Features
// @author       Mirekintoc (vochant)
// @match        https://digitalmaster.knsh.com.tw/v3/pages/*/index.html*
// @match        https://digitalmaster.knsh.com.tw/ebooks/BookMain/Viewer_*/index.html*
// @icon         https://webetextbook.knsh.com.tw/Ebookvieweran4Teacher/favicon.ico
// @license      MIT
// @grant        unsafeWindow
// ==/UserScript==

(function() {
    console.log(unsafeWindow);
    // 頁面類型判定
    if (/https:\/\/digitalmaster\.knsh\.com\.tw\/v3\/pages\/[^/]+\/index\.html.*/.test(location.href)) {
        console.log("運行模式: 導覽頁");
        // 導覽頁面 - 繞過登入驗證
        unsafeWindow.__fetch = unsafeWindow.fetch;
        unsafeWindow.fetch = async function(url, opts) {
            if (/verifykeygrip/i.test(url)) { return { json: function() { return { isValid: true }; } }; }
            try {
                let rData = await unsafeWindow.__fetch(url, opts);
                let r = await rData.json();
                return { json: function() { return JSON.stringify(r).includes("errorType") ? { isValid: true } : r; } };
            } catch { }
        };
    } else if (/https:\/\/digitalmaster\.knsh\.com\.tw\/ebooks\/BookMain\/Viewer_[A-Z]\/index\.html.*/.test(location.href)) {
        console.log("運行模式: 國小電子書");
        // 國小電子書頁面 - 繞過登入驗證
        unsafeWindow.SaveCommForKnshAPIOriginal = unsafeWindow.SaveCommForKnshAPI; // 備份原構造函數
        unsafeWindow.SaveCommForKnshAPI = function() {
            let obj = new SaveCommForKnshAPIOriginal ();
            obj.VerifyHasLogin = function(arg) {
                var t = senjClass.GetQueryString("shortcode");
                var n = function(t) { arg && arg.fun && arg.fun(t) };
                n({result: true});
                return true;
            };
            console.log(obj);
            return obj;
        }; // 重寫構造函數
    }
    else { console.log('運行模式未知'); }
})();


3. 建立電子書桌面捷徑,開啟 Power Shell 把下面貼上去按 Enter
4. 完成,以後就不用再煩惱

$WshShell = New-Object -COMObject WScript.Shell
$Shortcut = $WshShell.CreateShortcut("$Home\Desktop\電子書.lnk")
$Shortcut.TargetPath = "C:\Program Files (x86)\Microsoft\Edge\Application\msedge.exe"
$Shortcut.Arguments = "--app=https://digitalmaster.knsh.com.tw/ebooks/BookMain/Viewer_A/index.html?CUR_BOOK_URL=https://digitalmaster.knsh.com.tw/ebooks/%E5%9C%8B%E5%B0%8F/Books/113%E4%B8%8A/15_%E8%8B%B1%E8%AA%9E_WW/04_%E7%AC%AC7%E5%86%8A/01_%E7%B6%B2%E9%A0%81%E9%9B%BB%E5%AD%90%E6%9B%B8/K1131WW_7/Resource/SystemResource/knsh_book/&openby=knsh"
$Shortcut.Save()


Copy link

ghost commented Oct 29, 2024

請問南一及翰林的怎麼破解,謝謝

Tip

  所謂的「破解」有一種破壞個什麼來達到目標的感覺,個人比較偏好「繞過去」。繞過去有很多方法,像是發現哪邊有個縫隙就繞過去;或是帶著特別的識別證明直接挑一個發楞中的監督機制面前繞過去、...等。當然,最好的繞過去機制 —— 就是拿著不屬於自己的帳號、密碼,大喇喇地開門走進去。

  看了好一陣子,這裡真的有許多熱心的人們,提供了許多不一樣的方式,滿足人們獲得有效率學習的目的。畢竟,不是每個家庭都一樣負擔的起在學習上面的投資,剛好看到這裡有一些機會就來這裡碰碰運氣。不過也看到更多情況,在帳號密碼流通之後,很多人就會修改密碼帳號,以便更進一步享受專屬自己的特權。同樣,也會有廠家會假裝索求帳號密碼,然後拿回去特地封鎖、刪除帳號;或是提供申請方式,直接封鎖那些申請者的門號資訊,當個道德上的正義使者。

  很多事情、很多時間點,都會有人持著正面或反面的觀點去行動,這也是這個世界精彩的地方。雖然常覺得肚爛,但還是可以往好的地方去想。老天爺給每個人的禮物都一樣:當自己不爽的時候,就感受不到快樂;相反地,假裝快樂的時候,快樂的感覺反而有機會經由想像力擴展到整個世界。沒錯,在每個當下,我們都有自由意志去發現自己的感受,然後靠想像力去改變自己的感受。

  這也是分享者持續下去的原因,從接收到的分享發現自己的那一股油然而生的喜悅、再抱持著那樣的感受,去行動。

Important

除了帳號密碼不易取得、也容易消逝以外。另一個稍微有一些較長生命週期的選擇,大概就是繞過去的「腳本」了。關於腳本,如果你注意到它、打算拿它來碰碰運氣了,那麼,有些東西還是要先知道一下。

1. 怎麼繞?

這裡的繞過去,大多一定要開啟網頁瀏覽器的開發工具。目前主流的瀏覽器大多內建了開發工具,一般使用者也能輕鬆開啟,也因為這樣,透過腳本繞過去登入機制就有機會成為可能。所以,啟用開發工具跟貼上腳本將會是要多多去熟練的習慣動作。怎麼繞總是發現腳本的人在尋找期間會傷腦筋的事,使用成形之後的腳本則簡單地多。通常,有帳號密碼再去發現怎麼繞過去是一種方式,有時候是覆寫函數進行測試的過程,有時候是電子書本身留下串口...。

2.安全嗎?

剛開始使用腳本,擔心會不會洩漏個人資訊是正常的,如果不太放心,就把腳本貼去問 ChatGPT 看看有沒有會偷個人資訊的片段,或許也是一個可能讓你安心的選擇。要不然就開一個系統沙箱,在裡面執行看看是不是你要的結果。再決定要不要使用在一般的執行環境中。對我來說,使用電腦版電子書才是不放心的事情,所以我寧願都設定、固定放在沙箱裡面執行。再不然就是執行前先做好系統還原點,等學期末了、或不再需要用到電子書了,再還原到沒執行過電子書之前的環境...。

3.繁瑣嗎?

腳本的生命週期,大概在網頁重新讀取就失效了。目前有些方式可以執行腳本:

  1. 有熱心的分享者做成了書籤的方式讓人得以方便地載入腳本,只要在每次載入電子書時再開啟腳本書籤就好。

  2. 另外在瀏覽器開發工具裡,也有可以固定放腳本的地方,像是 EDGE 叫做 "片段",在 BRAVE 裡叫做 "Snippets"。只要把腳本存進去,每次開啟電子書之後再執行這裡的腳本也是一種方法。像是敝人區區在下常常會使用到這個:

    /* -----解鎖被網站禁止的右鍵----- */
    document.oncontextmenu = function(e) {
        document.oncontextmenu = null;
        return ftrue;
    }
  3. 如果想要省下更多手動部分,那麼安裝瀏覽器的腳本附加元件將會是一個自動化執行腳本的選擇。這類腳本執行環境的安全性一樣取決於你所要執行的腳本。這類的應用範圍可以很廣,拿最近的新聞來說,似乎也是有人想像過用這樣的環境去試著實現在訂票系統上。

  4. 相比於操作執行腳本,最不容易的應該就是發現那怎麼繞過去的腳本了。這也是最辛苦的地方,特別在這裡感謝願意花時間在其中的人們。他們可能是熱心的學生們;可能是出版社裡某一群烤雞不美麗卻在這裡找到成就感的工程;也可能是一群陪著小孩學期成長的家長們;...。不論如何,都值得我們由衷地感恩。

Tip

以下示範的腳本都是從這裡,還有那裡參考來的,欲知詳情可前往一探究竟:

- https://gist.github.com/J56tw/424d63cb2925f427b05f447064900e29

- https://gist.github.com/notlin4/a05d7db77cd5606a812f4b9900fef3ee

Note

腳本範例:南一

  1. 開啟電子書網站:https://reader.oneclass.com.tw/bookstore
2. 腳本貼進去:
if (window.location.href.includes("oneclass.com.tw")) {
    try {
        const mockToken = JSON.stringify({ "code": "SUCCESS", "jwt": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwOi8vbXlhY2NvdW50Lm5hbmkuY29vbC8iLCJzdWIiOiJ1c2Vycy91bmljeWNsZTQiLCJmcm9tIjoiTmFuaSIsInVzZXJuYW1lIjoidW5pY3ljbGU0IiwiZW1haWx2YWxpZCI6dHJ1ZSwibW9iaWxldmFsaWQiOmZhbHNlLCJlbWFpbCI6ImtyNTJ5NTRtQGR1Y2suY29tIiwidWlkIjoiNDA3YzBhNjAtMzgxZS0xMWVmLWEyZjMtMGYxNmE0Y2MyYjA4IiwianRpIjoiMzEzNGE2ZDAtZTc0Zi00MDM0LTkzNjItMDY2YmI0NzA0YTcwIiwiaWF0IjoxNzI1MDczMzUyLCJleHAiOjE3MzAyNTczNTJ9.UIiK2nzCpv-F-LKYBWDEgsQQ5AdyW92tH5U9_t9Couo" });
        document.cookie = "nani_oneclass_login_token=" + mockToken +  ";expires=" + new Date(Date.now() + (1 * 24 * 60 * 60 * 1000)).toUTCString() +  ";path=/;domain=oneclass.com.tw";
        localStorage.setItem("nani_tokenInfo", mockToken); // 設定驗證用的權杖
        location.reload(); // 重新載入網頁
    } catch (error) { }
}

腳本範例:翰林

  1. 開啟電子書網站:https://edisc3.hle.com.tw/edisc_v3/ebook_v2023.html
2. 腳本貼進去:
let time = new Date().getTime().toString();
localStorage.setItem("last_signinX_v2023", time); // 將帳號登入日期設為目前時間,避免被判定為過期
localStorage.setItem("roleX_v2023", "老師"); // 將身分設為老師
localStorage.setItem("emailX_v2023", "test@test.com"); // 由於翰林電子書會驗證是否有設定電子郵件,如有設定才能使用
localStorage.setItem("lockX_v2023", "false");
localStorage.setItem("tokenX_v2023", "eyJhbGciOiJSUzI1NiIsImtpZCI6Ijg1NzgwNWYxZGQ3ZmE5YTZiNTI3ZjQ0ZWNmZmJkNDhjIiwidHlwIjoiYXQrand0In0.eyJuYmYiOjE3MjcwMDk4MjcsImV4cCI6MTc1OTE1MDYyNywiaXNzIjoiaHR0cHM6Ly9pZC5obGUuY29tLnR3IiwiYXVkIjpbImFwaTEiLCJJZGVudGl0eVNlcnZlckFwaSIsImhhbmxpbi1hcGkiXSwiY2xpZW50X2lkIjoianMiLCJzdWIiOiJiNzcyMjA5MS00YWQyLTQxYTQtYjMzZi05YzQyNDZjNzYxOTQiLCJhdXRoX3RpbWUiOjE3MjcwMDk4MjcsImlkcCI6ImxvY2FsIiwiaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3MvMjAwNS8wNS9pZGVudGl0eS9jbGFpbXMvZW1haWxhZGRyZXNzIjoia29sYWRpMTc2MkBidXpibG94LmNvbSIsIkFzcE5ldC5JZGVudGl0eS5TZWN1cml0eVN0YW1wIjoiN0dGSURIWktFV1BUSldRQko3STdNNVU0NVlXMklRUjUiLCJyb2xlIjoi6ICB5birIiwiZW1haWwiOiJrb2xhZGkxNzYyQGJ1emJsb3guY29tIiwiZmFtaWx5X25hbWUiOiLlhbHlkIwiLCJnaXZlbl9uYW1lIjoi55So5oi2IiwibmFtZSI6IuWFseWQjOeUqOaItiIsImVtYWlsX3ZlcmlmaWVkIjp0cnVlLCJwaG9uZV9udW1iZXIiOiIwOTI4MzUyOTUxIiwicGhvbmVfbnVtYmVyX3ZlcmlmaWVkIjp0cnVlLCJwcmVmZXJyZWRfdXNlcm5hbWUiOiLlhbHlkIznlKjmiLYiLCJ1c2VyX2RvbWFpbiI6ImVkdSIsInNjaG9vbFN5c3RlbSI6IuWci-WwjyIsImlzaWRlbnRpZmllZCI6dHJ1ZSwibG9jayI6ZmFsc2UsInZlciI6Mywic2NvcGUiOlsib3BlbmlkIiwicHJvZmlsZSIsImFwaTEiLCJJZGVudGl0eVNlcnZlckFwaSIsImhhbmxpbi1hcGkiLCJvZmZsaW5lX2FjY2VzcyJdLCJhbXIiOlsicHdkIl19.PGXhy1RBo_ff1lzvinDS8pR7qOeeotbQTaaW8kRRaF35Ga9QnhFM1FArfHXofPwNQvwok7KLfOosCA8iegJC2dN2EZPSflZMHD8VPn4UZ6ZJTSAXt2s_T-hm6MEZM9iNoDerlam9G64evmtfrW0qygnLrMqVjGxVxXiy0pOM-8VcVMkc-iBNzZRV-vxnokS0jqQCTwAdkVMKCuFksrpRNtg2HLAAwVPosey5rjnBH4ivIMUey1dbZzaHRQwdZ3_ZDM5h9-j_1LKGvrVpNQ-VcLc2-iShUVbb0bxwCzpkmTJ1ySSH4edZV36rFgXQNcDASARC5ujBUVQ79Brc6hR37w"); // 設定驗證用的權杖
location.reload(); // 重新載入網頁

腳本範例:康軒

  1. 開啟電子書網站:https://digitalmaster.knsh.com.tw/v3/pages/e/index.html
2. 腳本貼進去:
(function() {
    const g = e => decodeURIComponent(escape(atob(e))),
          msg = [
              "免登入腳本加載完成,重新整理網頁就會失效!",
              "嘿, 同學, 你現在不在數位高手頁面, 要幫你轉過去嗎?\n提醒一下, 開啟網址之後還是要再載入一次腳本!!"
          ];
    
    if (!window.location.href.startsWith(g('aHR0cHM6Ly9kaWdpdGFsbWFzdGVyLmtuc2guY29tLnR3Lw=='))) {
        if (confirm(msg[1])) { window.location.href = g('aHR0cHM6Ly9kaWdpdGFsbWFzdGVyLmtuc2guY29tLnR3L3YzL3BhZ2VzL2UvaW5kZXguaHRtbCN5ZWFyPTExMzEmZmllbGQ9bWEmZ3JhZGU9YWxsJml0ZW09ZWJvb2s='); }
    } else {
        if (window.location.href.match(/https:\/\/digitalmaster\.knsh\.com\.tw\/v3\/pages\/[^/]+\/index\.html/)) {
            const test = { [g("aXNWYWxpZA==")]: g('dHJ1ZQ=='), [g("ZXhwaXJ5")]: '1729764377274', [g("cm9sZQ==")]: g("6ICB5bir"), [g("c2lnbmF0dXJl")]: "01wRkaaBXEtP2PwsxDp-dO6yMBQ", [g("dXVpZA==")]: g("NzE1NjMx") };
            const originalFetch = window.fetch;
            window.fetch = async (url, opts) => { const response = () => ({ json: () => test }); if (/g('dmVyaWZ5a2V5Z3JpcA==')/i.test(url)) return response(); const data = await (await originalFetch(url, opts)).json(); return { json: () => data.errorType ? test : data }; };
            console.log(msg[0]);
        }
    }
})();

粗略地接觸過之後,才知道一切都不容易啊,在能把握資源的當下,好好享受吧!

@kerry0112
Copy link

Screenshot_2024-10-28-22-06-32-309_com android chrome-edit 請問這部分的電話怎麼填

第一個是區碼https://zh.wikipedia.org/zh-tw/%E4%B8%AD%E8%8F%AF%E6%B0%91%E5%9C%8B%E9%9B%BB%E8%A9%B1%E8%99%9F%E7%A2%BC
第二個是學校的電話號碼(不用再填一次區碼)
第三個就隨便填,但只能是3位數
例:02-1234567#101

@Vivi1226
Copy link

感謝@ghost(抱歉我不太會tag),有操作您提供的方式,在最後一個步驟無法建立電子書於桌面,還請幫解惑,謝謝
擷取
電腦是win10

@leeyoyo0914
Copy link

想求康軒版帳號密碼,謝謝
yoyoleeusb@gmail.com

Copy link

ghost commented Oct 30, 2024

感謝@ghost(抱歉我不太會tag),有操作您提供的方式,在最後一個步驟無法建立電子書於桌面,還請幫解惑,謝謝 擷取
電腦是win10

@Vivi1226

/* 
   找不到資料夾的 exception 可能是資料夾搬走了,系統變數找不到,不然就是防毒軟體擋住了。 
   資料夾搬走可能是放到其他資料碟,常常做系統還原的人可以靠這個保持順暢又能讓資料不會變不見。
   防毒軟體擋住可能有鎖定跟帳號有關的資料夾,可試試把路徑改到像是 D:\tmp 再用檔案總管搬回去桌面。
   下面的做法是試著找出搬走之後桌面的新路徑,再去建立捷徑。
*/

$WshShell = New-Object -COMObject WScript.Shell
$Shortcut = $WshShell.CreateShortcut("$([System.Environment]::GetFolderPath('Desktop'))\康軒英文電子書WW7.lnk")
$Shortcut.TargetPath = "$env:ProgramFiles (x86)\Microsoft\Edge\Application\msedge.exe"
$Shortcut.Arguments = "--app=https://digitalmaster.knsh.com.tw/ebooks/BookMain/Viewer_A/index.html?CUR_BOOK_URL=https://digitalmaster.knsh.com.tw/ebooks/%E5%9C%8B%E5%B0%8F/Books/113%E4%B8%8A/15_%E8%8B%B1%E8%AA%9E_WW/04_%E7%AC%AC7%E5%86%8A/01_%E7%B6%B2%E9%A0%81%E9%9B%BB%E5%AD%90%E6%9B%B8/K1131WW_7/Resource/SystemResource/knsh_book/&openby=knsh"
$Shortcut.Save()

@Vivi1226
Copy link

想求康軒版帳號密碼,謝謝 yoyoleeusb@gmail.com

感謝@ghost(抱歉我不太會tag),有操作您提供的方式,在最後一個步驟無法建立電子書於桌面,還請幫解惑,謝謝 擷取 電腦是win10

@Vivi1226

/* 
   找不到資料夾的 exception 可能是資料夾搬走了,系統變數找不到,不然就是防毒軟體擋住了。 
   資料夾搬走可能是放到其他資料碟,常常做系統還原的人可以靠這個保持順暢又能讓資料不會變不見。
   防毒軟體擋住可能有鎖定跟帳號有關的資料夾,可試試把路徑改到像是 D:\tmp 再用檔案總管搬回去桌面。
   下面的做法是試著找出搬走之後桌面的新路徑,再去建立捷徑。
*/

$WshShell = New-Object -COMObject WScript.Shell
$Shortcut = $WshShell.CreateShortcut("$([System.Environment]::GetFolderPath('Desktop'))\康軒英文電子書WW7.lnk")
$Shortcut.TargetPath = "$env:ProgramFiles (x86)\Microsoft\Edge\Application\msedge.exe"
$Shortcut.Arguments = "--app=https://digitalmaster.knsh.com.tw/ebooks/BookMain/Viewer_A/index.html?CUR_BOOK_URL=https://digitalmaster.knsh.com.tw/ebooks/%E5%9C%8B%E5%B0%8F/Books/113%E4%B8%8A/15_%E8%8B%B1%E8%AA%9E_WW/04_%E7%AC%AC7%E5%86%8A/01_%E7%B6%B2%E9%A0%81%E9%9B%BB%E5%AD%90%E6%9B%B8/K1131WW_7/Resource/SystemResource/knsh_book/&openby=knsh"
$Shortcut.Save()

@ghost 感謝您專業的回覆,那我再試試看,謝謝呢

@Ethan11360
Copy link

@nikeeden
Copy link

nikeeden commented Nov 7, 2024

你好 登入失敗 可以告訴我康軒的帳號密碼?謝謝 nikeeden@gmail.com

@nikeeden
Copy link

nikeeden commented Nov 7, 2024

請問有康軒的帳密嗎? nikeeden@gmail.com 非常感謝!

@herry0728
Copy link

康軒是不是都不提供自修的部分?

@dhsgwrrt
Copy link

康軒業務電話0919-993655

@dhsgwrrt
Copy link

康軒業務電話0919-993655

@dhsgwrrt
Copy link

康軒業務電話0919-993655

@Ethan-lo258
Copy link

已更新 2.3 版本,修復了之前的問題,精簡了部分無用功能。 安裝方法:

  1. 安裝 Tampermonkey(篡改猴)插件
  2. 添加用戶脚本
  3. 把下面的代碼複製進去
// ==UserScript==
// @name         KNSHUtility Lite
// @namespace    http://vochant.github.io/
// @version      2.3
// @description  KNSH Utility - Cracks & Features
// @author       Mirekintoc (vochant)
// @match        https://digitalmaster.knsh.com.tw/v3/pages/*/index.html*
// @match        https://digitalmaster.knsh.com.tw/ebooks/BookMain/Viewer_A/index.html*
// @icon         https://webetextbook.knsh.com.tw/Ebookvieweran4Teacher/favicon.ico
// @license      MIT
// @grant        unsafeWindow
// ==/UserScript==

(function() {
    // 'use strict';
    console.log(unsafeWindow);
    // 页面类型判定
    if (location.href.match(/https:\/\/digitalmaster\.knsh\.com\.tw\/v3\/pages\/.*\/index\.html.*/)) {
        console.log("运行模式: 导览页");
        // 导览页面 - 绕过登录验证
        unsafeWindow.__fetch = unsafeWindow.fetch;
        unsafeWindow.fetch = async function(url, opts) {
            if (/verifykeygrip/i.test(url)) {
                return {
                    json: function() {
                        return {isValid: true};
                    }
                };
            }
            else {
                let r = (await unsafeWindow.__fetch(url, opts)).json();
                if (JSON.stringify(r).includes("errorType")) {
                    return {
                        json: function() {
                            return {isValid: true};
                        }
                    };
                }
                return { json: function() {return r;} };
            }
        }
    }
    else if (location.href.match(/https:\/\/digitalmaster\.knsh\.com\.tw\/ebooks\/BookMain\/Viewer_A\/index\.html.*/)) {
        console.log("运行模式: 国小电子书");
        // 国小电子书页面 - 绕过登录验证
        unsafeWindow.SaveCommForKnshAPIOriginal = unsafeWindow.SaveCommForKnshAPI; // 备份原构造函数
        unsafeWindow.SaveCommForKnshAPI = function() {
            let obj = new SaveCommForKnshAPIOriginal;
            obj.VerifyHasLogin = function(arg) {
                var t = senjClass.GetQueryString("shortcode");
                var n = function(t) {
                    arg && arg.fun && arg.fun(t)
                };
                n({result: true});
                return true;
            }; // 重写
            console.log(obj);
            return obj;
        }; // 重写构造函数
    }
    else {
        console.log('运行模式未知');
    }
})();

1732028504161
不好意思
@vochant 大大
您撰寫的腳本好像失效了 麻煩請您查看一下這張照片
確認是不是失效了 感恩

@suencery
Copy link

@Ethan-lo258 你的貼圖最上面就寫著要你點它去看怎麼設定開發人員模式啊

@yiiiiii-web
Copy link

@vochant大大
請問我如果成功進去了可以選英文以外的課本嗎?
教小孩需要 非常感謝您耐心看完!

@vochant
Copy link

vochant commented Nov 21, 2024

@vochant大大 請問我如果成功進去了可以選英文以外的課本嗎? 教小孩需要 非常感謝您耐心看完!

可以的,理論上沒有限制

@Lucy1209347
Copy link

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

麻煩我要康軒帳號,謝謝
lucy730807@gmail.com

@Lucy1209347
Copy link

https://github.com/evonisme/EvGo

麻煩我要康軒帳號,謝謝
lucy730807@gmail.com

@jane880206
Copy link

我需要康軒帳密,謝謝
jane880206@gmail.com

@MoElJe
Copy link

MoElJe commented Nov 22, 2024

我需要康軒帳密,謝謝
ubif520@gmail.com
拜託大家🙇

@Vivi1226
Copy link

感謝@ghost(抱歉我不太會tag),有操作您提供的方式,在最後一個步驟無法建立電子書於桌面,還請幫解惑,謝謝 擷取 電腦是win10

@Vivi1226

/* 
   找不到資料夾的 exception 可能是資料夾搬走了,系統變數找不到,不然就是防毒軟體擋住了。 
   資料夾搬走可能是放到其他資料碟,常常做系統還原的人可以靠這個保持順暢又能讓資料不會變不見。
   防毒軟體擋住可能有鎖定跟帳號有關的資料夾,可試試把路徑改到像是 D:\tmp 再用檔案總管搬回去桌面。
   下面的做法是試著找出搬走之後桌面的新路徑,再去建立捷徑。
*/

$WshShell = New-Object -COMObject WScript.Shell
$Shortcut = $WshShell.CreateShortcut("$([System.Environment]::GetFolderPath('Desktop'))\康軒英文電子書WW7.lnk")
$Shortcut.TargetPath = "$env:ProgramFiles (x86)\Microsoft\Edge\Application\msedge.exe"
$Shortcut.Arguments = "--app=https://digitalmaster.knsh.com.tw/ebooks/BookMain/Viewer_A/index.html?CUR_BOOK_URL=https://digitalmaster.knsh.com.tw/ebooks/%E5%9C%8B%E5%B0%8F/Books/113%E4%B8%8A/15_%E8%8B%B1%E8%AA%9E_WW/04_%E7%AC%AC7%E5%86%8A/01_%E7%B6%B2%E9%A0%81%E9%9B%BB%E5%AD%90%E6%9B%B8/K1131WW_7/Resource/SystemResource/knsh_book/&openby=knsh"
$Shortcut.Save()

您好,有成功建立在桌面上,但很可惜無法登入,請問有沒有其他方式可以登入電子書呢?感恩

Uploading 新索引標籤 - 個人 - Microsoft​ Edge 2024-11-22 21-45-16.mp4…

@Vivi1226
Copy link

康軒業務電話0919-993655

請教一下這要如何登入康軒?是要新建帳號的方式嗎?謝謝呢
weipuding@gmail.com

@MoElJe
Copy link

MoElJe commented Nov 23, 2024

請問有康軒帳密嗎
ubif520@gmail.com
謝謝🙇

@dhsgwrrt
Copy link

dhsgwrrt commented Nov 23, 2024

請問有康軒帳密嗎?
sam5530@yahoo.com.tw
謝謝😀

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