Ana içeriğe geç

2.1 Genel Açıklama

2.1.1 Erişim Adresi

Test Ortamı
Gerçek Ortamhttps://api.racent.com/

2.1.2 Arayüz İmza Kimlik Doğrulaması

Arayüz, API imzasına dayalı bir kimlik doğrulama mekanizması kullanır; bu, isteğin bütünlüğünü ve güvenliğini sağlar. Arayüz her çağrıldığında imza parametresi taşınmalıdır; sunucu imzanın doğruluğunu doğrular.

Genel Parametreler

Aşağıdaki parametreler, her arayüz isteğinde Query String içinde mutlaka yer almalıdır:

Parametre AdıParametre TürüAçıklamaÖrnek Değer
access_keyStringHesap kimliği; çağıran tarafın kimliğini belirtir1000000059
signature_nonceStringİmza için benzersiz rastgele sayı; tekrar saldırılarını önlemek amacıyla kullanılır,
her istekte farklı rastgele değer kullanılmalıdır
2206561-6450-430e-8b0a-26980754c0de
timestampStringİsteğin başlatıldığı zaman damgası (saniye cinsinden)1673418729
signature_versionStringİmza algoritması sürümü; sabit olarak 1.0'dır1.0
signature_methodStringİmza algoritması; sabit olarak md5'tirmd5
signatureStringBu isteğin imza değeri; diğer parametrelerden ve anahtardan hesaplanır85ef54421c69edeb098c7b557c6c5cd5
Açıklama:
  • access_key ve AccessSecret (anahtar), oturum açtıktan sonra Arayüz Yönetimi-API Erişim Kimlik Bilgileri bölümünden edinilebilir.
  • signature_nonce UUID veya yeterince rastgele bir dize kullanılması önerilir; her istekte benzersiz olduğundan emin olun.
  • timestamp Sunucu saatiyle belirli bir aralıktan (ör. 5 dakika) daha fazla fark olan istekler reddedilir. :::

İmza Mekanizması

Birinci Adım: Standartlaştırılmış İstek Dizesini Oluşturma

1. Parametre Sıralama

Tüm ortak parametreleri (signature hariç) ve arayüze özel parametreleri parametre adına göre sözlük sırasına göre artan şekilde sıralayın.

2. Parametre Kodlama

Her parametrenin adını ve değerini UTF-8 ile kodlayın ve RFC3986 kurallarına göre URL kodlaması uygulayın:

  • Kodlanmayan karakterler: A-Z a-z 0-9 - _ . ~
  • Diğer karakterler (ör. boşluk, /, ?, = vb.) %XX biçiminde kodlanmalıdır; örneğin boşluk %20 olarak kodlanır.
3. Parametreleri Birleştirme
  • Kodlanmış parametre adı ile parametre değerini = ile bağlayın.
  • Tüm parametre çiftlerini & ile bağlayın ve sözlük sırasını koruyun.

Sonuçta elde edilen dizeye stringToSign adı verilir.


İkinci Adım: İmza Dizesini Oluşturma ve İmzayı Hesaplama

İstek türüne göre imza hesaplama yöntemi aşağıdaki gibidir:

GET 请求
signature = md5(AccessSecret + md5( HTTPMethod + stringToSign ))
POST / PUT 请求(含 Body 参数)
signature = md5(AccessSecret + md5( HTTPMethod + stringToSign ) + md5( jsonStringToBody ))
Açıklama:
  • HTTPMethod büyük harf olmalıdır; örneğin GET, POST
  • jsonStringToBody, istek Body'sinin ham JSON dizesidir (boşluklar ve satır sonları kaldırılmalı ve alanlar sıralanmalıdır)
  • Formüldeki +, dize birleştirmeyi ifade eder ve hesaplamaya katılmaz

Parametre Kodlama Kuralları (RFC3986)

Karakter Türüİşleme YöntemiÖrnek
A-Z, a-z, 0-9, -, _, ., ~Kodlanmazabc123abc123
Boşluk%20 olarak kodlanıra ba%20b
Diğer ASCII karakterler%XX (onaltılık) olarak kodlanır"%22

GET İstek Örneği

Varsayalım:

  • access_key = "1000000059"
  • AccessSecret = "19938c89c13ddf5da7636333a5aa4c0e"
  • signature_nonce = "iobzx72w63"
  • timestamp = "1755597512"

Adım1: stringToSign oluşturma

access_key=1000000059&signature_method=md5&signature_nonce=iobzx72w63&signature_version=1.0&timestamp=1755597512

Adım 2: İmzayı hesaplayın

temp = md5("GET" + stringToSign)  // 结果为"9bc92e0f3e239dc628ebc416294422ba"
signature = md5(AccessSecret + temp) // 结果为"a33bdb81ea79eb4ebbac9da043309c00"

Nihai istek URL'si:

https://api.racent.com/api/v1/domain/tld?access_key=1000000059&signature_nonce=iobzx72w63&timestamp=1755597512&signature_version=1.0&signature_method=md5&signature=a33bdb81ea79eb4ebbac9da043309c00

POST İstek Örneği (Body ile)

Body'nin şu olduğunu varsayalım:

{"domain":"example.com"}

MD5 değeri: 640c69595341436be9b0d1516d3d37ac

Adım 1: stringToSign oluşturma

access_key=1000000059&signature_method=md5&signature_nonce=abjipo5ar5a&signature_version=1.0&timestamp=1755598851

Adım 2: İmzayı hesaplayın

temp = md5("POST" + stringToSign)  // 结果为 "5aba63e4af1b7a4080eaf47d0fc56efe"
signature = md5(AccessSecret + temp + "640c69595341436be9b0d1516d3d37ac") // 结果为 "29487fd8ae5b828415d05b691caf015c"

Nihai İstek URL'si:

https://api.racent.com/v1/domain/query-domain?access_key=1000000059&signature_nonce=abjipo5ar5a&timestamp=1755598851&signature_version=1.0&signature_method=md5&signature=29487fd8ae5b828415d05b691caf015c

2.1.3 Arayüz Hız Sınırlandırma

Varsayılan hız sınırlandırma kurallarına göre, aynı kullanıcının aynı arayüze erişim limitleri şu şekildedir:

  • Dakikada 60 istek
  • Saatte 500 istek
  • Günde 1000 istek

2.1.4 Arayüz Dönüş Parametreleri

Parametre Açıklaması

Parametre AdıParametre TürüAçıklamaÖrnek Değer
dataObjectİş verisi; arayüz hata döndürürse değer null olur
codeIntHata kodu; başarılı olursa 0, hata olursa ilgili hata kodu döner0, 1000, 1001
messageStringHata açıklama bilgisi; arayüz başarılı olursa "Success" dönerover-rate-limit
errorsObjectBazı hatalarda bu alan aracılığıyla daha ayrıntılı hata açıklaması sağlanır
request_idStringİstek kimliği; esas olarak sorun gidermeye yardımcı olmak için kullanılır039ecdca-44d5-430f-8521-020f4953bcc5