僅供HTTP協(xié)議的初學(xué)者了解。
使用HTTP協(xié)議。利用referer做防盜鏈(不需要用php編寫,而是在服務(wù)器層面控制就OK了)
我們在網(wǎng)頁里訪問站外的圖片的時候,在圖片本站是可以看得,在外頭就不能看了
因為header信息中的referer元素。
還有是做統(tǒng)計的時候,
我們能夠統(tǒng)計出來用戶是從哪個地方,什么時間訪問網(wǎng)站的。比如騰訊分析網(wǎng)站
統(tǒng)計的時候是靠什么知道用戶從什么地方去的網(wǎng)站
在HTTP協(xié)議中 頭信息中有一個很重要的選項 referer
referer 表示的是網(wǎng)頁的來源以及上一頁的地址
如果直接在瀏覽器輸入地址,進入網(wǎng)站,則沒有referer頭信息
所以,服務(wù)器可根據(jù)referer來知道用戶從哪個網(wǎng)站進來的和圖片是從哪個網(wǎng)站進來的
利用referer頭信息來設(shè)置防盜鏈的具體操作步驟如下:
- /**
- 如何配置apache服務(wù)器。用于圖片防盜鏈(使用url重寫)
- 在web服務(wù)器層面,我們可以在http協(xié)議的referer頭信息來判斷,
- 如果來自站外,則統(tǒng)一重寫到一個很小的防盜鏈提醒圖片上去
- 步驟:
- 1.打開 apache 重寫模塊 mod_rewrite
- (D:\wamp\bin\apache\apache2.4.9\conf)
- #LoadModule rewrite_module modules/mod_rewrite.so
- 把#去掉,重啟apache
- 2.在需要防盜的網(wǎng)站或者目錄下,寫 .htaccess 文件(windows下不能直接創(chuàng)建,可以另存)
- 并指定防盜鏈規(guī)則
- 分析referer信息,如果不是來自本站,則重寫
- **/
- 重寫規(guī)則 .htaccess 文件
- 1.哪種情況重寫規(guī)則
- 是jpeg/gif/png圖片的時候
- 是referer頭與localhost不匹配的時候
- 2.怎么重寫
- 統(tǒng)一 rewrite 到某個防盜鏈圖片上
- RewriteEngine On
- //只是在改頁面下生效
- Rewrite Base /HTTPxieyi/day1
- //會對以下格式的文件進行重寫規(guī)則
- RewriteCond %{REQUEST_FILENAME} .*\.(jpg|jpeg|gif|png) [NC]
- //如果不是來自localhost的用戶,會重寫
- RewriteCond %{HTTP_REFERER} !localhost [NC]
- //會重寫到自學(xué)it網(wǎng)的logo上
- RewriteRule .* http://www.zixue.it/static/image/common/zixuelogo.png
html的具體代碼如下- <!DOCTYPE html>
- <html lang="en">
- <head>
- <meta charset="UTF-8">
- <title>圖片的防盜鏈</title>
- </head>
- <body>
- <p>
- <img src="http://imgsrc.baidu.com/forum/w%3D580%3B/sign=5547962a02d162d985ee621421e4a8ec/0d338744ebf81a4c06403427df2a6059242da6ea.jpg" alt="">
- <img src="./bb.jpg" alt="">
- <img src="./aa.jpg" alt="">
- </p>
- </body>
- </html>
反防盜鏈的具體代碼如下:- <?php
- /**
- 反防盜鏈
- ****/
- require('./07.class.php');
- $http = new Http('http://localhost/HTTPxieyi/day1/bb.jpg');
- //如果沒有加以下這句話,就會顯示盜鏈
- //加上referer就會告訴瀏覽器,我是來自localhost的,不是來自其他網(wǎng)站的,你不用防我
- $http->setHeader('Referer: http://localhost');
- $res = $http->get();
- //aaa.顯示的倒鏈
- //file_put_contents('./aaa.jpg',substr(strstr($res,"\r\n\r\n"),4));
- file_put_contents('./bbb.jpg',substr(strstr($res,"\r\n\r\n"),4));
- //應(yīng)該在判斷路徑或者response的mime頭信息,確定圖片的類型
聯(lián)系客服