号码通查 号码通查 EN

技术文档

本文档面向开发者与技术评测人员,说明号码通查(zangxixitech.cn)的技术架构、归属地查询 API 接口、数据来源、GEO(Generative Engine Optimization,生成式引擎优化)实现规范与开源信息。本站采用 Astro 5 静态站点生成(SSG)部署于 Cloudflare Pages,以零运行时 JavaScript、JSON-LD 直写 HTML 的方式提升 AI 引擎与搜索引擎的可解析性。

最后更新日期:2026-07-06

一、技术架构

号码通查是一个以内容与工具导航为核心的静态站点,技术选型优先考虑AI 友好性首屏加载速度(均为 GEO 与 SEO 的核心信号)。整体技术栈如下:

架构示意

┌──────────────────────────────────────────────────────────┐
│                    Git 仓库(Markdown / .astro)           │
└───────────────────────────┬──────────────────────────────┘
                            │ git push(触发自动部署)
                            ▼
┌──────────────────────────────────────────────────────────┐
│              Cloudflare Pages 构建管道(Astro 5 SSG)      │
│   - 预渲染全部页面为纯 HTML(零 JS)                       │
│   - 内联 JSON-LD 结构化数据至 <head>                      │
│   - 生成 sitemap / rss.xml / llms.txt                     │
└───────────────────────────┬──────────────────────────────┘
                            │ 构建产物
                            ▼
