2.1 Descripción general
2.1.1 Dirección de acceso
| Entorno de pruebas | |
|---|---|
| Entorno real | https://api.racent.com/ |
2.1.2 Autenticación de firma de interfaz
La interfaz utiliza un mecanismo de autenticación de identidad basado en la firma de API, lo que garantiza la integridad y seguridad de la solicitud. Cada vez que se llama a la interfaz, se deben incluir los parámetros de firma, y el servidor verificará su validez.
Parámetros públicos
Los siguientes parámetros deben incluirse en el Query String de cada solicitud a la interfaz:
| Nombre del parámetro | Tipo del parámetro | Descripción | Valor de ejemplo |
|---|---|---|---|
| access_key | String | ID de cuenta, utilizado para identificar al llamador | 1000000059 |
| signature_nonce | String | Número aleatorio único de firma, utilizado para prevenir ataques de repetición, cada solicitud debe usar un valor aleatorio diferente | 2206561-6450-430e-8b0a-26980754c0de |
| timestamp | String | Marca de tiempo de inicio de la solicitud (en segundos) | 1673418729 |
| signature_version | String | Versión del algoritmo de firma, fijo como 1.0 | 1.0 |
| signature_method | String | Algoritmo de firma, fijo como md5 | md5 |
| signature | String | Valor de firma de esta solicitud, calculado a partir de otros parámetros y la clave | 85ef54421c69edeb098c7b557c6c5cd5 |
access_keyyAccessSecret(clave) se pueden obtener después de iniciar sesión en Gestión de interfaces - Credenciales de acceso API.
signature_nonceSe recomienda usar un UUID o una cadena suficientemente aleatoria, garantizando que sea única en cada solicitud.timestampLas solicitudes cuya diferencia con la hora del servidor supere un rango determinado (por ejemplo, 5 minutos) serán rechazadas. :::
Mecanismo de firma
Primer paso: construir la cadena de solicitud normalizada
1. Ordenamiento de parámetros
Ordene todos los parámetros públicos (excepto signature) y los parámetros personalizados de la interfaz en orden lexicográfico ascendente por nombre de parámetro.
2. Codificación de parámetros
Codifique el nombre y el valor de cada parámetro en UTF-8 y realice la codificación URL siguiendo las reglas de RFC3986:
- Caracteres que no se codifican:
A-Z a-z 0-9 - _ . ~ - Otros caracteres (como
espacio,/,?,=, etc.) deben codificarse en formato %XX; por ejemplo, el espacio se codifica como%20.
3. Concatenación de parámetros
- Use = para unir el nombre y el valor del parámetro ya codificados.
- Use & para unir todos los pares de parámetros, manteniendo el orden lexicográfico.
La cadena final obtenida se denomina stringToSign.
Segundo paso: construir la cadena de firma y calcular la firma
Según el tipo de solicitud, el cálculo de la firma se realiza de la siguiente manera:
signature = md5(AccessSecret + md5( HTTPMethod + stringToSign ))
signature = md5(AccessSecret + md5( HTTPMethod + stringToSign ) + md5( jsonStringToBody ))
- HTTPMethod debe estar en mayúsculas, por ejemplo GET, POST
- jsonStringToBody es la cadena JSON original del Body de la solicitud (se deben eliminar espacios y saltos de línea, y los campos deben ordenarse)
- El signo + en la fórmula indica concatenación de cadenas y no participa en cálculos
Reglas de codificación de parámetros (RFC3986)
| Tipo de carácter | Método de procesamiento | Ejemplo |
|---|---|---|
A-Z, a-z, 0-9, -, _, ., ~ | Sin codificar | abc123 → abc123 |
| Espacio | Se codifica como %20 | a b → a%20b |
Otros caracteres ASCII | Se codifican como %XX (hexadecimal) | " → %22 |
Ejemplo de solicitud GET
Supongamos:
- access_key = "1000000059"
- AccessSecret = "19938c89c13ddf5da7636333a5aa4c0e"
- signature_nonce = "iobzx72w63"
- timestamp = "1755597512"
Paso 1: Construir stringToSign
access_key=1000000059&signature_method=md5&signature_nonce=iobzx72w63&signature_version=1.0×tamp=1755597512
Paso 2: Calcular la firma
temp = md5("GET" + stringToSign) // 结果为"9bc92e0f3e239dc628ebc416294422ba"
signature = md5(AccessSecret + temp) // 结果为"a33bdb81ea79eb4ebbac9da043309c00"
URL de solicitud final:
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
Ejemplo de solicitud POST (con Body)
Supongamos que el Body es:
{"domain":"example.com"}
Su valor MD5 es: 640c69595341436be9b0d1516d3d37ac
Paso 1: Construir stringToSign
access_key=1000000059&signature_method=md5&signature_nonce=abjipo5ar5a&signature_version=1.0×tamp=1755598851
Paso 2: Calcular la firma
temp = md5("POST" + stringToSign) // 结果为 "5aba63e4af1b7a4080eaf47d0fc56efe"
signature = md5(AccessSecret + temp + "640c69595341436be9b0d1516d3d37ac") // 结果为 "29487fd8ae5b828415d05b691caf015c"
URL de solicitud final:
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 Limitación de frecuencia de la interfaz
Reglas de limitación predeterminadas: para el mismo usuario que accede a la misma interfaz, los límites son los siguientes:
- 60 veces por minuto
- 500 veces por hora
- 1000 veces por día
2.1.4 Parámetros de retorno de la interfaz
Descripción de parámetros
| Nombre del parámetro | Tipo de parámetro | Descripción | Valor de ejemplo |
|---|---|---|---|
| data | Object | Datos de negocio; si la interfaz reporta un error, el valor devuelto es null | |
| code | Int | Código de error; devuelve 0 en caso de éxito y el código de error correspondiente en caso de fallo | 0,1000,1001 |
| message | String | Información de error; la interfaz devuelve "Success" en caso de éxito | over-rate-limit |
| errors | Object | Para algunos errores, se proporciona una descripción más específica a través de este campo | |
| request_id | String | ID de solicitud, utilizado principalmente para ayudar a resolver problemas | 039ecdca-44d5-430f-8521-020f4953bcc5 |