欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

基于 Python實現(xiàn)云服務(wù)器的CDN域名遠(yuǎn)程鑒權(quán)配置

 更新時間:2022年05月16日 11:16:31   作者:? 夢想橡皮擦?  ?  
這篇文章主要介紹了基于 Python實現(xiàn)云服務(wù)器的CDN域名遠(yuǎn)程鑒權(quán)配置,文章內(nèi)容技術(shù)詳細(xì),具有一定的參考價值,需要的小伙伴可以參考一下

實戰(zhàn)場景

在項目實戰(zhàn)中,會碰到一種特定的運(yùn)維場景,對CDN訪問進(jìn)行限制,一般手段是開啟 referer 防盜鏈,開啟 IP黑白名單,開啟UA黑白名單,本篇博客為大家展示的是通過我們自己的服務(wù)器,然后實現(xiàn)遠(yuǎn)程鑒權(quán),進(jìn)行更加細(xì)致的權(quán)限判定。

實現(xiàn)目標(biāo):

  • 請求CDN資源調(diào)用我們的鑒權(quán)服務(wù)器
  • 鑒權(quán)服務(wù)器獲取請求信息,并保存到日志中
  • 分別返回鑒權(quán)成功,鑒權(quán)失敗

開啟遠(yuǎn)程鑒權(quán)

在遠(yuǎn)程鑒權(quán)頁面打開【開關(guān)】之后,出現(xiàn)如下配置界面,這里相關(guān)細(xì)節(jié)描述如下:

  • 鑒權(quán)服務(wù)器地址:我們自己的服務(wù)器,地址可訪問,可以是域名也可以是IP地址;
  • 請求方法:支持 GET,POST,HEAD 三種請求;
  • 鑒權(quán)文件類型:多個文件類型用 | 分隔,例如 mp4|flv;
  • 保留參數(shù)設(shè)置:控制用戶請求 URL 中需要鑒權(quán)的參數(shù),用 | 分隔;
  • 自定義參數(shù):可以自定義參數(shù),可以使用CDN控制臺預(yù)設(shè)的變量,多個參數(shù)用 | 分隔,例如 token=$arg_token|vendor=ali_cdn;
  • 保留請求頭設(shè)置:控制用戶請求頭中需要鑒權(quán)的參數(shù),可以保留所有參數(shù),也可以保留指定參數(shù);
  • 添加自定義參數(shù):給請求頭添加自定義參數(shù);
  • 鑒權(quán)狀態(tài)碼:成功200,失敗 403;
  • 鑒權(quán)超時時長:單位為毫秒,最長時長可以設(shè)置為3000;

參考上述說明配置完畢,得到如下界面,本案例中僅限制了 m3u8 類型的文件,后續(xù)我們根據(jù)實際情況進(jìn)行修改。

開啟該配置之后,再次訪問靜態(tài)資源,就會出現(xiàn) 403 Forbidden

這里需要注意,由于測試的是 m3u8 文件,所以訪問該文件的時候,如果沒有被禁止,會自動下載。

Python 端權(quán)限驗證

以下代碼基于 Flask 編寫,主要將POST請求數(shù)據(jù)和Header請求頭保存到文件中。 日志文件,我們使用 logging 模塊寫入到 new.log 文件中。

# 導(dǎo)入Flask類
from flask import Flask
from flask import request
from flask import render_template
import logging
import requests
import time
import random
import base64
logging.basicConfig(level=logging.DEBUG,
                    filename='./new.log',
                    filemode='a',
                    format='%(asctime)s - %(pathname)s[line:%(lineno)d] - %(levelname)s: %(message)s')
# 實例化,可視為固定格式
app = Flask(__name__)

@app.route('/auth', methods=['GET', 'POST','HEAD'])
def auth():
    if request.method == 'GET':
        args = request.args
        return "hello"
    if request.method == 'HEAD':
        print("HEAD請求")
        arges = request.form
        print("參數(shù)")
        logging.info(arges)
        print(request)
        print("請求頭")
        headers = request.headers
        print(headers)
        logging.info(headers)
        print("請求數(shù)據(jù)")
        logging.info(request.data)
        return "login success", 200 # 403
    if request.method == "POST":
        print("POST請求")
        arges = request.form
        print(request)
        headers = request.headers
        print("參數(shù)")
        logging.info(arges)
        print("請求頭")
        logging.info(headers)
        print("請求數(shù)據(jù)")
        logging.info(request.data)
        return "login success", 200 # 403
