2012年6月26日

[教學]如何用語法保護網頁文章著作權__(2) 阻止全文轉載

A+

(Pic from: 123rf.com)
接續「上一篇」,掌握了使用語法來控制訪客複製內容的關鍵技術後,也就擁有了保護自己創作的「倚天劍」,接下來看看這把寶劍能夠使出什麼樣的劍法。


一、基本招式

1. 阻止全文複製:複製內容既然可以偷加版權資訊,那麼當然也可以狸貓換太子──換成不相干的內容;不過掉包內容是太狠了一點,允許複製部分資訊是合理的作法,其餘的部分就改成「更多內容請見 WFU BLOG...」等自設版權宣告。

2. 不傷及無辜:這一點跟第 1 點是一體兩面,有時訪客只是複製個標題、網址、或是一句話,那麼就沒必要「寧可錯殺、不可放過」。利用語法計算複製的字數,低於自設標準就不加版權資訊

3. 轉換超連結語法:此為「上一篇」未解決的問題,把第 1 點的自設文字內容加上超連結,對於我們自己或是複製的訪客都有好處。

4. 允許自己複製:阻止全文複製這招其實是七傷拳,殺敵一萬、自損三千,像我常常搜尋自己 Blog 的資料,搞得自己也不能複製那還得了。因此使用語法,設定特殊按鍵組合,按下後允許全文複製,才不會中自己的招。

以上四點是本篇內容的概念,以下為實作方法。



二、安裝方式

如果「上一篇」有安裝程式碼到範本的話,請將原本 </body> 後面的程式碼刪除。做完以上動作後,一樣找到 </body>,在它的後面一行加入以下程式碼:


以上紅字部分的參數可以自訂──

D:允許被複製的字數,這裡設成只有 10 個字是為了後面示範方便。假如設為 200 的話,意思就是超過 200 字的部分會截掉,可依個人需求修改,500 或 1000 都可。

E:附加版權的字串,可自行修改。

F:附加版權超連結的文字,通常設為自己的部落格名稱。

G:允許自己複製的第一個暗碼,87 代表按下 w 鍵。

H:允許自己複製的第二個暗碼,70 代表按下 f 鍵。

G~H 的意思是,按下複製之前,只要依序按下 w 及 f 鍵,按的速度沒有限制,就可解開附加版權的機關,能夠進行全文複製。「這個網頁」的後半部可以查詢每個鍵的鍵值,「這個網頁」可以偵測每個按鍵的鍵值,把想要更改的鍵值依序填入 G 行及 H 行即可,請注意大小寫的鍵值不同

接下來是各部分的程式碼說明,不瞭解程式碼可跳過,直接看「四、建議事項」及「五、複製效果測試」。


三、程式碼說明

以下按照程式執行順序──

BP:偵測到按鍵的動作時,執行 Copyright_Keydown 函數。

AZ:這部分便是「4. 允許自己複製」的流程;event 是 onkeydown 的隱藏參數。

BA~BB:因為語法有跨瀏覽器的相容性問題,這兩行參照「這個網頁」改寫才得以成功。

BC~BM:這裡的意思是,假如使用者連續兩個鍵都按對了,之後就不再檢查;如果還沒按對,依序檢查第一、第二個按鍵;按對時,分別將 Copyright_Setting.k1 及 Copyright_Setting.k2 這兩個變數的值改為 1, 按錯時依序歸零。

如果想改成類似像「上、上、下、下、左、右、A、B」遊樂器時代的密技鍵也是可以,這部分的程式碼就得改長一些,自己也會按得比較累一些...

BO:偵測到複製的動作時,執行 Add_Copyright 函數,以下流程跟「上一篇」差不多,重複的部分就不再贅述。

S:如果 E~F 的版權宣告還想改更多的文字、版面細項,請在這一行做更改。另外,這一行跟上一篇有小小的查別──請注意超連結語法部分,"<"、">" 這兩個字元改成了 "&lt;" 與 "&gt;",這是多次測試後得到的解答,這樣子改的話超連結語法就不會消失了。

AA~AB:如果複製的文字字數超過允許的字數設定,進行附加版權的動作;如果按過允許複製的密技鍵,就不會進行附加版權的動作。

AC:超過允許複製的部分截斷,加上 "..." 字元。

AN~AO:同 AA~AC 的語法

