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

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

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

實(shí)戰(zhàn)場(chǎng)景

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

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

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

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

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

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

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

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

這里需要注意,由于測(cè)試的是 m3u8 文件,所以訪問(wèn)該文件的時(shí)候,如果沒(méi)有被禁止,會(huì)自動(dòng)下載。

Python 端權(quán)限驗(yàn)證

以下代碼基于 Flask 編寫(xiě),主要將POST請(qǐng)求數(shù)據(jù)和Header請(qǐng)求頭保存到文件中。 日志文件,我們使用 logging 模塊寫(xiě)入到 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')
# 實(shí)例化,可視為固定格式
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請(qǐng)求")
        arges = request.form
        print("參數(shù)")
        logging.info(arges)
        print(request)
        print("請(qǐng)求頭")
        headers = request.headers
        print(headers)
        logging.info(headers)
        print("請(qǐng)求數(shù)據(jù)")
        logging.info(request.data)
        return "login success", 200 # 403
    if request.method == "POST":
        print("POST請(qǐng)求")
        arges = request.form
        print(request)
        headers = request.headers
        print("參數(shù)")
        logging.info(arges)
        print("請(qǐng)求頭")
        logging.info(headers)
        print("請(qǐng)求數(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)

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

驗(yàn)證邏輯

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

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

相關(guān)文章

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

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

    下面小編就為大家?guī)?lái)一篇基于python元祖與字典與集合的粗淺認(rèn)識(shí)。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-08-08
  • python列表插入append(), extend(), insert()用法詳解

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

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

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

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

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

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

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

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

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

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

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

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

    python報(bào)錯(cuò)TypeError: Input z must be 

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

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

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

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

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

最新評(píng)論