您好,登錄后才能下訂單哦!
這篇文章主要介紹“什么是網(wǎng)站防盜鏈”,在日常操作中,相信很多人在什么是網(wǎng)站防盜鏈問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”什么是網(wǎng)站防盜鏈”的疑惑有所幫助!接下來,請跟著小編一起來學(xué)習(xí)吧!
盜鏈
是個什么操作,看一下百度給出的解釋:盜鏈
是指服務(wù)提供商自己不提供服務(wù)的內(nèi)容,通過技術(shù)手段繞過其它有利益的最終用戶界面(如廣告),直接在自己的網(wǎng)站上向最終用戶提供其它服務(wù)提供商的服務(wù)內(nèi)容,騙取最終用戶的瀏覽和點擊率。受益者不提供資源或提供很少的資源,而真正的服務(wù)提供商卻得不到任何的收益。 術(shù)語聽得有點迷糊?那我們簡單的舉個栗子:
平時我們在TX網(wǎng)
看新聞,里邊有很多勁爆的圖片、視頻資源,每天吸引上億的用戶活躍瀏覽,賺著大把的廣告費。 有一天一個窮比程序員小富突發(fā)奇想,也想建一個自己的網(wǎng)站吸引用戶賺廣告費,但苦于自己沒有資源,他靈光一閃盯上了TX網(wǎng)
,心想:要是把它的資源為我所用,這樣就能借助TX的資源為自己賺錢。
于是他通過爬蟲等一些列技術(shù)手段,把TX網(wǎng)
資源拉取到自己的小富網(wǎng),繞過了TX網(wǎng)
的展示頁面直接呈現(xiàn)給用戶,達到了自己不提供資源又能賺錢的目的。
而如此做法卻嚴(yán)重的損害了TX網(wǎng)
的利益,不僅分流了大量用戶,而且由于小富網(wǎng)的大量間接資源請求,大大增加TX網(wǎng)服務(wù)器及帶寬的壓力。
TX網(wǎng)
蛋糕被動,忍無可忍決定封殺小富網(wǎng)這類空手套白狼的站點,終于祭出防盜鏈系統(tǒng),對除了在TX網(wǎng)
本站以外發(fā)起的資源請求全部封殺,小富網(wǎng)沒法再拉取資源,小富一下子又成了窮比,嚶嚶嚶~ 上邊我們簡單的舉例說了什么是網(wǎng)站的盜鏈,再總結(jié)的簡單點就是小站點盜取大站點資源以此來獲利的一種行為。
既然有人盜就會有人防盜,接下來在看看怎么防止盜鏈。
防盜鏈在google
,新浪
,網(wǎng)易
,天涯
等,內(nèi)容為主的網(wǎng)站應(yīng)用的比較多,畢竟主要靠資源內(nèi)容賺錢的嘛。
提到防盜鏈的實現(xiàn)原理得從HTTP
協(xié)議說起,上邊我們說過設(shè)置防盜鏈以后,會對 “除了在TX網(wǎng)
本站以外發(fā)起的資源請求全部封殺”,那么問題來了,如何識別一個請求URL
是從哪個站點發(fā)出的呢?
熟悉HTTP
協(xié)議的小伙伴應(yīng)該知道,在HTTP
協(xié)議頭里有一個叫referer
的字段,通過referer
告訴服務(wù)器該網(wǎng)頁是從哪個頁面鏈接過來的,知道這個就好辦了,只要獲取 referer
字段,一旦檢測到來源不是本站即進行阻止或者返回指定的頁面。
防盜鏈
的核心理念:盡量做到不讓外站獲取到我的資源,即便能通過一些手段獲取到資源,也讓你的獲取過程異常繁瑣復(fù)雜,無法實現(xiàn)自動化處理,或者干脆就給你有問題的資源惡心死你。
做防盜鏈
的方法比較多,基于HTTP
協(xié)議頭的referer
屬性也只是其中一種,下邊我們來分析幾種實現(xiàn)防盜鏈的方法,如果你有更好的實現(xiàn)方法歡迎留言哦。
基于HTTP
協(xié)議中的 referer
做防盜鏈,可以從網(wǎng)關(guān)層或者利用AOP
、Filter
攔截器實現(xiàn)。
使用Nginx
在網(wǎng)關(guān)層做防盜鏈,目前是最簡單的方式之一。通過攔截訪問資源的請求,valid_referers
關(guān)鍵字定義了白名單,校驗請求頭中referer
地址是否為本站,如不是本站請求,rewrite
轉(zhuǎn)發(fā)請求到指定的警告頁面。
在 server
或者 location
配置模塊中加入:valid_referers none blocked
,其中 none
: 允許沒有http_refer
的請求訪問資源(比如:直接在瀏覽器輸入圖片網(wǎng)址);blocked
: 允許不是http://
開頭的,不帶協(xié)議的請求訪問資源。
注意:這種實現(xiàn)可以限制大多數(shù)普通的非法請求,但不能限制有目的的請求,因為可以通過偽造referer
信息來繞過。
[root@server1 nginx]# vim conf/nginx.conf location / { root /web; index index.html; } location ~* \.(gif|jpg|png|jpeg)$ { root /web; valid_referers none blocked www.chengxy-nds.top; if ($invalid_referer){ #return 403; rewrite ^/ https://img-blog.csdnimg.cn/20200429152123372.png; } } server { listen 80; server_name www.chengxy-nds.top; location / { root /bbs; index index.html; } } [root@server1 nginx]# systemctl restart nginx
Filter
攔截器的實現(xiàn)方式更加簡單,攔截指定請求URL
,拿到HttpServletRequest
中 referer
值比對是否為本站。
public class MyFilter implements Filter { @Override public void doFilter(HttpServletRequest request, HttpServletResponse response, FilterChain chain) throws IOException, ServletException { HttpServletRequest req = (HttpServletRequest) request; HttpServletResponse res = (HttpServletResponse) response; String referer = req.getHeader("referer"); if (referer == null || !referer.contains(req.getServerName())) { req.getRequestDispatcher("XXX.jpg").forward(req, res); } else { chain.doFilter(request, response); } } }
登錄驗證這種就屬于一刀切的方式,一般在論壇、社區(qū)類網(wǎng)站使用比較多,不管你發(fā)起請求的站點是什么,到我這先登錄,沒登錄請求直接拒絕,簡單又粗暴。
圖形驗證碼是一種比較常規(guī)的限制辦法,比如:下載資源時,必須手動操作驗證碼,使爬蟲工具無法繞過校驗,起到保護資源的目的。
到此,關(guān)于“什么是網(wǎng)站防盜鏈”的學(xué)習(xí)就結(jié)束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學(xué)習(xí),快去試試吧!若想繼續(xù)學(xué)習(xí)更多相關(guān)知識,請繼續(xù)關(guān)注億速云網(wǎng)站,小編會繼續(xù)努力為大家?guī)砀鄬嵱玫奈恼拢?/p>
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。