Ubuntu Server 16.04.1 LTS 64ビット
またはUbuntu Server 18.04.1 LTS 64ビット
。ubuntu@VM-69-2-ubuntu:~$ export SECRET_ID=AKxxxxxxxxxxxxxxxxxxxxxxx; export SECRET_KEY=xxxxxxxxxxxxxxxxxxxxx;export APPID=125xxxxxxx;export ANTI_LEECH_KEY=xxxx;git clone https://github.com/tencentyun/vod-server-demo.git ~/vod-server-demo; bash ~/vod-server-demo/installer/anti_leech_sign_scf_en.sh
[2020-06-04 15:57:10]npmの検査を開始します。[2020-06-04 15:57:18]npmインストール成功。[2020-06-04 15:57:18]ServerLessツールインストール開始。[2020-06-04 15:57:19]ServerLessインストール成功。[2020-06-04 15:57:20]VOD Keyホットリンク防止署名配布サービスのデプロイを開始。[2020-06-04 15:57:30]VOD Keyホットリンク防止署名配布サービスのデプロイを完了。[2020-06-04 15:57:32]サービスアドレス:https://service-xxxxxxxx-125xxxxxxx.gz.apigw.tencentcs.com/release/anti_leech_sign
https://service-xxxxxxxx-125xxxxxxx.gz.apigw.tencentcs.com/release/callback
)をコピーします。[2020-04-25 17:18:44]警告:Keyホットリンク防止署名配布サービスがテストに失敗しました。
curl
コマンドを実行してこのURLへの直接アクセスをテストします。結果はKeyホットリンク防止規則に適合しなかったことから、サーバーにアクセスを拒絶されます。HTTPリターンコードは403になります(テスト時は、コマンドのURLを実際のURLに置換してください。以下同じ)。ubuntu@VM-69-2-ubuntu:~$ curl -I "http://125xxxxxxx.vod2.myqcloud.com/f888c998vodcq125xxxxxxx/c849148f528xxxxxxxxxxxxxxxx/xxxxxxxxxx.mp4"HTTP/1.1 403 ForbiddenServer: NWS_VPConnection: keep-aliveDate: Thu, 04 Jun 2020 08:27:54 GMTContent-Type: text/plainContent-Length: 14
curl
コマンドを実行して、手順4でデプロイされたサービスからのホットリンク防止署名付きのURLをリクエストします(-d
は、POSTメソッドを使用してリクエストを開始し、付帯するパラメータはビデオURLです)。ubuntu@VM-69-2-ubuntu:~$ curl -d 'http://125xxxxxxx.vod2.myqcloud.com/f888c998vodcq125xxxxxxx/c849148f528xxxxxxxxxxxxxxxx/xxxxxxxxxx.mp4' https://service-xxxxxxxx-125xxxxxxx.gz.apigw.tencentcs.com/release/anti_leech_sign; echohttp://125xxxxxxx.vod2.myqcloud.com/f888c998vodcq125xxxxxxx/c849148f528xxxxxxxxxxxxxxxx/xxxxxxxxxx.mp4?t=5ed8b8d2&exper=0&rlimit=0&us=455041&sign=fe6394007c2e7aef39fc70a02e897f69
curl
コマンドを再度使用して、前の手順で得たホットリンク防止署名付きのURLにアクセスすれば、正常にアクセスできます(HTTPリターンコードは200)。ubuntu@VM-69-2-ubuntu:~$ curl -I "http://125xxxxxxx.vod2.myqcloud.com/f888c998vodcq125xxxxxxx/c849148f528xxxxxxxxxxxxxxxx/xxxxxxxxxx.mp4?t=5ed8b8d2&exper=0&rlimit=0&us=455041&sign=fe6394007c2e7aef39fc70a02e897f69"HTTP/1.1 200 OKServer: tencent-cosConnection: keep-aliveDate: Thu, 04 Jun 2020 08:37:17 GMTLast-Modified: Fri, 22 May 2020 15:06:15 GMTContent-Type: video/mp4Content-Length: 232952632Accept-Ranges: bytesETag: "1da6be3a0d1da5edae4ff0b1feff02cf-223"x-cos-hash-crc64ecma: 16209801220610226954x-cos-request-id: NWVkOGIyYmVfZDUyMzYyNjRfYWMwMF85YjkyNzA=X-Daa-Tunnel: hop_count=4X-NWS-LOG-UUID: b404f43e-3c86-4c54-8a78-fb78e4e85cf2 add71e19fb08c6d9dbe1b21a2fb157bfAccess-Control-Allow-Credentials: trueAccess-Control-Allow-Headers: Origin,No-Cache,X-Requested-With,If-Modified-Since,Pragma,Last-Modified,Cache-Control,Expires,Content-Type,X_Requested_With,RangeAccess-Control-Allow-Methods: GET,POST,OPTIONSAccess-Control-Allow-Origin: *
サービス | クラウド関数名 | インターフェース形式 | リクエスト内容 | 返信内容 |
Keyホットリンク防止署名配布 | anti_leech_sign | HTTP POST | ビデオオリジナルURL | ホットリンク防止署名付きURL |
main_handler()
はエントリー関数です。parse_conf_file()
を呼び出して、config.json
ファイルから設定情報を読み取ります。設定項目の説明は以下のとおりです(詳細パラメータは Keyホットリンク防止署名パラメータをご参照ください)。フィールド | データ型 | 機能 |
key | String | Keyホットリンク防止キー |
t | Integer | 署名有効時間、単位:秒。リクエストが処理されているときは、このパラメータとSCFサーバーの現在の時間を足し合わせると、ホットリンク防止パラメータのtになります |
exper | Integer | プレビュー時間 |
rlimit | Integer | 署名にアクセスできるクライアントIPの最大数 |
Dir
パラメータを解析して、ローカルでt
およびus
のパラメータを生成し、設定ファイルからはexper
およびrlimit
のパラメータを読み取ります。original_url = event["body"]parse_result = urlparse(original_url)directory = path.split(parse_result.path)[0] + '/'# 署名パラメータtimestamp = int(time.time())rand = random.randint(0, 999999)sign_para = {"t": hex(timestamp + configuration['t'])[2:],"exper": configuration['exper'],"rlimit": configuration['rlimit'],"us": rand}
generate_sign()
を呼び出してホットリンク防止署名を計算します。詳細なアルゴリズムは ホットリンク防止署名をご参照ください。sign_para["sign"] = signaturequery_string = urlencode(sign_para)new_parse_result = parse_result._replace(query=query_string)signed_url = urlunparse(new_parse_result)
return {"isBase64Encoded": False,"statusCode": 200,"headers": {"Content-Type": "text/plain; charset=utf-8","Access-Control-Allow-Origin": "*","Access-Control-Allow-Methods": "POST,OPTIONS"},"body": signed_url}
この記事はお役に立ちましたか?