X-GORB Search API 由迅风智界(ZephyrtTech)独立开发并维护,是一款高性能搜索接口。其核心优势在于安全无广告、高可用,可快速集成至各类应用、工具及内容聚合场景,每次接口调用固定消耗 4 Token。本帮助文档将详细说明接口使用方法、参数规范、错误处理及最佳实践,助力开发者高效完成对接,降低集成成本。
1. 接口概述
X-GORB Search API 采用 RESTful 设计规范,仅支持 GET 请求方式,返回 JSON 格式响应。接口内置缓存优化、参数自动校验等特性,可有效保障调用的高效性与稳定性,适用于各类需要嵌入搜索功能的开发场景。
项目 | 详情 |
接口地址 | https://api.xgorb.cn/API/search.php |
请求方式 | GET |
返回格式 | JSON |
接口版本 | v1.0.0 |
运行状态 | 正常运行(注:部分场景可能出现链接失效或解析失败,详见常见问题) |
Token 消耗 | 每次调用消耗 4 Token |
最后更新 | 2026-04-12 |
2. 请求参数规范
接口请求需传入指定参数,其中必填参数不可缺失,可选参数可根据业务需求灵活配置。所有参数需严格符合格式要求,否则接口将返回参数错误提示,影响调用效率。
2.1 参数详情
参数名 | 数据类型 | 是否必填 | 默认值 | 取值范围 | 说明 |
q | string | 是 | 无 | 1-200 字符 | 搜索关键词,接口将自动去除首尾空格;若关键词为空或超出字符限制,将直接返回400错误。 |
page | int | 否 | 1 | 1-15 | 搜索结果页码,若传入值超出范围,接口将自动修正为合法边界值(小于1则为1,大于15则为15)。 |
refresh | int | 否 | 0 | 0/1 | 缓存刷新标识:0 = 使用缓存(可提升响应速度,推荐默认配置);1 = 忽略缓存,重新执行搜索(适用于需获取实时结果场景)。 |
api_key | string | 是 | 无 | 合法 API Key | 开发者身份验证密钥,需在用户中心注册获取;若缺失或非法,将导致请求失败,建议妥善保管。 |
2.2 请求示例
以下为完整的接口请求示例,开发者需将示例中的「你的APIKey」替换为实际从用户中心获取的密钥,即可正常调用接口:
https://api.xgorb.cn/API/search.php?q=xgorb&page=1&refresh=1&api_key=你的APIKey重要提示:若关键词包含空格、中文、特殊符号等,务必进行 URL 编码后传入,否则可能导致请求异常、解析失败(如报错“网页解析失败,可能是不支持的网页类型”)。
3. 返回参数说明
接口响应将以 JSON 格式标准化返回,包含公共响应字段、缓存信息、搜索结果列表三大核心模块,所有返回字段均经过格式处理,便于开发者快速解析和使用。
3.1 公共返回字段
字段名 | 数据类型 | 说明 |
status | int | 接口响应状态码,用于判断请求是否成功,具体含义详见 4. 状态码与错误说明。 |
keyword | string | 实际执行搜索的关键词,已由接口自动去除首尾空格,与传入的q参数一致(若传入时带空格)。 |
page | int | 当前返回结果的页码,已由接口根据取值范围自动修正,确保为1-15之间的合法值。 |
search_speed | string | 搜索耗时:缓存命中时显示「< 0.5ms (from cache)」;非缓存命中时显示具体毫秒数(保留2位小数),直观反映接口响应效率。 |
result_count | int | 当前页返回的搜索结果总数,便于开发者判断是否有更多分页结果。 |
xgorbcollectionsearch_results_count | int | 与 result_count 数值一致,用于标识搜索结果的来源计数,无需额外处理。 |
results | array | 搜索结果列表,数组内每个元素为单个搜索结果对象,具体字段说明详见 3.3 单条结果说明。 |
cache | object | 缓存相关信息对象,包含缓存命中状态、有效期等信息,具体说明详见 3.2 缓存对象说明。 |
proxy_used | string | 代理使用状态,可选值:已使用代理 / 直连 / N/A(仅缓存命中时显示N/A),便于排查网络相关问题。 |
refresh | bool | 是否执行强制刷新缓存操作:true = 是(忽略缓存重新搜索),false = 否(使用缓存),与传入的refresh参数一致。 |
3.2 缓存对象(cache)
字段名 | 数据类型 | 说明 |
hit | bool | 是否命中缓存:true = 是(响应速度更快),false = 否(将重新执行搜索并缓存结果)。 |
key | string | 缓存键名,缓存未命中时返回 null;命中时返回对应缓存的唯一标识,可用于缓存相关排查。 |
expires_in | int | 缓存剩余有效期(单位:秒);缓存未命中时,返回默认缓存TTL(300秒),即本次搜索结果将缓存300秒。 |
message | string | 缓存提示信息,仅缓存未命中时返回,内容为:「已缓存,下次搜索会更快」,用于提示开发者缓存已生效。 |
3.3 单条搜索结果(results[])
字段名 | 数据类型 | 说明 |
title | string | 搜索结果标题,已完成HTML实体解码,可直接渲染显示,避免出现乱码问题。 |
url | string | 搜索结果原始链接,已清理跳转参数、utm参数,并完成URL有效性验证;若链接失效,可能出现“link dead”报错。 |
description | string | 搜索结果描述,已完成HTML实体解码、多余空格合并,提升可读性,便于开发者快速了解结果内容。 |
domain | string | 结果链接的域名,已去除www.前缀,便于开发者快速识别结果来源网站。 |
favicon | string | 网站图标链接,基于域名自动生成,格式为:https://favicon.im/zh/域名;若该链接无法正常解析,可能出现“网页解析失败”报错(可参考favicon.im接口规范优化)。 |
image | string | 结果图片链接,目前暂未实现,默认返回空字符串,开发者无需额外处理该字段。 |
source | string | 搜索来源标识,固定值为XGorbCollectionSearch,用于区分搜索结果的来源渠道。 |
3.4 返回示例
以下为接口请求成功(status=200)的完整返回示例,包含所有字段的实际取值场景,开发者可参考该示例进行响应解析:
{
"status": 200,
"keyword": "xgorb",
"page": 1,
"search_speed": "870ms",
"result_count": 10,
"xgorbcollectionsearch_results_count": 10,
"results": [
{
"title": "X-GORB Search",
"url": "https://so.xgorb.cn/",
"description": "X-GORB Search是一个由迅风智界(ZephyrtTech)维护开发的安全、无广告的搜索引擎,致力于为用户提供纯净的搜索体验。",
"domain": "so.xgorb.cn",
"favicon": "https://favicon.im/zh/so.xgorb.cn",
"image": "",
"source": "XGorbCollectionSearch"
}
],
"cache": {
"hit": false,
"key": null,
"expires_in": 300,
"message": "已缓存,下次搜索会更快"
},
"proxy_used": "直连",
"refresh": false
}4. 状态码与错误说明
接口返回的status字段用于标识请求结果,不同状态码对应不同的异常场景,开发者可根据状态码及相关提示信息,快速定位问题并高效处理,减少对接耗时。
状态码 | 状态描述 | 可能原因 | 解决方案 |
200 | 请求成功 | 参数合法、格式正确,接口正常执行搜索并返回结果。 | 正常解析返回数据,按需处理搜索结果即可。 |
400 | 请求参数错误 | 1. 关键词q为空;2. 关键词长度超过200字符;3. 参数格式不合法(如page非整数);4. api_key缺失或非法。 | 1. 确保q参数不为空且长度在1-200字符内;2. 校验参数格式,确保类型正确;3. 检查api_key有效性并正确传入。 |
500 | 服务器内部错误 | 1. Redis连接失败;2. 爬虫请求异常;3. 服务器依赖扩展缺失;4. 搜索结果链接解析失败。 | 1. 稍后重试接口;2. 检查关键词是否合法;3. 联系技术支持排查服务器状态及解析异常问题。 |
5. 对接示例代码
以下为PHP语言的接口对接示例,包含参数拼接、请求发送、响应解析的完整流程,代码已添加详细注释,开发者可参考适配自身开发语言(如Java、Python等),快速完成集成。
<?php
// 替换为从用户中心获取的实际API Key(敏感信息,请勿暴露在前端)
$apiKey = "你的APIKey";
// 搜索关键词,需进行URL编码(处理空格、中文、特殊符号,避免解析失败)
$keyword = urlencode("xgorb");
// 页码(可选,默认1,取值范围1-15,接口会自动修正)
$page = 1;
// 缓存刷新标识(可选,默认0,推荐默认配置提升响应速度)
$refresh = 1;
// 拼接接口请求地址,确保参数格式正确
$requestUrl = "https://api.xgorb.cn/API/search.php?q={$keyword}&page={$page}&refresh={$refresh}&api_key={$apiKey}";
// 初始化cURL请求,适配HTTPS协议
$ch = curl_init();
// 设置请求地址
curl_setopt($ch, CURLOPT_URL, $requestUrl);
// 设置返回结果不直接输出,转为字符串便于解析
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
// 启用HTTPS验证(生产环境必选,保障数据安全,避免api_key泄露)
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 2);
// 发送请求并获取响应数据
$response = curl_exec($ch);
// 关闭cURL资源,释放内存
curl_close($ch);
// 解析JSON响应,转为关联数组
$responseData = json_decode($response, true);
// 校验请求是否成功(根据status状态码判断)
if ($responseData['status'] == 200) {
// 处理搜索结果(示例:循环打印所有结果的标题和链接)
foreach ($responseData['results'] as $result) {
echo "结果标题:" . $result['title'] . "<br/>";
echo "结果链接:" . $result['url'] . "<br/><br/>";
}
} else {
// 输出错误信息,便于排查问题(可根据实际需求调整错误处理逻辑)
$errorMsg = isset($responseData['message']) ? $responseData['message'] : "未知错误";
echo "请求失败,状态码:" . $responseData['status'] . ",原因:" . $errorMsg;
}
?>6. 使用规范与安全提示
6.1 使用规范
- 必须传入合法有效的api_key,无密钥请先前往用户中心注册获取,禁止使用非法、他人密钥或空密钥(空密钥会导致请求失败)。
- 调用接口前,务必校验q参数:确保不为空、长度在1-200字符内,避免因参数错误导致400报错,影响对接效率。
- refresh参数建议默认使用0(启用缓存),仅在需要实时获取最新搜索结果时设置为1;频繁设置为1会跳过缓存,降低响应速度,增加接口压力。
- 页码参数无需额外处理超出范围的情况,接口会自动修正为1(小于1)或15(大于15),开发者可直接传入业务所需页码。
- 关键词若包含特殊字符(空格、中文、符号等),必须进行URL编码后传入,否则可能导致接口解析失败,出现“网页解析失败”报错。
6.2 安全提示
- 生产环境必须使用HTTPS协议调用接口,禁止使用HTTP协议传输,避免api_key及请求数据泄露,保障接口调用安全。
- api_key属于敏感信息,请勿泄露给第三方,建议在服务器端存储和调用,避免在前端代码中直接暴露,防止密钥被盗用。
- 请勿恶意调用接口(如高频重复请求、传入非法关键词),否则可能被限制接口使用权限,影响业务正常运行。
- 若遇到“link dead”“网页解析失败”等报错,可检查关键词合法性、链接有效性,或稍后重试接口。
7. 常见问题(FAQ)
Q1:为什么请求返回400错误?
A:大概率是q参数不符合要求,需检查:① 关键词是否为空;② 关键词长度是否超过200字符;③ 参数格式是否正确(如page需为整数);④ api_key是否缺失或非法。
Q2:缓存未命中时,expires_in为什么是300秒?
A:300秒是接口默认的缓存TTL(生存时间),缓存未命中时,接口会自动缓存本次搜索结果,有效期为300秒;期间再次请求相同关键词,会命中缓存并快速返回结果。
Q3:results数组中的image字段为什么始终为空?
A:目前image字段暂未实现,后续将逐步迭代优化,现阶段默认返回空字符串,开发者无需特殊处理该字段,不影响接口正常使用。
Q4:调用接口时,Token消耗异常怎么办?
A:每次接口调用固定消耗4 Token,若出现消耗异常,可前往用户中心查看接口调用日志,排查是否存在异常调用;若日志无异常,可联系技术支持进一步排查。
Q5:为什么会出现“link dead”“网页解析失败”报错?
A:① “link dead”:搜索结果链接失效,接口无法访问该链接;② “网页解析失败”:可能是关键词未编码、链接不支持解析,或favicon图标链接(https://favicon.im/zh/域名)无法正常访问;解决方案:编码关键词、检查链接有效性,或稍后重试接口。
Q6:favicon图标链接无法正常显示怎么办?
A:可参考favicon.im接口规范优化:① 确保域名格式正确(去除www.前缀);② 可添加额外参数(如throw-error-on-404=true),便于自定义替代图片;③ 启用loading="lazy",提升页面性能,减少解析失败概率。
8. 技术支持
若在接口对接过程中遇到问题,可通过以下方式获取技术支持,高效解决问题:
- 查看用户中心的接口调用日志,排查参数传入、响应异常等基础问题。
- 联系迅风智界(ZephyrtTech)技术支持团队,反馈具体问题、报错信息(如“link dead”)及调用示例,便于快速定位排查。