1. <strong id="7actg"></strong>
    2. <table id="7actg"></table>

    3. <address id="7actg"></address>
      <address id="7actg"></address>
      1. <object id="7actg"><tt id="7actg"></tt></object>

        優(yōu)化緩存防盜鏈

        共 2242字,需瀏覽 5分鐘

         ·

        2022-02-28 07:00

        盜鏈?zhǔn)侵副揪W(wǎng)站的資源被非授權(quán)的第三方網(wǎng)站直接在頁面中進行引用。對于被盜鏈的網(wǎng)站來說,盜鏈現(xiàn)象既浪費了大量的帶寬又失去了對于版權(quán)文件的控制,因此需要在緩存節(jié)點上對URL進行校驗,設(shè)置防盜鏈。防盜鏈的幾個基本方法如下?!?/p>

        使用HTTP Referer。

        HTTP Referer是HTTP請求的一個頭部,用于標(biāo)明被請求的資源是在哪個頁面中進行調(diào)用的。對靜態(tài)圖片資源文件,使用HTTPReferer設(shè)置防盜鏈即可。

        ·使用生成動態(tài)鏈接的方法。

        這個方法的本質(zhì)是首先在頁面上產(chǎn)生資源URL的時候,使用動態(tài)編程語言,生成類似如下結(jié)構(gòu)http://music1.woyo.com/music1-abcdefghijk.mp3?key=xxxxyyyyzzzzaaaadddd。在緩存節(jié)點上收到用戶的請求時,對該URL的key進行驗證。該方法一般用于視頻、音頻等比較大的文件的防盜鏈檢查。

        Key的組成

        其中key=20080722101000A-MD5-KEY表示一個加密串。加密串包括以下兩個部分?!?0080722101000:表示時間戳,即年月日時分秒。·A-MD5-KEY:一個MD5串,其計算方式如下為A-MD5-KEY=md5(base_url+datetime+password)。其中,base_url即請求中的http://music1.woyo.com/music1-abcdefghijk.mp3;datetime為請求中的時間戳20080722101000;password是源站和CDN約定的一個密碼。

        校驗過程

        具體的校驗過程如下:

        1. 檢查防盜鏈的串(即key)是否存在,如果不存在,則返回校驗失敗。

        2. 2)從防盜鏈串中取出日期時間,與當(dāng)前時間比較,如果超出有效期范圍(例如,如果與當(dāng)前時間相減,大于±2小時),則返回校驗失敗。

        3. 3)生成MD5的值,與請求中的A-MD5-KEY相比較,如果不等,則返回校驗失敗。

        4. 4)如果上述步驟都通過,則返回校驗成功。

        5. 5)如果校驗成功,則CDN緩存服務(wù)器向用戶返回正常的響應(yīng)。

        6. 6)如果校驗失敗,則向把請求重定向到廣告音頻。實施過程在Squid配置文件中/usr/local/squid/etc/squid.conf增加如下配置:

        redirect_program /usr/local/squid/etc/checkkey.pl
        redirect_children 20

        重定向器

        安裝Perl的MD5模塊:

        cd /root
        wget http://www.kamnet.cn/srv/Digest-MD5-2.36.tar.gz
        wget http://www.kamnet.cn/srv/Digest-Perl-MD5-1.8.tar.gz
        tar xvfz Digest-MD5-2.36.tar.gz
        cd Digest-MD5-2.36
        perl Makefile.PL
        make
        make install
        cd ..
        tar xvfz Digest-Perl-MD5-1.8.tar.gz
        cd Digest-Perl-MD5-1.8
        perl Makefile.PL
        make
        make install

        源碼(checkkey.pl):

        #!/usr/bin/perl -wl
        use Digest::Perl::MD5 'md5_hex';
        use POSIX qw(strftime);

        $|=1;
        my $password = 'IblessWoyo';
        my $errurl = 'http://err.woyo.com/woyo.mp3';
        my $result = 'http://err.woyo.com/woyo.wma';

        while (<>) {
        ($uri,$client,$ident,$method) = ( );
        ($uri,$client,$ident,$method) = split; #解析Squid傳入的參數(shù)
        my $time_from = strftime "%Y%m%d%H%M%S", localtime(time - 1*3600);
        my $time_to = strftime "%Y%m%d%H%M%S", localtime(time + 1*3600);
        next unless ($uri =~m/^http:\/\/(.+?)\/(.*)\?key=([0-9]{14})(.+)$/);
        if (($4 eq md5_hex("/".$2.$3.$password)) && ($3 > $time_from) && ($3 < $time_to)) { #檢查md5和URL中包含的時間
        $result = "http:\/\/$1:81\/$2";
        } else {
        $result = $errurl;
        }
        } continue {
        print $result; #通知Squid防盜鏈檢查結(jié)果
        }


        瀏覽 37
        點贊
        評論
        收藏
        分享

        手機掃一掃分享

        分享
        舉報
        評論
        圖片
        表情
        推薦
        點贊
        評論
        收藏
        分享

        手機掃一掃分享

        分享
        舉報
        1. <strong id="7actg"></strong>
        2. <table id="7actg"></table>

        3. <address id="7actg"></address>
          <address id="7actg"></address>
          1. <object id="7actg"><tt id="7actg"></tt></object>
            久久久噜噜噜久久人人看 | av网站免费在线观看 | 亚洲 欧美 日韩 偷 妻 乱 | 欧美黄片在线免费观看 | 日韩成人黄色电影网站 | 日屄AV| 网友自拍网站 | 农夫与少妇精品视频 | 午夜日韩一区二区三区在线观看 | 午夜精品一区二区三区在线成人 |