2012.6.26 增補

留言有人表示可用拖曳到 word 的方式複製,故新增以下一行程式碼:

BQ:封鎖滑鼠拖曳的動作


四、建議事項

如果安裝本篇的程式碼,最好能知會訪客,在網頁裡版權宣告的部分、或是網頁明顯處說明本部落格不歡迎全文轉載,以及其他詳細的說明文字,以免造成訪客錯愕。另外也可參考「這個網頁」,幫部落格加上「不轉載」字樣的貼紙。


五、複製效果測試

這個區塊可以測試複製效果 請隨意複製此區塊的任何文字
如果小於 10 個字元 不會附加版權資訊
如果大於 10 個字元 超過的部分會被截斷 並附加版權資訊
但是如果用滑鼠選取超過 10 個字元後
依序按下 w 及 f 鍵(注意是小寫)
再進行複製
則不會附加版權資訊

好了,現在可以測試以上區塊的複製效果,各大瀏覽器應該都是沒問題的(Chrome、FireFox、IE)。有沒有發現這次超連結的語法出現了?如此訪客複製到自己的文本裡,儲存後就不會出現長長的網址,而會是簡潔的超連結了。

2012.7.4 補充

目前發現在不知名的情況下,測試區的效果在某些 WIN7 + IE8 的環境會測試不出來;測試區效果在特定情形失效的原因也許是以下:

1. 為了讓本文的程式碼能被複製,本文區未使用防止複製的語法。
2. 為了讓語法只在「測試區」生效,我改變了測試區的部分語法,讓防止複製的語法只在測試區生效。
3. 結果改變的這一小小部分語法,造成在 "部分" WIN7 + IE8 的環境,測試區的語法是失效的。

由於「"作業系統"也會導致語法執行效果不同」這件事超出我的知識範疇,加上我沒有 WIN 7 作業環境可長時間測試,因此我採取了以下簡單的應對方法:

請按此到「測試網頁」,測試網頁使用完整的防止複製語法,沒有任何改變,在 WIN7 + IE8 的環境也能生效。

至於原本的測試區語法在 WIN7 + IE8 失效的原因是什麼,由於有替代測試方法,就暫時擱置,先不追究了。


相信這篇已經足以對付初級的複製貼上一族,下一篇要使出進階的招式對付中階轉載者。


著作權保護系列文章:

26 則留言:

  1. nice posting.. thanks for sharing.

    回覆刪除
  2. 我剛剛測試了一下~我的ie8還是可以全部複製...
    沒出現連結語法~但是用Chrome就OK~
    出現的效果我喜歡~哈
    RainSakura

    回覆刪除
  3. <5038492188195012284>(以上內容請勿刪除,從括號之後開始留言)因為我用 IE8 測是 ok 的, 請問:
    1. 用 IE8 在我文章最後的複製區測試 ok 嗎?
    2. 還是安裝到 Xuite 後在 IE8 失效?

    回覆刪除
  4. <437049723971318864>(以上內容請勿刪除,從括號之後開始留言)我在複製區使用的時候就已經失效了耶~目前還沒有空弄進去xuite

    回覆刪除
  5. <5914493371710685200>(以上內容請勿刪除,從括號之後開始留言)會不會是你的 IE8 關閉了 javascript 功能?請幫忙 check 一下「工具」--> 「網際網路選項」--> 「安全性」--> 「自訂等級」--> 「指令碼處理」--> 「Active scripting」是否勾選「停用」? 如果是勾選「啟用」的話,就是允許 javascript。

    另一個辨別方法請看一下右邊側邊欄,如果 javascript 被關閉的話,那麼最新文章、最新回應都是無法顯示的;謝謝測試回報。

    回覆刪除
  6. <2565178805165142596>(以上內容請勿刪除,從括號之後開始留言)它是起用的~側欄的部分也都可以正常顯示~

    回覆刪除
  7. <3543103951247128636>(以上內容請勿刪除,從括號之後開始留言)對了...剛剛在Chrome測試按wf的也沒有成功耶...

    回覆刪除
  8. <3543103951247128636>(以上內容請勿刪除,從括號之後開始留言)唔..想不到原因了..我每台電腦及 NB 都用 IE 測試, kkman 也測了, 都是ok 的, 要請大家來測試了.

    回覆刪除
  9. <330999209491249692>(以上內容請勿刪除,從括號之後開始留言)沒關係,請大家來測試了。

    回覆刪除
  10. 家裡筆電測試結果Chrome、FireFox、IE9都OK~
    公司電腦玩了一個下午結果都一樣XD

    回覆刪除
  11. 反白選取後再拖曳到 Word 之類的編輯軟體就破解了…

    其實與其做這些功夫,不如挑種授權條款(如CC授權等)明白告訴使用者怎麼分享文章比較好。

    回覆刪除
  12. <7776999042326655793>(以上內容請勿刪除,從括號之後開始留言)
    ok, 新增了封鎖滑鼠拖曳的功能。

    回覆刪除
  13. <7417320525672466636>(以上內容請勿刪除,從括號之後開始留言)
    根據我的經驗,沒消息就是好消息,既然沒有測試失敗的回報出現,我就先當這篇的程式碼是可行的,而你公司電腦的狀況,暫時視為獨立事件或個案了~ XD

    回覆刪除
  14. XD~回家測試我家PC的IE8也是失敗耶

    回覆刪除
  15. <5247596515594537900>(以上內容請勿刪除,從括號之後開始留言)
    所以筆電用 IE9 ok, PC 用 IE8 不行?
    IE8 是哪些功能失敗呢?

    由於我的所有 IE8 環境都 ok, 所以目前也無法找出原因。真的不行只好等第三集了~ -_-

    回覆刪除
  16. 剛剛用我弟的電腦測試~一樣是IE8...一樣失敗

    回覆刪除
  17. <4812825176675523070>(以上內容請勿刪除,從括號之後開始留言)
    大概知道是什麼原因了,今天在一台 WIN7 電腦用 IE8 測試,果真出現失效的情形,所以──兇手就是 WIN7。我家電腦沒有 WIN7 系統,全部都是 XP 系統,要 WIN7 的環境才有辦法修正程式碼,再等等了。

    回覆刪除
  18. 想請問~我的部落格偶爾也會分享一些 Blogger hack code,當用了這種方式保護文章著作權後,那些 code 也連帶無法被 copy,有對應的處理方式嗎?謝謝!

    回覆刪除
  19. <8145461695635522509>(以上內容請勿刪除,從括號之後開始留言)如果是這樣的話,只好另外把 code 存在 http://codepen.io/ 這一類的服務,給個連結到文章裡了。codepen 怎麼使用要請自行 google 了~

    回覆刪除
  20. 找到SyntaxHighlighter,他有 copy code 功能,試試看了...,呵~不知道會不會成功。

    回覆刪除
  21. <2009621349968345602>(以上內容請勿刪除,從括號之後開始留言)如果成功了請再回報囉~

    回覆刪除
  22. SyntaxHighlighter 版本不少,最新的 3.X 版沒有 copy code 功能,卻是唯一試了有成功的,但沒有複製原始碼也沒用...。其他舊版本,盡力測試就是不行,對我來說太難 >"< 。

    換回你說的 codepen 繼續研究,暫時存成文字檔上傳到 google 雲端做替代方案。

    回覆刪除
  23. sorry,codepen感覺比較專業,我又弄回SyntaxHighlighter,我使用測試blog,原來之前的操作是work的(看這裡),可能本尊blog累積太多亂象了...

    回覆刪除
  24. <1191457747562318001>(以上內容請勿刪除,從括號之後開始留言)測試網頁的 SyntaxHighlighter 看起來效果不錯!

    回覆刪除
  25. 嗯,正在一行行核對範本文件.,不知道有沒有幫助 XD

    回覆刪除

張貼留言注意事項:

◎ 勾選「通知我」可收到後續回覆的mail!
提問請附網址、詳細描述狀況,如提供的資訊不足,則無法回覆。
◎ 請在相關文章留言,與文章無關的主題請至「Blogger 中文論壇」。
◎ 若詢問 CSS 、非官方範本問題、或貴站為商業網站 ,請參考「本站諮詢頁面」→「1. 諮詢服務」
◎ 若留言要輸入語法,"<"、">"這兩個符號請用其他符號代替,否則語法會消失!
◎ 若發現留言不見了,通常是因為 "複製貼上" 的內容常被系統判定為垃圾留言,請不用擔心,我會定期將留言恢復。
◎ 本站「已關閉自刪留言功能」。