close

盜鏈、防盜鏈與網站的可用性 -網頁設計


圖片防盜鏈(也包括其他類型的文件如音頻、視頻等)機制的目標在于保護自己的服務器資源特別是網絡帶寬不被非法濫用,合理的防盜鏈機制能夠讓網站有效地遠離不法網站的侵擾,讓網站資源最大限度地為自己的訪問用戶服務,而不是不知不覺地默默為其他網站作貢獻。同時,必須注意的是,任何防盜鏈機制都不是百分之百“可靠”的,事實上,大多數網站的防盜鏈設置都是在保護自己不受盜鏈網站的侵害與保證網站可用性之間尋得一個可以接受的平衡點,而網站自身的可用性則顯然應放在第一位,開句玩笑說,最有效的防盜鏈機制,恐怕是拒絕一切http請求 ,那樣,無論其他網站采用怎樣的手段,也無法使用您的圖片以及帶寬,但這也會讓自己的網站不可用。

另一方面,防盜鏈技術自身,從來不是也不可能是網站保護自己版權的手段。簡單地說,只要網頁面向公眾發布,只要網頁能夠被“看”到,無論采用怎樣的“保護”機制,剽竊者總是有辦法將您的內容包括網頁上的各種元素收為已有的,尤其在一個法律失位道德混亂的國度,“聰明人”總是不斷涌現的,各種手段總是層出不窮的。而我們之所以RSS Feed 改為全文輸出中做那樣的說明,是因為:1、表明我們對抓蝦處理Feed的方式“不認同不合作”的立場;2、在檢查我們自己的Feed中抓蝦中的顯示情況時,確實可以看到圖片防盜鏈機制能夠起作用,整個頁面被一貼貼“膏藥”弄得支離破碎,會在很多程度影響用戶的閱讀體驗,提請潛在的訂閱用戶如果可能的話盡量不要使用抓蝦訂閱我們的Feed。

抓蝦對防盜鏈的“破解” 我們前面兩篇文章中關于抓蝦的討論部分,果然再次驗證了我的不學無術與孤陋寡聞 。一位署名“Name”的朋友留言說:

從技術角度來說,你這個根本防不住

看下面的鏈接http://www.zhuaxia.com/readpic.php?url=http://blogsdiy.org/wp-includes/images/smilies/icon_redface.gif
抓蝦對防盜鏈的圖片,可以通過服務器抓取來顯示

檢查了一下,果然!我們的防盜鏈設置對此無能為力。

再次查看我們的Feed在抓蝦中的對應頁面,如《RSS Feed 改為全文輸出》一文在抓蝦中對應的“http://www.zhuaxia.com/item/392061212”,可以看出抓蝦并沒有對我們的圖片采用類似的處理,即未在圖片文件url前添加諸如“http://www.zhuaxia.com/readpic.php?”的字串,設想中的“補丁”效果仍是存在的。

很顯然,抓蝦并不是對所有博客feed中的圖片文件url都進行類似的轉換處理。那么,哪些博客有幸“中選”呢?

在抓蝦好看中著實找了半天——至少又為抓蝦貢獻了半個小時左右的停留時間與數量不小的PageViews,呵呵——不得要領,直到后來找了個名人博客(當然,新浪的)才發現,Feed中的圖片url果然被重新“包裝”了,只是其添加的字符串不是上面所言之“http://www.zhuaxia.com/readpic.php?”而且“http://img.zhuaxia.com/readpic.php?”,看來“readpic.php”是抓蝦的一個相當重要的文件,位于多個Server上。

從抓蝦的角度,也許這樣的方式能夠讓用戶瀏覽時獲得較佳的訪問體驗,避免圖片不能顯示或顯示一個盜鏈警告之類的圖片帶來的影響,一切都是“為了用戶” 。

深入搜索后得知,原來抓蝦的這項技術早已是公開的“秘密”,如這篇如何引用網易、新浪、百度相冊上的圖片,可以看出抓蝦在很大程度上促進了中國互聯網領域的開放,極大地沖擊了各大門戶網站荒謬的“閉關鎖國”政策 。也許,抓蝦應該大張旗鼓地推廣這項服務,肯定會大受歡迎,只不過,盈利點如何尋找則仍然需要抓蝦動動腦筋。

防盜鏈與網站可用性

抓蝦在“readpic.php”采用了哪些高深的技術,是不學無術的我懶得研究的——當然,以我的能力,也研究不出個所以然來,——但看到“Name”的提醒后,直覺的第一反應便是可能利用我們防盜鏈設置中允許空“HTTP_REFERER”訪問的漏洞,畢竟,這是所謂的破解防盜鏈最簡單的解決方案。

