2.1 Allgemeine Hinweise
2.1.1 Zugriffsadresse
| Testumgebung | |
|---|---|
| Produktivumgebung | https://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:
| Parametername | Parametertyp | Beschreibung | Beispielwert |
|---|---|---|---|
| access_key | String | Konto-ID zur Identifizierung des Aufrufers | 1000000059 |
| signature_nonce | String | Eindeutige Zufallszahl für die Signatur zur Verhinderung von Replay-Angriffen, bei jeder Anfrage muss ein anderer Zufallswert verwendet werden | 2206561-6450-430e-8b0a-26980754c0de |
| timestamp | String | Zeitstempel der Anfrage (Einheit: Sekunden) | 1673418729 |
| signature_version | String | Version des Signaturalgorithmus, fest auf 1.0 | 1.0 |
| signature_method | String | Signaturalgorithmus, fest auf md5 | md5 |
| signature | String | Signaturwert dieser Anfrage, berechnet aus anderen Parametern und dem Schlüssel | 85ef54421c69edeb098c7b557c6c5cd5 |
access_keyundAccessSecret(Schlüssel) sind nach der Anmeldung unter Schnittstellenverwaltung – API-Zugangsdaten erhältlich.signature_nonceEs wird empfohlen, eine UUID oder eine ausreichend zufällige Zeichenfolge zu verwenden, um die Eindeutigkeit jeder Anfrage sicherzustellen.timestampAnfragen, 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%20kodiert.
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:
signature = md5(AccessSecret + md5( HTTPMethod + stringToSign ))
signature = md5(AccessSecret + md5( HTTPMethod + stringToSign ) + md5( jsonStringToBody ))
- 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)
| Zeichentyp | Verarbeitungsweise | Beispiel |
|---|---|---|
A-Z, a-z, 0-9, -, _, ., ~ | Nicht kodiert | abc123 → abc123 |
| Leerzeichen | Kodiert als %20 | a b → a%20b |
Andere ASCII Zeichen | Kodiert 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×tamp=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×tamp=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×tamp=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×tamp=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
| Parametername | Parametertyp | Beschreibung | Beispielwert |
|---|---|---|---|
| data | Object | Geschäftsdaten. Bei einem API-Fehler ist der Rückgabewert null | |
| code | Int | Fehlercode: 0 bei Erfolg, entsprechender Fehlercode bei Fehler | 0, 1000, 1001 |
| message | String | Fehlerbeschreibung. Bei erfolgreicher API-Anfrage wird "Success" zurückgegeben | over-rate-limit |
| errors | Object | Bei bestimmten Fehlern werden über dieses Feld detailliertere Fehlerbeschreibungen bereitgestellt | |
| request_id | String | Anfrage-ID, dient hauptsächlich zur Unterstützung bei der Problembehebung | 039ecdca-44d5-430f-8521-020f4953bcc5 |