跳到主要内容
版本:Next Version

2.1 总体说明

2.1.1 访问地址

测试环境
真实环境https://api.racent.com/

2.1.2 接口签名认证

接口使用了基于 API 签名的身份验证机制,可确保请求的完整性和安全性。每次调用接口时,都必须携带签名参数,服务端会验证签名的正确性。

公共参数

以下参数 必须 包含在每一次接口请求中的 Query String 中:

参数名称参数类型描述示例值
access_keyString账号ID,用于标识调用方身份1000000059
signature_nonceString签名唯一随机数,用于防止重放攻击,
每次请求必须使用不同的随机值
2206561-6450-430e-8b0a-26980754c0de
timestampString请求发起的时间戳(单位:秒)1673418729
signature_versionString签名算法版本,固定为 1.01.0
signature_methodString签名算法,固定为 md5md5
signatureString本次请求的签名值,由其他参数和密钥计算得出85ef54421c69edeb098c7b557c6c5cd5
说明:
  • access_keyAccessSecret(密钥)可在登录后从 接口管理-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, -, _, ., ~不编码abc123abc123
空格编码为 %20a ba%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&timestamp=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&timestamp=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&timestamp=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&timestamp=1755598851&signature_version=1.0&signature_method=md5&signature=29487fd8ae5b828415d05b691caf015c

2.1.3 接口限流

默认限流规则,对于同一用户访问同一个接口,限制次数如下:

  • 每分钟60次
  • 每小时500次
  • 每天1000次

2.1.4 接口返回参数

参数说明

参数名称参数类型描述示例值
dataObject业务数据,若接口报错,返回值为null
codeInt错误码,成功返回0,报错返回对应的错误码0,10001001
messageString报错说明信息,接口成功返回"Success"over-rate-limit
errorsObject部分报错,会通过该字段提供更具体的错误说明
request_idString请求ID,主要用于协助排查问题039ecdca-44d5-430f-8521-020f4953bcc5