全部产品
Search
文档中心

Object Storage Service:Perlindungan hotlink (Python SDK V2)

更新时间:Nov 09, 2025

Anda dapat menggunakan Alibaba Cloud OSS SDK untuk Python untuk mengonfigurasi aturan akses berdasarkan header permintaan Referer, seperti menetapkan daftar putih Referer, daftar hitam Referer, dan menentukan apakah header Referer kosong diizinkan. Konfigurasi ini memungkinkan Anda memblokir header Referer tertentu dari mengakses file OSS Anda, mencegah penggunaan sumber daya tanpa izin, dan menghindari biaya lalu lintas yang tidak perlu.

Prasyarat

  • Sebelum mengonfigurasi perlindungan hotlink, pastikan Anda memahami fitur ini. Untuk informasi lebih lanjut, lihat Perlindungan hotlink.

  • Kode contoh dalam topik ini menggunakan wilayah China (Hangzhou) (ID: cn-hangzhou) sebagai contoh. Secara default, titik akhir publik digunakan. Jika Anda ingin mengakses OSS dari layanan Alibaba Cloud lainnya di wilayah yang sama, gunakan titik akhir internal. Untuk informasi lebih lanjut tentang wilayah OSS dan titik akhir yang sesuai, lihat Wilayah dan titik akhir OSS.

  • Untuk menetapkan atau menghapus konfigurasi perlindungan hotlink, Anda harus memiliki izin oss:PutBucketReferer. Untuk mengambil konfigurasi perlindungan hotlink, Anda harus memiliki izin oss:GetBucketReferer. Untuk informasi lebih lanjut, lihat Memberikan izin kustom kepada Pengguna RAM.

Definisi metode

Tetapkan perlindungan hotlink

put_bucket_referer(request: PutBucketRefererRequest, **kwargs) → PutBucketRefererResult

Dapatkan pengaturan perlindungan hotlink

get_bucket_referer(request: GetBucketRefererRequest, **kwargs) → GetBucketRefererResult

Parameter permintaan

Parameter

Tipe

Deskripsi

request

PutBucketRefererRequest

Parameter permintaan. Untuk informasi lebih lanjut, lihat PutBucketRefererRequest

GetBucketRefererRequest

Parameter permintaan. Untuk informasi lebih lanjut, lihat GetBucketRefererRequest

Nilai kembali

Tipe

Deskripsi

PutBucketRefererResult

Nilai kembali. Untuk informasi lebih lanjut, lihat PutBucketRefererResult

GetBucketRefererResult

Nilai kembali. Untuk informasi lebih lanjut, lihat GetBucketRefererResult

Untuk definisi lengkap metode untuk menetapkan perlindungan hotlink, lihat put_bucket_referer.

Untuk definisi lengkap metode untuk mendapatkan pengaturan perlindungan hotlink, lihat get_bucket_referer.

Contoh

Tetapkan perlindungan hotlink

Gunakan kode berikut untuk menetapkan perlindungan hotlink.

import argparse
import alibabacloud_oss_v2 as oss

# Buat parser argumen baris perintah dan jelaskan tujuan skrip: mengonfigurasi perlindungan hotlink untuk bucket.
parser = argparse.ArgumentParser(description="contoh put bucket referer")

# Tentukan argumen baris perintah, termasuk wilayah, nama bucket, dan endpoint opsional.
parser.add_argument('--region', help='Wilayah tempat bucket berada.', required=True)
parser.add_argument('--bucket', help='Nama bucket.', required=True)
parser.add_argument('--endpoint', help='Nama domain yang dapat digunakan layanan lain untuk mengakses OSS')

def main():
    # Parsing argumen baris perintah untuk mendapatkan nilai yang dimasukkan pengguna.
    args = parser.parse_args()

    # Muat informasi kredensial akses dari variabel lingkungan untuk verifikasi identitas.
    credentials_provider = oss.credentials.EnvironmentVariableCredentialsProvider()

    # Buat objek konfigurasi menggunakan konfigurasi SDK default dan tetapkan penyedia autentikasi.
    cfg = oss.config.load_default()
    cfg.credentials_provider = credentials_provider

    # Tetapkan properti wilayah objek konfigurasi berdasarkan argumen baris perintah yang diberikan pengguna.
    cfg.region = args.region

    # Jika titik akhir kustom disediakan, perbarui properti titik akhir dalam objek konfigurasi.
    if args.endpoint is not None:
        cfg.endpoint = args.endpoint

    # Gunakan konfigurasi sebelumnya untuk menginisialisasi klien OSS untuk berinteraksi dengan OSS.
    client = oss.Client(cfg)

    # Kirim permintaan untuk menetapkan konfigurasi perlindungan hotlink untuk bucket yang ditentukan.
    result = client.put_bucket_referer(oss.PutBucketRefererRequest(
            bucket=args.bucket,  # Nama bucket.
            referer_configuration=oss.RefererConfiguration(
                allow_empty_referer=True,  # Menentukan apakah header Referer kosong diizinkan. Nilai default: True.
                allow_truncate_query_string=False,  # Menentukan apakah string kueri dipotong. Nilai default: False.
                truncate_path=False,  # Menentukan apakah jalur dipotong. Nilai default: False.
                referer_list=oss.RefererList(
                    referers=['http://www.aliyun.com', 'https://www.aliyun.com'],  # Daftar header Referer yang diizinkan.
                ),
                referer_blacklist=oss.RefererBlacklist(
                    referers=['http://www.refuse.com', 'http://www.refuse1.com'],  # Daftar hitam header Referer yang ditolak.
                ),
            ),
    ))

    # Cetak kode status dan ID permintaan hasil operasi untuk mengonfirmasi status permintaan.
    print(f'kode status: {result.status_code},'
          f' ID permintaan: {result.request_id},'
          )

