2.1 总体说明
2.1.1 访问地址
| 测试环境 | |
|---|---|
| 真实环境 | https://api.racent.com/ |
2.1.2 接口签名认证
接口使用了基于 API 签名的身份验证机制,可确保请求的完整性和安全性。每次调用接口时,都必须携带签名参数,服务端会验证签名的正确性。
公共参数
以下参数 必须 包含在每一次接口请求中的 Query String 中:
| 参数名称 | 参数类型 | 描述 | 示例值 |
|---|---|---|---|
| access_key | String | 账号ID,用于标识调用方身份 | 1000000059 |
| signature_nonce | String | 签名唯一随机数,用于防止重放攻击, 每次请求必须使用不同的随机值 | 2206561-6450-430e-8b0a-26980754c0de |
| timestamp | String | 请求发起的时间戳(单位:秒) | 1673418729 |
| signature_version | String | 签名算法版本,固定为 1.0 | 1.0 |
| signature_method | String | 签名算法,固定为 md5 | md5 |
| signature | String | 本次请求的签名值,由其他参数和密钥计算得出 | 85ef54421c69edeb098c7b557c6c5cd5 |
说明:
access_key和AccessSecret(密钥)可在登录后从 接口管理-API访问凭证 处获取。signature_nonce建议使用 UUID 或足够随机的字符串,确保每次请求唯一。timestamp与服务器时间相差超过一定范围(如5分钟)的请求将被拒绝。
签名机制
第一步:构造规范化请求字符串
1.参数排序
将所有公共参数(除 signature 外)和接口自定义参数按参数名字典序升序排列。
2.参数编码
对每个参数的名称和值使用 UTF-8 编码,并遵循 RFC3986 规则进行 URL 编码:
- 不编码的字符:
A-Z a-z 0-9 - _ . ~ - 其他字符(如
空格、/、?、=等)需编码为 %XX 格式,例如空格编码为%20
3.拼接参数
- 使用 = 连接编码后的参数名和参数值
- 使用 & 连接所有参数对,保持字典序
最终得到的字符串称为 stringToSign。
第二步:构造签名字符串并计算签名
根据请求类型不同,签名计算方式如下:
GET 请求
signature = md5(AccessSecret + md5( HTTPMethod + stringToSign ))
POST / PUT 请求(含 Body 参数)
signature = md5(AccessSecret + md5( HTTPMethod + stringToSign ) + md5( jsonStringToBody ))
说明:
- HTTPMethod 必须为大写,如 GET、POST
- jsonStringToBody 为请求 Body 的原始 JSON 字符串(需去除空格和换行,并且字段需排序)
- 公式中的 + 表示字符串拼接,不参与计算
参数编码规则(RFC3986)
| 字符类型 | 处理方式 | 示例 |
|---|---|---|
A-Z, a-z, 0-9, -, _, ., ~ | 不编码 | abc123 → abc123 |
| 空格 | 编码为 %20 | a b → a%20b |
其他 ASCII 字符 | 编码为 %XX(十六进制) | " → %22 |
GET 请求示例
假设:
- access_key = "1000000059"
- AccessSecret = "19938c89c13ddf5da7636333a5aa4c0e"
- signature_nonce = "iobzx72w63"
- timestamp = "1755597512"
Step1: 构造 stringToSign
access_key=1000000059&signature_method=md5&signature_nonce=iobzx72w63&signature_version=1.0×tamp=1755597512
Step2: 计算签名
temp = md5("GET" + stringToSign) // 结果为"9bc92e0f3e239dc628ebc416294422ba"
signature = md5(AccessSecret + temp) // 结果为"a33bdb81ea79eb4ebbac9da043309c00"
最终请求 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 请求示例(含 Body)
假设 Body 为:
{"domain":"example.com"}
其 MD5 值为: 640c69595341436be9b0d1516d3d37ac
Step1: 构造 stringToSign
access_key=1000000059&signature_method=md5&signature_nonce=abjipo5ar5a&signature_version=1.0×tamp=1755598851
Step2: 计算签名
temp = md5("POST" + stringToSign) // 结果为 "5aba63e4af1b7a4080eaf47d0fc56efe"
signature = md5(AccessSecret + temp + "640c69595341436be9b0d1516d3d37ac") // 结果为 "29487fd8ae5b828415d05b691caf015c"
最终请求 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 接口限流
默认限流规则,对于同一用户访问同一个接口,限制次数如下:
- 每分钟60次
- 每小时500次
- 每天1000次
2.1.4 接口返回参数
参数说明
| 参数名称 | 参数类型 | 描述 | 示例值 |
|---|---|---|---|
| data | Object | 业务数据,若接口报错,返回值为null | |
| code | Int | 错误码,成功返回0,报错返回对应的错误码 | 0,1000,1001 |
| message | String | 报错说明信息,接口成功返回"Success" | over-rate-limit |
| errors | Object | 部分报错,会通过该字段提供更具体的错误说明 | |
| request_id | String | 请求ID,主要用于协助排查问题 | 039ecdca-44d5-430f-8521-020f4953bcc5 |