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

i042416發表於2018-08-22

我寫公眾號文章時,經常需要從一些網站的文章上查閱一些資料。比如我想把這個網頁上的一個標題“SAP Fiori 2.0使用者體驗設計概念獲紅點大獎”進行拷貝。

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

然而當我按了鍵盤上的拷貝快捷鍵Ctrl C後,卻收到這個提示,告訴我只有登陸後才能夠進行復制操作。

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

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

下面是詳細步驟。

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的原創技術文章,請關注公眾號"汪子熙"或者掃描下面二維碼:


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

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


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/24475491/viewspace-2212541/,如需轉載,請註明出處,否則將追究法律責任。

相關文章