全部产品
Search
文档中心

Object Storage Service:Perlindungan hotlink (Python SDK V1)

更新时间:Nov 29, 2025

Anda dapat menggunakan kit pengembangan perangkat lunak (SDK) Python untuk mengonfigurasi aturan akses di OSS berdasarkan header permintaan Referer, termasuk daftar putih Referer, daftar hitam Referer, dan penanganan Referer kosong. Hal ini membantu memblokir akses dari sumber tertentu, mencegah hotlinking pada file OSS Anda, serta menghindari biaya traffic yang tidak perlu.

Catatan

  • Sebelum mengonfigurasi perlindungan hotlink, pastikan Anda memahami fitur ini terlebih dahulu. Untuk informasi selengkapnya, lihat Perlindungan hotlink.

  • Pada topik ini, digunakan titik akhir publik wilayah China (Hangzhou). Jika Anda ingin mengakses OSS dari layanan Alibaba Cloud lainnya dalam wilayah yang sama dengan OSS, gunakan titik akhir internal. Untuk informasi selengkapnya mengenai wilayah dan titik akhir OSS, lihat Wilayah dan titik akhir.

  • Pada topik ini, kredensial akses diperoleh dari variabel lingkungan. Untuk informasi selengkapnya tentang cara mengonfigurasi kredensial akses, lihat Konfigurasikan kredensial akses menggunakan OSS SDK untuk Python 1.0.

  • Pada topik ini, instans OSSClient dibuat menggunakan titik akhir OSS. Jika Anda ingin membuat instans OSSClient menggunakan nama domain kustom atau Security Token Service (STS), lihat Inisialisasi.

  • Untuk mengonfigurasi atau menghapus aturan perlindungan hotlink, Anda harus memiliki izin oss:PutBucketReferer. Untuk menanyakan konfigurasi perlindungan hotlink, Anda harus memiliki izin oss:GetBucketReferer. Untuk informasi selengkapnya, lihat Lampirkan kebijakan kustom ke RAM user.

Atur perlindungan hotlink

Kode berikut menunjukkan cara mengonfigurasi perlindungan hotlink:

# -*- coding: utf-8 -*-
import oss2
from oss2.credentials import EnvironmentVariableCredentialsProvider
from oss2.models import BucketReferer

# Peroleh kredensial akses dari variabel lingkungan. Sebelum menjalankan kode contoh ini, pastikan variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET telah disetel.
auth = oss2.ProviderAuthV4(EnvironmentVariableCredentialsProvider())

# Tentukan Endpoint untuk wilayah tempat bucket berada. Misalnya, jika bucket berada di wilayah China (Hangzhou), setel Endpoint ke https://oss-cn-hangzhou.aliyuncs.com.
endpoint = "https://oss-cn-hangzhou.aliyuncs.com"
# Tentukan informasi wilayah yang sesuai dengan Endpoint, misalnya cn-hangzhou. Perhatikan bahwa parameter ini wajib untuk tanda tangan V4.
region = "cn-hangzhou"

# Ganti yourBucketName dengan nama bucket Anda.
bucket = oss2.Bucket(auth, endpoint, "yourBucketName", region=region)

# Izinkan Referer kosong.
allow_empty_referer = True
# Tetapkan daftar putih Referer.
referers = ['http://www.aliyun.com', 'https://www.aliyun.com']
# Tetapkan daftar hitam Referer.
# black_referers = ['http://example.com', 'http://*.example.com']
# Potong string kueri.
allow_truncate_query_string = True
# Tetapkan aturan perlindungan hotlink.
bucket.put_bucket_referer(BucketReferer(allow_empty_referer=allow_empty_referer, referers=referers, black_referers=black_referers,allow_truncate_query_string=allow_truncate_query_string))

Dapatkan informasi perlindungan hotlink

Kode berikut menunjukkan cara mengambil konfigurasi perlindungan hotlink:

# -*- coding: utf-8 -*-
import oss2
from oss2.credentials import EnvironmentVariableCredentialsProvider

# Peroleh kredensial akses dari variabel lingkungan. Sebelum menjalankan kode contoh ini, pastikan variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET telah disetel.
auth = oss2.ProviderAuthV4(EnvironmentVariableCredentialsProvider())

# Tentukan Endpoint untuk wilayah tempat bucket berada. Misalnya, jika bucket berada di wilayah China (Hangzhou), setel Endpoint ke https://oss-cn-hangzhou.aliyuncs.com.
endpoint = "https://oss-cn-hangzhou.aliyuncs.com"
# Tentukan informasi wilayah yang sesuai dengan Endpoint, misalnya cn-hangzhou. Perhatikan bahwa parameter ini wajib untuk tanda tangan V4.
region = "cn-hangzhou"

# Ganti yourBucketName dengan nama bucket Anda.
bucket = oss2.Bucket(auth, endpoint, "yourBucketName", region=region)

config = bucket.get_bucket_referer()
print('allow empty referer={0}, referers={1}'.format(config.allow_empty_referer, config.referers))

Hapus aturan perlindungan hotlink

Kode berikut menunjukkan cara menghapus konfigurasi perlindungan hotlink:

# -*- coding: utf-8 -*-
import oss2
from oss2.models import BucketReferer
from oss2.credentials import EnvironmentVariableCredentialsProvider

# Peroleh kredensial akses dari variabel lingkungan. Sebelum menjalankan kode contoh ini, pastikan variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET telah disetel.
auth = oss2.ProviderAuthV4(EnvironmentVariableCredentialsProvider())

# Tentukan Endpoint untuk wilayah tempat bucket berada. Misalnya, jika bucket berada di wilayah China (Hangzhou), setel Endpoint ke https://oss-cn-hangzhou.aliyuncs.com.
endpoint = "https://oss-cn-hangzhou.aliyuncs.com"
# Tentukan informasi wilayah yang sesuai dengan Endpoint, misalnya cn-hangzhou. Perhatikan bahwa parameter ini wajib untuk tanda tangan V4.
region = "cn-hangzhou"

# Ganti yourBucketName dengan nama bucket Anda.
bucket = oss2.Bucket(auth, endpoint, "yourBucketName", region=region)

# Anda tidak dapat langsung menghapus aturan perlindungan hotlink. Anda harus membuat aturan baru yang mengizinkan Referer kosong untuk menimpa aturan sebelumnya.
bucket.put_bucket_referer(BucketReferer(True, []))

Referensi

  • Untuk informasi mengenai operasi API yang digunakan untuk menetapkan aturan perlindungan hotlink, lihat PutBucketReferer.

  • Untuk informasi mengenai operasi API yang digunakan untuk mengambil konfigurasi perlindungan hotlink, lihat GetBucketReferer.