日本熟妇hd丰满老熟妇,中文字幕一区二区三区在线不卡 ,亚洲成片在线观看,免费女同在线一区二区

AScript場景示例

當您在防盜鏈、黑白名單、定制化請求頭和響應頭控制、定制化改寫和重定向、遠程鑒權(quán)等場景下,需要自定義轉(zhuǎn)發(fā)規(guī)則時,您可參考本文AScript示例代碼按需自定義您的流量請求轉(zhuǎn)發(fā)規(guī)則。

防盜鏈需求

自定義鑒權(quán)算法

自定義鑒權(quán)算法場景示例:

  • 需求:

    • 請求URL格式:/path/digest/?.tskey=&t=。

    • 針對.ts類請求,自定義防盜鏈需求如下:

      • 規(guī)則1:參數(shù)t或參數(shù)key不存在,響應403,增加響應頭X-AUTH-MSG標識鑒權(quán)失敗原因。

      • 規(guī)則2:參數(shù)t表示絕對過期時間,若參數(shù)t小于當前時間,則響應403,增加響應頭X-AUTH-MSG標識鑒權(quán)失敗原因。

      • 規(guī)則3:md5digest匹配。若md5digest不匹配,響應403。

        md5取值格式為:私鑰 + path + 文件名.后綴。

  • 對應的AScript規(guī)則:

    if eq(substr($uri, -3, -1), '.ts') {
    
      if or(not($arg_t), not($arg_key)) {
           add_rsp_header('X-AUTH-MSG', 'auth failed - missing necessary arg')
           exit(403)
       }
    
       t = tonumber($arg_t)
       if not(t) {
           add_rsp_header('X-AUTH-MSG', 'auth failed - invalid time')
           exit(403)
       }
    
       if gt(now(), t) {
           add_rsp_header('X-AUTH-MSG', 'auth failed - expired url')
           exit(403)
       }
    
        pcs = capture($request_uri,'^/([^/]+)/([^/]+)/([^?]+)%?(.*)')
        sec1 = get(pcs, 1)
        sec2 = get(pcs, 2)
        sec3 = get(pcs, 3)
    
        if or(not(sec1), not(sec2), not(sec3)) {
            add_rsp_header('X-AUTH-MSG', 'auth failed - malformed url')
            exit(403)
        }
    
        key = 'b98d643a-9170-4937-8524-6c33514bbc23'
        signstr = concat(key, sec1, sec3)
        digest = md5(signstr)
        if ne(digest, sec2) {
            add_rsp_header('X-AUTH-DEBUG', concat('signstr: ', signstr))
            add_rsp_header('X-AUTH-MSG', 'auth failed - invalid digest')
            exit(403)
        }
    
    }

User-Agent黑名單

User-Agent黑名單場景示例:

  • 需求:當請求User-Agentijkplayer開頭,或者以Ysten開頭,則響應403。

  • 對應的AScript規(guī)則:

    if and($http_user_agent, match($http_user_agent, '^[ijkplayer|Ysten].*$')) {
        add_rsp_header('X-BLOCKLIST-DEBUG', 'deny')
        exit(403)
    }

Referer白名單

Referer白名單場景示例:

  • 需求:當referer不是http[s]://***alibaba.com***時,響應403。

  • 對應的AScript規(guī)則:

    if and($http_referer, match($http_referer, '^(http|https)://(.)+\.alibaba\.com.*$')) {
        return true
    }
    
    add_rsp_header('X-WHITELIST-DEBUG', 'missing')
    exit(403)

黑白名單

IP黑名單

IP黑名單場景示例:

  • 需求:當請求客戶端IP為127.0.0.1、或者為10.0.0.1時,響應403。

  • 對應的AScript規(guī)則:

    if match($remote_addr, '127.0.0.1|10.0.0.1') {
        add_rsp_header('X-IPBLOCK-DEBUG', 'hit')
        exit(403)
    }

定制化請求頭和響應頭控制

文件自動重命名

文件自動重命名場景示例:

  • 需求:當有參數(shù)filename時,自動重命名為filename,無參數(shù)時,使用默認命名。

  • 對應的AScript規(guī)則:

    if $arg_filename {
      hn = 'Content-Disposition'
        hv = concat('attachment;filename=', $arg_filename)
        add_rsp_header(hn, hv)
    }
  • 示例:

    add_rsp_header('Content-Disposition', concat('attachment;filename=', tochar(34), filename, tochar(34)))
    說明
    • 通過在HTTP應答中添加響應頭Content-Disposition:attachment來實現(xiàn)消息體的強制下載,并且有參數(shù)filename時,自動重命名為filename,無參數(shù)時,使用默認命名。

    • filename增加雙引號,雙引號的ASCII編碼為34,可經(jīng)tochar轉(zhuǎn)回字符串。

  • 輸出:

    Content-Disposition: attachment;filename="monitor.apk"

覆蓋源站響應頭

覆蓋源站響應頭場景示例:

  • 需求:覆蓋源站Content-Type響應頭。

  • 對應的AScript規(guī)則:

    add_rsp_header('Content-Type', 'audio/mpeg')

定制化改寫和重定向

精確URI改寫

精確URI改寫場景示例:

  • 需求:將用戶請求/hello內(nèi)部改寫成/index.html,回源和緩存的URI都將變成/index.html,參數(shù)保持原樣。

  • 對應的AScript規(guī)則:

    if match($uri, '^/hello$') {
        rewrite('/index.html', 'break')
    }

文件后綴改寫

文件后綴改寫場景示例:

  • 需求:將用戶請求/1.txt內(nèi)部改寫成/1.<url參數(shù)type>。例如:/1.txt?type=mp4將會被改成/1.mp4?type=mp4回源并緩存。

  • 對應的AScript規(guī)則:

    if and(match($uri, '^/1.txt$'), $arg_type) {
         rewrite(concat('/1.', $arg_type), 'break')
    }

文件后綴小寫化

文件后綴小寫化場景示例:

  • 需求:將URI改成小寫。

  • 對應的AScript規(guī)則:

    pcs = capture($uri, '^(.+%.)([^.]+)')
    section = get(pcs, 1)
    postfix = get(pcs, 2)
    
    if and(section, postfix) {
        rewrite(concat(section, lower(postfix)), 'break')
    }

添加URI前綴

添加URI前綴場景示例:

  • 需求:將用戶請求^/nn_live/(.*)內(nèi)部改寫為/3rd/nn_live/$1

  • 對應的AScript規(guī)則:

    pcs = capture($uri, '^/nn_live/(.*)')
    sec = get(pcs, 1)
    
    if sec {
         dst = concat('/3rd/nn_live/', sec)
         rewrite(dst, 'break')
    }

302重定向

302重定向場景示例:

  • 需求:將根目錄/,302重定向到/app/movie/pages/index/index.html頁面。

  • 對應的AScript規(guī)則:

    if eq($uri, '/') {
        rewrite('/app/movie/pages/index/index.html', 'redirect')
    }

302重定向HTTPS

302重定向HTTPS場景示例:

  • 需求:

    將以下URI(對根目錄匹配,^/$

    • http://rtmp.cdnpe.com

    • https://rtmp.cdnpe.com

    跳轉(zhuǎn)到https://aliyun.com,跳轉(zhuǎn)后的URI可按需填寫。

  • 對應的AScript規(guī)則:

    if eq($uri, '/') {
        rewrite('https://aliyun.com', 'redirect')
    }