if __name__ == '__main__':
    # app.run(host, port, debug, options)
    # 默認(rèn)值:host="127.0.0.1", port=5000, debug=False
    app.run(host="0.0.0.0", port=5000)

此時,當(dāng)你再次訪問CDN資源時,會自動回調(diào)你的服務(wù)器進(jìn)行鑒權(quán)操作,上述代碼請求成功之后,返回狀態(tài)碼為 200,接下來CDN資源可以訪問,如果返回403,表示被禁用。

驗證邏輯

服務(wù)端驗證可以基于 referer + ua + ip 進(jìn)行驗證,為了保證效率,可以使用 redis 緩存數(shù)據(jù)庫進(jìn)行配置。

到此這篇關(guān)于基于 Python實現(xiàn)云服務(wù)器的CDN域名遠(yuǎn)程鑒權(quán)配置的文章就介紹到這了,更多相關(guān)CDN 鑒權(quán)配置內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 基于python元祖與字典與集合的粗淺認(rèn)識

    基于python元祖與字典與集合的粗淺認(rèn)識

    下面小編就為大家?guī)硪黄趐ython元祖與字典與集合的粗淺認(rèn)識。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-08-08
  • python列表插入append(), extend(), insert()用法詳解

    python列表插入append(), extend(), insert()用法詳解

    在本篇文章里小編給大家整理了關(guān)于python列表插入append(), extend(), insert()用法以及相關(guān)知識點(diǎn),有需要的朋友們參考下。
    2019-09-09
  • Python打印三角形九九乘法表代碼

    Python打印三角形九九乘法表代碼

    大家好,本篇文章主要講的是Python打印三角形九九乘法表代碼,感興趣的同學(xué)趕快來看一看吧,對你有幫助的話記得收藏一下,方便下次瀏覽
    2021-12-12
  • python里使用正則的findall函數(shù)的實例詳解

    python里使用正則的findall函數(shù)的實例詳解

    這篇文章主要介紹了python里使用正則的findall函數(shù)的實例詳解的相關(guān)資料,希望通過本文能幫助到大家,需要的朋友可以參考下
    2017-10-10
  • 利用Python進(jìn)行圖像的加法,圖像混合(附代碼)

    利用Python進(jìn)行圖像的加法,圖像混合(附代碼)

    這篇文章主要介紹了利用Python進(jìn)行圖像的加法,圖像混合(附代碼),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-07-07
  • Python+SeaTable實現(xiàn)生成條形碼圖片并寫入表格

    Python+SeaTable實現(xiàn)生成條形碼圖片并寫入表格

    不管是錄入信息時需要用掃碼器掃碼錄入,還是有別的生成條形碼的需要,這在?SeaTable?表格中用?Python?腳本就可以輕松實現(xiàn),本文就來為大家詳細(xì)講解一下
    2022-07-07
  • 如何用Python做一個微信機(jī)器人自動拉群

    如何用Python做一個微信機(jī)器人自動拉群

    這篇文章主要介紹了如何用Python做一個微信機(jī)器人自動拉群,微當(dāng)群人數(shù)達(dá)到100人后,用戶無法再通過掃描群二維碼加入,只能讓用戶先添加群內(nèi)聯(lián)系人微信,再由聯(lián)系人把用戶拉進(jìn)來。這樣,聯(lián)系人員的私人微信會添加大量陌生人,給其帶來不必要的打擾,需要的朋友可以參考下
    2019-07-07
  • python報錯TypeError: Input z must be 2D, not 3D的解決方法

    python報錯TypeError: Input z must be 

    大家好,本篇文章主要講的是python報錯TypeError: Input z must be 2D, not 3D的解決方法,感興趣的同學(xué)趕快來看一看吧,對你有幫助的話記得收藏一下
    2021-12-12
  • 用Python刪除本地目錄下某一時間點(diǎn)之前創(chuàng)建的所有文件的實例

    用Python刪除本地目錄下某一時間點(diǎn)之前創(chuàng)建的所有文件的實例

    下面小編就為大家分享一篇用Python刪除本地目錄下某一時間點(diǎn)之前創(chuàng)建的所有文件的實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2017-12-12
  • 分析詳解python多線程與多進(jìn)程區(qū)別

    分析詳解python多線程與多進(jìn)程區(qū)別

    這篇文章主要為大家分析詳解了python多線程與多進(jìn)程區(qū)別,以及在使用過程中的注意要點(diǎn),有需要的朋友可以借鑒參考下,希望可以有所幫助
    2021-09-09

最新評論