于是,將 .htaccess 文件中的這一行屏蔽(具體設置可參考Apache下防止圖片盜鏈中的介紹或找份Apache手冊看一下)

RewriteCond %{HTTP_REFERER} !^$

將 .htaccess 上傳后,再用“http://www.zhuaxia.com/readpic.php?圖片url”測試,果然,圖片已經不能顯示。

但從網站可用性角度看,任何網站都不可能要求必須具有“HTTP_REFERER”才能訪問:這會帶來很多問題。空“HTTP_REFERER”的情況不僅發生在用戶在瀏覽器地址欄中直接輸入圖片地址時,也包括其他很多場景,比如說用戶通過某些代理服務器訪問時,比如說通過收藏訪問時,甚至當特定的隱私設置時也會發出空“HTTP_REFERER”的訪問請求。

兩害擇其輕,因此,目前我們的防盜鏈設置對于抓蝦包括使用抓蝦提供這項“服務”調用我們圖片的情況仍然是“門戶大開”的。

對抓蝦破解防盜鏈的疑問

聲明:如果您已經厭煩了抓蝦了話題,請略過下面的內容。說老實說,我也膩歪透了:用了近一周的時間來討論抓蝦,實在有點不務正業,無論如何,博客學堂討論的主題應該是博客!

如上文所言,抓蝦并不是對所有Feed中的圖片url都進行重新“封裝”——那樣,也許抓蝦不得不增加服務器了,不符合“付出最小化利益最大化”的基本原則。 ——而是有選擇性地對特定Feed進行相應的處理,而且,看來也不是通過某種自動機制,比如說根據對方網站是否設置了防盜鏈而自行“封裝”url (疑問:目前有準確的判斷算法么?),而更像是由人工維護一個是否進行“二次處理”的列表,根據博客的流行度或受歡迎程度,有選擇性地處理。從這個角度看,像博客學堂這樣的訪問量不大的博客是不必擔心的,不過,可以想見的是,如果抓蝦類似設置不僅應用于BSP——BSP終歸是較易處理的,比如說只須針對新浪設置一下,即包涵位于新浪上的成千上萬個博客——還應用于獨立博客,這個列表的維護恐怕就不是件輕松的事了。(說明:本人在抓蝦中并沒有找到針對設置圖片防盜鏈的獨立博客也應用這一策略的實例)

抓蝦在針對特定的網站比如說新浪應用此策略前需事先征得對方網站的同意么?如果沒有,這樣的策略,包括上面提及的抓蝦允許任何人使用此項“服務”調用本身設置了防盜鏈的網易、新浪、百度相冊上圖片的情況,會不會存在某種法律上的隱患?當然,我不懂法律,但人家明明關上了門,盡管門可能簡陋了些,但你硬要破門而入,或提供某種破門工具,性質總是不難界定的,而現實生活中的小偷恐怕很難用對方“門實在太破了簡直誘惑人犯罪”之類的說法為自己尋找免罪的借口。

雖然,在Internet上,是否觀念并不那么明確甚至可能正好是顛倒的,比如說網上有各種“高手”提供名目繁多的“破解”工具,比如說如今連很多所謂的采集軟件也都將“破解防盜鏈”作為賣點,但相對而言,那些還都是遮遮掩掩不能公開見光的,而抓蝦,則位于聚光燈下啊。

也許,抓蝦事先得到了那些網站的許可,或達成了某種程序的默契,畢竟,抓蝦在中文RSS閱讀器市場的占有率在那放著,任何一個BSP都不可能將其忽略或“阻止”自己的Feed在其上不能完整顯示。不過,我個人很懷疑如果這樣的話,那些BSP為什么會同意這樣的處理方式?直接在圖片服務器上為抓蝦打開圖片訪問許可不就得了么?那不更簡單也更有效,同時,還免得抓蝦的“readpic.php”廣泛傳播弄得自己的圖片防盜鏈整個機制形同虛設?從這個角度,揣測抓蝦本來便有著對于圖片“不管你同不同意,我都要顯示”的打算似乎更合乎邏輯。

當然,這些都是推測!

為抓蝦說句公道話

盡管到目前為止,我仍認為在RSS Feed 改為全文輸出中所下的結論,即抓蝦的某些行為“相當不規矩甚至可以說Evil”并不過份——事實上,抓蝦對防盜鏈圖片的處理更加深了我們的這種印象——但必須客觀地說,與許多光鮮的中文網站相比,抓蝦并沒有多少出格之處,或者說,抓蝦并不比那些網站更“不規矩”、更“Evil”。

這是事實,也是現實。


arrow
arrow

    Greenspark 發表在 痞客邦 留言(0) 人氣()