Zum Hauptinhalt springen

2.1 Allgemeine Hinweise

2.1.1 Zugriffsadresse

Testumgebung
Produktivumgebunghttps://api.racent.com/

2.1.2 Signaturauthentifizierung der Schnittstelle

Die Schnittstelle verwendet einen auf API-Signatur basierenden Authentifizierungsmechanismus, der die Integrität und Sicherheit der Anfragen gewährleistet. Bei jedem Aufruf der Schnittstelle müssen Signaturparameter mitgeführt werden; der Server überprüft die Korrektheit der Signatur.

Öffentliche Parameter

Die folgenden Parameter müssen im Query String jeder Schnittstellenanfrage enthalten sein:

ParameternameParametertypBeschreibungBeispielwert
access_keyStringKonto-ID zur Identifizierung des Aufrufers1000000059
signature_nonceStringEindeutige Zufallszahl für die Signatur zur Verhinderung von Replay-Angriffen,
bei jeder Anfrage muss ein anderer Zufallswert verwendet werden
2206561-6450-430e-8b0a-26980754c0de
timestampStringZeitstempel der Anfrage (Einheit: Sekunden)1673418729
signature_versionStringVersion des Signaturalgorithmus, fest auf 1.01.0
signature_methodStringSignaturalgorithmus, fest auf md5md5
signatureStringSignaturwert dieser Anfrage, berechnet aus anderen Parametern und dem Schlüssel85ef54421c69edeb098c7b557c6c5cd5
Hinweis:
  • access_key und AccessSecret (Schlüssel) sind nach der Anmeldung unter Schnittstellenverwaltung – API-Zugangsdaten erhältlich.
  • signature_nonce Es wird empfohlen, eine UUID oder eine ausreichend zufällige Zeichenfolge zu verwenden, um die Eindeutigkeit jeder Anfrage sicherzustellen.
  • timestamp Anfragen, deren Abweichung von der Serverzeit einen bestimmten Bereich überschreitet (z. B. 5 Minuten), werden abgelehnt.

Signaturmechanismus

Schritt 1: Kanonische Anfragezeichenfolge erstellen

1. Parameter sortieren

Alle öffentlichen Parameter (außer signature) und die benutzerdefinierten Schnittstellenparameter werden in aufsteigender lexikografischer Reihenfolge der Parameternamen sortiert.

2. Parameter kodieren

Name und Wert jedes Parameters werden mit UTF-8 kodiert und gemäß den RFC3986-Regeln URL-kodiert:

  • Nicht zu kodierende Zeichen: A-Z a-z 0-9 - _ . ~
  • Andere Zeichen (wie Leerzeichen, /, ?, = usw.) müssen im Format %XX kodiert werden, z. B. wird ein Leerzeichen als %20 kodiert.
3. Parameter verketten
  • Verwenden Sie =, um den kodierten Parameternamen und den Parameterwert zu verbinden.
  • Verwenden Sie &, um alle Parameterpaare zu verbinden; die lexikografische Reihenfolge bleibt erhalten.

Die so erhaltene Zeichenfolge wird als stringToSign bezeichnet.


Schritt 2: Signaturzeichenfolge erstellen und Signatur berechnen

Je nach Anfragetyp wird die Signatur wie folgt berechnet:

GET 请求
signature = md5(AccessSecret + md5( HTTPMethod + stringToSign ))
POST / PUT 请求(含 Body 参数)
signature = md5(AccessSecret + md5( HTTPMethod + stringToSign ) + md5( jsonStringToBody ))
Hinweis:
  • HTTPMethod muss in Großbuchstaben geschrieben werden, z. B. GET, POST
  • jsonStringToBody ist der unformatierte JSON-String des Request-Bodys (Leerzeichen und Zeilenumbrüche müssen entfernt und Felder sortiert werden)
  • Das + in der Formel bedeutet Zeichenfolgenverknüpfung und nimmt nicht an der Berechnung teil

Parameter-Encoding-Regeln (RFC3986)

ZeichentypVerarbeitungsweiseBeispiel
A-Z, a-z, 0-9, -, _, ., ~Nicht kodiertabc123abc123
LeerzeichenKodiert als %20a ba%20b
Andere ASCII ZeichenKodiert als %XX (hexadezimal)"%22

GET-Anfragebeispiel

Angenommen:

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

Schritt 1: stringToSign konstruieren

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

Schritt 2: Signatur berechnen

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

Endgültige Anforderungs-URL:

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-Anforderungsbeispiel (mit Body)

Angenommen, der Body lautet:

{"domain":"example.com"}

Der MD5-Wert lautet: 640c69595341436be9b0d1516d3d37ac

Schritt 1: stringToSign konstruieren

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

Schritt 2: Signatur berechnen

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

Endgültige Anfrage-URL:

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 API-Ratenbegrenzung

Standard-Ratenbegrenzungsregeln: Für denselben Benutzer, der auf dieselbe API zugreift, gelten folgende Beschränkungen:

  • 60 Mal pro Minute
  • 500 Mal pro Stunde
  • 1000 Mal pro Tag

2.1.4 API-Rückgabeparameter

Parameterbeschreibung

ParameternameParametertypBeschreibungBeispielwert
dataObjectGeschäftsdaten. Bei einem API-Fehler ist der Rückgabewert null
codeIntFehlercode: 0 bei Erfolg, entsprechender Fehlercode bei Fehler0, 1000, 1001
messageStringFehlerbeschreibung. Bei erfolgreicher API-Anfrage wird "Success" zurückgegebenover-rate-limit
errorsObjectBei bestimmten Fehlern werden über dieses Feld detailliertere Fehlerbeschreibungen bereitgestellt
request_idStringAnfrage-ID, dient hauptsächlich zur Unterstützung bei der Problembehebung039ecdca-44d5-430f-8521-020f4953bcc5