通过一个接口按关键词检索站内网盘资源,返回结果为事件流(SSE),可直接用于脚本、机器人或第三方工具。
接口概览
GET
/miov1/search?keyword=关键词
参数放在查询串,便于浏览器与命令行直接调用
POST
/miov1/search
JSON 请求体,适合关键词含特殊字符或较长时使用
两种方式返回结构完全一致:Content-Type: text/event-stream,依次返回 snapshot 与 done 两个事件。
请求参数
| 参数 | 位置 | 类型 | 必填 | 说明 |
|---|---|---|---|---|
keyword |
GET 查询串 / POST 请求体 | string | 是 | 检索关键词 |
Content-Type |
POST 请求头 | string | 否 | POST 建议设置为 application/json,请求体上限 64KB |
关键词规则:
- 首尾空白会被忽略
- 结尾的
.html会被忽略,便于直接复用页面地址中的关键词 - 不能为空,且不超过 128 个字符
响应结构
响应为事件流,每行以 event: 声明事件名、data: 携带 JSON 数据,事件之间以空行分隔。按行读取即可解析,无需等待完整响应结束。
snapshot首个快照:命中资源
event: snapshot
data: {"total":1,"merged_by_type":{"quark":[{"url":"https://pan.quark.cn/s/xxxxxxxxxxxx","note":"资源名称","keyword":"流浪地球","stream_key":"quark|https://pan.quark.cn/s/xxxxxxxxxxxx"}]}}
done结束事件:本次命中总数
event: done
data: {"total":1}
字段说明:
| 字段 | 类型 | 说明 |
|---|---|---|
total |
number | 本次命中的资源条数 |
merged_by_type |
object | 按网盘类型分组的资源集合,当前提供 quark 分组 |
merged_by_type.quark[].url |
string | 网盘分享链接 |
merged_by_type.quark[].note |
string | 资源名称 |
merged_by_type.quark[].keyword |
string | 该资源对应的关键词 |
merged_by_type.quark[].stream_key |
string | 资源唯一标识,格式为 网盘类型|链接,可用于去重 |
调用示例
GET 请求(-N 关闭 curl 缓冲,便于逐行查看事件):
curl -N --get --data-urlencode "keyword=流浪地球" https://msouy.com/miov1/search
POST 请求:
curl -N -X POST https://msouy.com/miov1/search \
-H 'Content-Type: application/json' \
-d '{"keyword":"流浪地球"}'
浏览器 / Node 读取事件流:
const res = await fetch('https://msouy.com/miov1/search?keyword=' + encodeURIComponent('流浪地球'))
const reader = res.body.getReader()
const decoder = new TextDecoder()
let buffer = ''
while (true) {
const { done, value } = await reader.read()
if (done) break
buffer += decoder.decode(value, { stream: true })
const blocks = buffer.split('\n\n')
buffer = blocks.pop() || ''
for (const block of blocks) {
const event = block.match(/^event: (.+)$/m)?.[1]
const data = block.match(/^data: (.+)$/m)?.[1]
if (!data) continue
console.log(event, JSON.parse(data))
}
}
限流规则
每个 IP 每秒最多 5 次请求,允许 10 次突发。超出限制时接口返回 HTTP
429,请降低请求频率或稍后重试;持续高频访问会被持续拒绝。
- 建议客户端串行或小并发调用,并对 429 做退避重试
- 同一关键词重复检索可直接复用上次结果,避免无意义请求
地区限制
接口按来源地区开放,以下地区可直接调用:
其它地区请求会返回 HTTP 451:
{"error":"当前地区访问受限"}
错误码
| HTTP | 返回体 | 说明 |
|---|---|---|
| 400 | {"error":"关键词不能为空"} |
未传关键词或关键词为空 |
| 400 | {"error":"关键词过长"} |
关键词超过 128 个字符 |
| 400 | {"error":"无效的请求体"} |
POST 请求体不是合法 JSON,或超过 64KB |
| 429 | — | 触发限流(每 IP 5 次/秒、突发 10) |
| 451 | {"error":"当前地区访问受限"} |
当前地区不在开放范围 |
| 500 | {"error":"搜索服务暂时不可用,请稍候再试"} |
服务临时不可用,可稍后重试 |
使用须知
接口仅用于资源检索。返回的分享链接来自网络公开信息,本站不提供存储、上传或托管服务;请在法律法规允许的范围内使用,并自行甄别内容。
如需在应用中展示检索结果,请遵守上述限流与地区规则;因违规高频调用导致的拒绝访问,需自行承担。