# Saat skrip ini dijalankan langsung, panggil fungsi utama untuk mulai memproses logika.
if __name__ == "__main__":
    main()  # Titik masuk skrip, dari mana alur program dimulai.

Dapatkan pengaturan perlindungan hotlink

Gunakan kode berikut untuk mengambil konfigurasi perlindungan hotlink.

import argparse
import alibabacloud_oss_v2 as oss

# Buat parser argumen baris perintah dan jelaskan tujuan skrip: mendapatkan konfigurasi perlindungan hotlink bucket.
parser = argparse.ArgumentParser(description="contoh get bucket referer")

# Tentukan argumen baris perintah, termasuk wilayah, nama bucket, dan endpoint opsional.
parser.add_argument('--region', help='Wilayah tempat bucket berada.', required=True)
parser.add_argument('--bucket', help='Nama bucket.', required=True)
parser.add_argument('--endpoint', help='Nama domain yang dapat digunakan layanan lain untuk mengakses OSS')

def main():
    # Parsing argumen baris perintah untuk mendapatkan nilai yang dimasukkan pengguna.
    args = parser.parse_args()

    # Muat informasi kredensial akses dari variabel lingkungan untuk verifikasi identitas.
    credentials_provider = oss.credentials.EnvironmentVariableCredentialsProvider()

    # Buat objek konfigurasi menggunakan konfigurasi SDK default dan tetapkan penyedia autentikasi.
    cfg = oss.config.load_default()
    cfg.credentials_provider = credentials_provider
    
    # Tetapkan properti wilayah objek konfigurasi berdasarkan argumen baris perintah yang diberikan pengguna.
    cfg.region = args.region

    # Jika titik akhir kustom disediakan, perbarui properti titik akhir dalam objek konfigurasi.
    if args.endpoint is not None:
        cfg.endpoint = args.endpoint

    # Gunakan konfigurasi sebelumnya untuk menginisialisasi klien OSS untuk berinteraksi dengan OSS.
    client = oss.Client(cfg)

    # Kirim permintaan untuk mendapatkan konfigurasi perlindungan hotlink untuk bucket yang ditentukan.
    result = client.get_bucket_referer(oss.GetBucketRefererRequest(
            bucket=args.bucket,  # Nama bucket.
    ))

    # Cetak kode status, ID permintaan, dan detail konfigurasi perlindungan hotlink dari hasil operasi untuk mengonfirmasi status permintaan dan detail konfigurasi.
    print(f'kode status: {result.status_code},'
          f' ID permintaan: {result.request_id},'
          f' izinkan referer kosong: {getattr(result.referer_configuration, "allow_empty_referer", "Tidak diatur")},'
          f' izinkan pemotongan string kueri: {getattr(result.referer_configuration, "allow_truncate_query_string", "Tidak diatur")},'
          f' potong jalur: {getattr(result.referer_configuration, "truncate_path", "Tidak diatur")},'
          f' daftar referer: {getattr(result.referer_configuration, "referer_list", "Tidak diatur")},'
          f' daftar hitam referer: {getattr(result.referer_configuration, "referer_blacklist", "Tidak diatur")},'
          )

# Saat skrip ini dijalankan langsung, panggil fungsi utama untuk mulai memproses logika.
if __name__ == "__main__":
    main()  # Titik masuk skrip, dari mana alur program dimulai.

Referensi

  • Untuk informasi tentang cara menyelesaikan kesalahan umum yang terjadi saat mengonfigurasi perlindungan hotlink, lihat 33-REFERER.

  • Untuk kode contoh lengkap untuk menetapkan perlindungan hotlink, lihat put_bucket_referer.py.

  • Untuk kode contoh lengkap untuk mendapatkan konfigurasi perlindungan hotlink, lihat get_bucket_referer.py.