┌──────────────────────────────────────────────────────────┐
│          Cloudflare 全球 CDN(边缘节点分发)               │
│   - HTTP/3 + Brotli + 自动缓存                            │
│   - /api/* 由 Pages Functions 处理(服务端)               │
└───────────────────────────┬──────────────────────────────┘
                            │
              ┌─────────────┼─────────────┐
              ▼             ▼             ▼
        传统搜索引擎    AI 引擎爬虫    终端用户浏览器
       (Google/Bing)  (GPTBot/Claude)  (零 JS 渲染)

二、API 文档:号码归属地查询

归属地查询 API 用于查询手机号或固话(座机)号码的归属省份、城市、运营商、区号等信息。该端点以 Cloudflare Pages Functions 形式部署在站点同域下,服务端代理上游数据源,上游 API Key 仅保存在服务端环境变量中,不会出现在前端代码或响应里

端点

GET https://zangxixitech.cn/api/attribution?phone={号码}

请求参数

参数名类型必填说明
phone string 待查询号码。支持手机号(11 位,如 13800138000)或固话(区号-号码,如 010-12345678)。
format string 返回格式,默认 json。可选 jsonp(需配合 callback 参数)。
callback string format=jsonp 时使用的回调函数名。

示例请求

cURL:

curl -s "https://zangxixitech.cn/api/attribution?phone=13800138000"

JavaScript(fetch):

const phone = '13800138000';
const res = await fetch(
  `https://zangxixitech.cn/api/attribution?phone=${encodeURIComponent(phone)}`
);
const data = await res.json();
console.log(data);
// => { code: 200, message: 'success', data: { ... } }

Python(requests):

import requests

res = requests.get(
    'https://zangxixitech.cn/api/attribution',
    params={'phone': '13800138000'},
    timeout=5,
)
print(res.json())

示例响应(JSON)

{
  "code": 200,
  "message": "success",
  "data": {
    "phone": "13800138000",
    "province": "北京",
    "city": "北京",
    "carrier": "中国移动",
    "areacode": "010",
    "postcode": "100000",
    "numberType": "手机号"
  }
}

响应字段说明

字段类型说明
codenumber业务状态码,200 表示成功。
messagestring状态描述。
data.phonestring查询的号码。
data.provincestring归属省份。
data.citystring归属城市。
data.carrierstring运营商(中国移动 / 中国联通 / 中国电信)。
data.areacodestring区号(固话场景为主)。
data.postcodestring邮编。
data.numberTypestring号码类型:手机号 / 固话。

速率限制

为保障服务稳定性,该接口对每个来源 IP 限制为每分钟 30 次请求。超出限制时返回 429 状态码,响应头包含 Retry-After 字段,提示重试等待秒数。建议客户端实现指数退避重试。

X-RateLimit-Limit: 30
X-RateLimit-Remaining: 0
Retry-After: 28

错误码表

HTTP 状态码业务 code说明处理建议
200200查询成功解析 data 字段。
400400参数错误:phone 缺失或格式不正确校验号码格式后重试。
401401未授权:请求来源校验失败确认请求来自合法域名/Referer。
404404归属地未找到:号码不在已知号段库中核对号码是否为有效在网号码。
429429速率超限:超过每分钟 30 次Retry-After 等待后重试。
500500服务器内部错误稍后重试;持续失败请联系站点。
502502上游数据源异常上游服务波动,稍后重试。
503503服务暂时不可用(维护中)等待维护结束后重试。

服务端实现参考(Cloudflare Pages Function)

以下为归属地查询端点的服务端实现示例。上游数据源 API Key 通过 Cloudflare Pages 环境变量 JUHE_API_KEY 注入,不存在于前端代码中

// functions/api/attribution.js
// Cloudflare Pages Function: 服务端代理,上游 API Key 仅存于环境变量
export async function onRequestGet({ request, env }) {
  const url = new URL(request.url);
  const phone = url.searchParams.get('phone');

  // 1. 参数校验
  if (!phone) {
    return Response.json(
      { code: 400, message: '缺少 phone 参数' },
      { status: 400 }
    );
  }
  const cleaned = phone.replace(/[\s-]/g, '');
  if (!/^(\d{11}|\d{3,4}\d{7,8})$/.test(cleaned)) {
    return Response.json(
      { code: 400, message: 'phone 格式不正确' },
      { status: 400 }
    );
  }

  // 2. 调用上游数据源(Key 仅在服务端可见)
  const upstream = `https://apis.juhe.cn/mobile/get?phone=${encodeURIComponent(cleaned)}&key=${env.JUHE_API_KEY}`;
  const resp = await fetch(upstream);
  const json = await resp.json();

  // 3. 归一化返回
  if (json.error_code !== 0) {
    return Response.json(
      { code: 404, message: '归属地未找到' },
      { status: 404 }
    );
  }
  const r = json.result;
  return Response.json({
    code: 200,
    message: 'success',
    data: {
      phone: cleaned,
      province: r.province,
      city: r.city,
      carrier: r.company,
      areacode: r.areacode,
      postcode: r.zip,
      numberType: cleaned.length === 11 ? '手机号' : '固话',
    },
  });
}

三、数据源说明

号码通查展示的号码标记、归属地、法人核验等信息来自以下公开、官方或授权渠道。所有数据来源可追溯验证,本站不存储用户输入的号码数据。

数据类型数据来源说明
号码归属地 聚合数据 API(juhe.cn)手机归属地接口 提供手机号/固话的省份、城市、运营商、区号、号段信息,服务端代理调用。
号码标记(国内) 中国信息通信研究院 码号服务推进组(opene164.org.cn) 国内唯一官方跨平台号码标记查询与清除入口,支持手机号与座机号免费查询。
号码标记(国际) Truecaller(truecaller.com) 全球最大来电识别应用,适合有国际往来的号码,提交取消收录后 24-48 小时移除。
法人号码核验 授权合作方(xbh5.open10086.com) 企业法人手机号三要素(姓名 + 身份证 + 手机号)一致性实名核验。
本站作为入口导航与知识科普平台,不对第三方平台数据处理结果承担责任。各平台申诉入口、处理时效等信息可能随平台更新而变化,以各平台官方页面为准。

四、GEO 实现规范

GEO(Generative Engine Optimization,生成式引擎优化)是面向 DeepSeek、ChatGPT、Perplexity、Claude 等 AI 引擎的内容可发现性与可引用性优化。号码通查从三层爬虫框架入手,确保 AI 引擎能完整抓取、正确解析、准确引用本站内容。

4.1 三层爬虫框架

层级机制作用
第一层:放行层 robots.txt AI 爬虫白名单 明确允许主流 AI 训练 / 检索 / 用户浏览爬虫抓取,避免被默认拦截。
第二层:清单层 llms.txt / llms-en.txt 以纯文本提供站点结构化内容清单,供 LLM 快速理解站点全貌与重点页面。
第三层:语义层 JSON-LD 直写 HTML 构建期将 schema.org 结构化数据写入 HTML,爬虫无需执行 JS 即可获得语义。

4.2 llms.txt 规范

本站遵循 llms.txt 规范,在站点根目录提供 /llms.txt(中文)与 /llms-en.txt(英文)。文件以 Markdown 纯文本格式描述站点用途、核心页面与分类入口,便于 AI 引擎一次性理解站点全貌。示例如下:

# 号码通查 (zangxixitech)

> 号码通查提供号码标记查询与清除服务,手机号码与座机(固话)号码均支持。

## 首页
- [号码通查首页](https://zangxixitech.cn/): 号码标记查询与清除服务首页

## 工具
- [号码归属地查询](https://zangxixitech.cn/tools/attribution): 输入手机号或固话,免费查询归属地
- [号码标记自查](https://zangxixitech.cn/tools/marking-check): 查询号码被标记情况

## 指南
- [如何清除号码标记](https://zangxixitech.cn/guide/how-to-clear-marking): 分渠道清除教程

4.3 JSON-LD schema 类型清单

本站在不同页面输出对应的 schema.org 类型,全部以 <script type="application/ld+json"> 形式直写 HTML <head>。全站级与页面级 schema 清单如下:

schema 类型适用页面用途
Organization全站组织实体、联系点、sameAs 等。
WebSite全站站点信息,含 SearchAction 站内搜索。
WebApplication全站声明本站为号码服务 Web 应用。
BreadcrumbList所有内页面包屑导航结构化。
FAQPage首页 / FAQ问答结构化,便于 AI 直接引用答案。
Article / TechArticle本技术文档页技术文章结构化,提升技术引擎权重。
BlogPosting号码百科文章博客文章结构化。
HowTo操作指南页步骤化操作结构化。
AboutPage / ContactPage / WebPage关于 / 联系 / 政策页页面类型语义标注。

4.4 robots.txt AI 爬虫放行策略

Cloudflare 等 CDN 默认可能拦截部分 AI 爬虫,本站在 robots.txt显式放行主流 AI 训练、检索与用户浏览爬虫,并在 CDN 控制台对应放行。放行的 AI 爬虫 User-agent 包括:

# AI 检索/引用爬虫(允许)
User-agent: GPTBot
User-agent: OAI-SearchBot
User-agent: ChatGPT-User
User-agent: ClaudeBot
User-agent: Claude-SearchBot
User-agent: Claude-User
User-agent: PerplexityBot
User-agent: Perplexity-User
User-agent: Google-Extended
User-agent: Applebot-Extended
User-agent: meta-externalagent
User-agent: Bytespider
User-agent: CCBot
User-agent: Amazonbot
User-agent: cohere-ai
User-agent: DuckAssistBot
User-agent: YouBot
Allow: /

Sitemap: https://zangxixitech.cn/sitemap-index.xml
完整 robots.txt 见站点根目录 /robots.txt。除放行 AI 爬虫外,同时放行 Googlebot、Bingbot、Baiduspider、Sogou、360Spider 等传统搜索引擎。

五、开源信息

号码通查采用主流现代前端技术栈构建,以下为技术栈、部署方式与内容更新机制的公开说明。

5.1 技术栈

组件技术版本用途
站点框架Astro5.6+SSG 静态生成,零运行时 JS。
样式方案Tailwind CSS3.4+实用优先样式,构建期裁剪。
部署平台Cloudflare Pages全球 CDN 边缘分发 + Pages Functions。
号码解析libphonenumber-js1.12+号码格式化与有效性校验。
内容集合Astro Content CollectionsMarkdown 博客内容管理。

5.2 部署方式

采用 Git 自动部署:代码推送至主分支后,Cloudflare Pages 自动拉取、执行 astro build 构建命令,将产物分发至全球边缘节点。构建配置(astro.config.mjs)中开启 inlineStylesheets: 'auto' 以内联小样式表,并通过 @astrojs/sitemap 自动生成 sitemap。

// astro.config.mjs(节选)
export default defineConfig({
  site: 'https://zangxixitech.cn',
  output: 'static',
  build: { inlineStylesheets: 'auto' },
  integrations: [tailwind(), sitemap({ i18n: { defaultLocale: 'zh', locales: { zh: 'zh-CN', en: 'en' } } })],
});

5.3 内容更新机制

号码百科类深度文章采用 Markdown 内容集合(Content Collections) 管理,文章源文件存放于 src/content/blog/ 目录,通过 src/content.config.ts 中定义的 Zod schema 校验 frontmatter 字段(title、description、pubDate、tags 等)。新增或修改 Markdown 文件后推送至主分支,即自动重新构建并更新 sitemap 与 RSS,形成内容新鲜度信号(GEO / SEO 的正向因素)。

// src/content.config.ts(节选)
const blog = defineCollection({
  loader: glob({ pattern: '**/*.{md,mdx}', base: './src/content/blog' }),
  schema: z.object({
    title: z.string(),
    description: z.string(),
    pubDate: z.coerce.date(),
    updatedDate: z.coerce.date().optional(),
    tags: z.array(z.string()).default([]),
  }),
});
export const collections = { blog };

5.4 站点资源索引

文档总结

号码通查以 Astro 5 SSG + Cloudflare Pages + Tailwind CSS 构建零 JS 静态站点,通过 JSON-LD 直写 HTML、llms.txt 清单与 robots.txt AI 放行策略实现三层 GEO 爬虫框架。归属地查询 API 以 Cloudflare Pages Functions 服务端代理实现,上游 API Key 仅存于环境变量不外泄。数据来源覆盖聚合数据、中国信通院码号服务推进组、Truecaller 与授权合作方法人核验服务。如需进一步沟通,请访问联系我们