91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

基于Python怎么實現云服務器的CDN域名遠程鑒權配置

發布時間:2022-05-16 14:18:06 來源:億速云 閱讀:165 作者:iii 欄目:開發技術

今天小編給大家分享一下基于Python怎么實現云服務器CDN域名遠程鑒權配置的相關知識點,內容詳細,邏輯清晰,相信大部分人都還太了解這方面的知識,所以分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后有所收獲,下面我們一起來了解一下吧。

實戰場景

在項目實戰中,會碰到一種特定的運維場景,對CDN訪問進行限制,一般手段是開啟 referer 防盜鏈,開啟 IP黑白名單,開啟UA黑白名單。

基于Python怎么實現云服務器的CDN域名遠程鑒權配置

實現目標:

  • 請求CDN資源調用我們的鑒權服務器

  • 鑒權服務器獲取請求信息,并保存到日志中

  • 分別返回鑒權成功,鑒權失敗

開啟遠程鑒權

在遠程鑒權頁面打開【開關】之后,出現如下配置界面,這里相關細節描述如下:

  • 鑒權服務器地址:我們自己的服務器,地址可訪問,可以是域名也可以是IP地址;

  • 請求方法:支持 GET,POST,HEAD 三種請求;

  • 鑒權文件類型:多個文件類型用 | 分隔,例如 mp4|flv

  • 保留參數設置:控制用戶請求 URL 中需要鑒權的參數,用 | 分隔;

  • 自定義參數:可以自定義參數,可以使用CDN控制臺預設的變量,多個參數用 | 分隔,例如 token=$arg_token|vendor=ali_cdn

  • 保留請求頭設置:控制用戶請求頭中需要鑒權的參數,可以保留所有參數,也可以保留指定參數;

  • 添加自定義參數:給請求頭添加自定義參數;

  • 鑒權狀態碼:成功200,失敗 403;

  • 鑒權超時時長:單位為毫秒,最長時長可以設置為3000;

基于Python怎么實現云服務器的CDN域名遠程鑒權配置

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

基于Python怎么實現云服務器的CDN域名遠程鑒權配置

開啟該配置之后,再次訪問靜態資源,就會出現 403 Forbidden

基于Python怎么實現云服務器的CDN域名遠程鑒權配置

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

Python 端權限驗證

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

# 導入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("參數")
        logging.info(arges)
        print(request)
        print("請求頭")
        headers = request.headers
        print(headers)
        logging.info(headers)
        print("請求數據")
        logging.info(request.data)
        return "login success", 200 # 403
    if request.method == "POST":
        print("POST請求")
        arges = request.form
        print(request)
        headers = request.headers
        print("參數")
        logging.info(arges)
        print("請求頭")
        logging.info(headers)
        print("請求數據")
        logging.info(request.data)
        return "login success", 200 # 403
if __name__ == '__main__':
    # app.run(host, port, debug, options)
    # 默認值:host="127.0.0.1", port=5000, debug=False
    app.run(host="0.0.0.0", port=5000)

此時,當你再次訪問CDN資源時,會自動回調你的服務器進行鑒權操作,上述代碼請求成功之后,返回狀態碼為 200,接下來CDN資源可以訪問,如果返回403,表示被禁用。

基于Python怎么實現云服務器的CDN域名遠程鑒權配置

驗證邏輯

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

以上就是“基于Python怎么實現云服務器的CDN域名遠程鑒權配置”這篇文章的所有內容,感謝各位的閱讀!相信大家閱讀完這篇文章都有很大的收獲,小編每天都會為大家更新不同的知識,如果還想學習更多的知識,請關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

寿光市| 出国| 旬邑县| 云和县| 定远县| 湖口县| 辉县市| 扎囊县| 龙游县| 措美县| 嘉荫县| 义马市| 武定县| 兴和县| 佛冈县| 申扎县| 赣州市| 沁阳市| 古丈县| 保康县| 泰安市| 长丰县| 手游| 阿瓦提县| 石家庄市| 江西省| 浠水县| 寻乌县| 周口市| 赣州市| 灵石县| 大竹县| 绥芬河市| 正定县| 武汉市| 西丰县| 家居| 金门县| 花莲县| 铜鼓县| 晋宁县|