小技巧:如何突破某些網站只能登錄後才能進行文字拷貝的限制

我寫公衆號文章時,常常須要從一些網站的文章上查閱一些資料。好比我想把這個網頁上的一個標題「SAP Fiori 2.0用戶體驗設計概念獲紅點大獎」進行拷貝。html

然而當我按了鍵盤上的拷貝快捷鍵Ctrl C後,卻收到這個提示,告訴我只有登錄後纔可以進行復制操做。前端

但是爲了登錄我得先註冊,有點麻煩。若是趕時間的話,可使用這篇文章的小技巧,達到不用先註冊再登錄,也能任意拷貝網頁文字的效果。瀏覽器

下面是詳細步驟。cookie

1. 和往常同樣打開您想複製文字的網頁,先不忙按Ctrl C。按F12打開Chrome瀏覽器的開發者工具。網絡

切換到Network標籤頁。爲了不干擾,先點Clear按鈕把Network標籤頁下的網絡請求所有清除掉。最後以下圖所示:函數

2. 和往常同樣,點擊複製的快捷鍵Ctrl C。此時看到了意料之中的登錄框。然而咱們關心的是:究竟是哪一行JavaScript代碼觸發了這個登錄框?工具

從Chrome開發者工具的Network標籤頁裏,咱們找到了答案。網站

首先在Network標籤頁裏咱們找到了登陸對話框的實現文件artlogin.html。接着,把鼠標放到下圖標註了「2」的VN1134:1,Chrome開發者工具就會自動在一個懸浮窗口裏顯示出究竟是哪一行JavaScript產生了artlogin.html的加載。答案就是標註了「3」的幾個函數。這幾個函數是以調用棧的方式顯示的。設計

最底層的調用棧裏的函數是DisplayPageinfo.document.body.oncopy。作過前端開發的朋友們只要看到這個oncopy,心中就有數了:這就是該網站處理用戶按了Ctrl+C進行文字拷貝的處理函數,oncopy又會調用copyArt函數。調試

如今咱們就進入copyArt函數一探究竟。果真,下圖第3961行試圖讀取用戶對於當前網站的cookie信息。若是cookie爲空,那麼進入第3962行if語句的第一個分支:第3970行的$("#LayerLogin").load("/artlogin.html")負責的正是登錄對話框的加載。

講到這裏,解決方案已經很清楚了:在執行第3962行代碼判斷網站cookie以前,咱們隨便給變量CurUserNameCookiescgcg賦上一些內容,讓它的值不爲空,確保進入IF的ELSE分支就好了。

以下圖,在Chrome開發者工具的Console標籤頁裏給Cookie變量賦值:

因而進入了咱們指望的ELSE分支,此時,我在網頁上選中的文本「SAP Fiori 2.0用戶體驗設計概念獲紅點大獎」已經成功寫入JavaScript變量selhtml中,請你們看代碼第3986行。

直接點Chrome開發者工具的"Continue"按鈕結束調試,打開記事本按粘貼的快捷鍵Ctrl+V,成功了。

要獲取更多Jerry的原創技術文章,請關注公衆號"汪子熙"或者掃描下面二維碼:

相關文章
相關標籤/搜索