# 真实随机美国免税州地址生成器 [![License](https://img.shields.io/badge/License-MIT-green.svg)](LICENSE) [![Frontend](https://img.shields.io/badge/Frontend-纯JavaScript-blue)]() [![Countries](https://img.shields.io/badge/国家-10%2B-orange)]() [![Languages](https://img.shields.io/badge/语言-5-brightgreen)]() [![Tax-Free States](https://img.shields.io/badge/免税州-5-red)]() [![No Backend](https://img.shields.io/badge/后端-无-lightgrey)]() [![Privacy](https://img.shields.io/badge/隐私-优先-brightgreen)]() > 本仓库包含 MockAddress 的**开源前端核心引擎**,用于生成跨多个国家/地区的真实格式测试地址和 MAC 地址数据。 > 完整生产环境网站: > > 🇬🇧 **English users please see: [README_EN.md](./README_EN.md) (English Documentation)** ![mockaddress 美国免税州地址生成器首页示例图片](cn.png) ## 项目简介 MockAddress Core 是一个**纯前端、零后端依赖**的测试数据引擎,专为开发者和 QA 工程师设计,提供: - **真实格式地址数据**,符合官方邮政标准(可在 Google Maps / Apple Maps 验证) - 可选的**身份字段 + 信用卡字段**(仅用于表单/支付流程测试) - **MAC 地址生成 + 厂商查询 + IPv6 Link-Local 推导**等网络测试数据 所有核心逻辑完全在浏览器端运行,可直接部署到任何静态托管环境(GitHub Pages、Cloudflare Pages、Vercel 等)。 > **注意**:本仓库仅开源**引擎和基础样式**。 > 大规模地址数据集和生产站点页面模板仍为 MockAddress 私有资产,用于在线服务。 --- ## 主要特性 - **多国家/地区地址生成(引擎支持)** - 支持为多个国家/地区生成符合本地邮政标准的地址结构 - 地址字段包含完整信息:街道、城市、州/省、邮编、国家等 - 可根据国家扩展本地化字段(如日本地址层级、香港中英文地址等) - **真实格式 & 可验证** - 地址数据基于官方邮政/统计数据 + OpenStreetMap 等公开数据源,经过清洗和整理 - 生成结果在设计上**可在 Google Maps / Apple Maps 等地图服务中验证** - 适用于注册表单、支付页面、税费计算逻辑等对地址格式要求严格的场景 - **可选身份 & 信用卡字段(仅测试用)** - 可选生成姓名、性别、生日、职业、本地化身份证号格式等 - 可选生成信用卡号(通过 Luhn 校验)、有效期、CVC 等字段 - 所有身份/卡片数据均为**随机生成,不对应任何真实个人或真实卡片** - **批量导出 & 自动化友好** - 内置 CSV / JSON 导出能力 - 适合自动化测试、回归测试、CI/CD 流水线批量注入测试数据 - **MAC 工具** - 生成多种格式的 MAC 地址(冒号、短横、点、无分隔等) - 基于 OUI 数据集进行厂商识别 - 支持从 MAC 推导 IPv6 Link-Local 地址 - 所有逻辑在浏览器本地完成,适用于网络测试、设备模拟、脚本开发 - **纯前端、隐私优先** - 不依赖后端服务,全部逻辑在前端 JS 中完成 - 可选将生成结果保存到浏览器 `localStorage`,服务器不存储任何生成数据 --- ## 仓库结构 ``` mockaddress-core/ ├── src/ │ ├── js/ │ │ ├── address-generator.js # 地址/身份/信用卡生成引擎 │ │ ├── mac-generator.js # MAC 生成与厂商查询 │ │ ├── storage.js # 存储、限流、导出工具 │ │ ├── language-switcher.js # 多语言路由与内部链接重写 │ │ ├── utils.js # 通用工具函数 │ │ └── config.js # 配置模块 │ └── css/ │ └── main.css # 通用暗色主题与基础 UI 组件样式 ├── README.md # 项目文档(本文件) ├── README_EN.md # 英文文档 ├── LICENSE # 开源协议(MIT) ├── CONTRIBUTING.md # 贡献指南 ├── ROADMAP.md # 路线图 └── .gitignore # Git 忽略规则 ``` > **提醒**:**本仓库不包含生产站点 HTML 文件和大规模数据文件 `data/*.json`**。 > 这些用于在线部署,不属于本次开源发布。 --- ## 使用方式 ### 快速开始 **方式一:直接使用(如果你的数据目录是 `data/`)** ```html ``` **方式二:自定义数据路径(推荐)** ```html ``` ### 配置选项 - **`dataBasePath`**:你的数据文件基础路径(如 `'my-data/'`、`'/static/data/'`) - **`autoDetectPaths`**:是否启用自动路径检测(默认 `true`,适合 mockaddress.com 的多语言结构) > **重要**:如果你不调用 `configure()`,代码会使用默认行为,**完全不影响 mockaddress.com 的正常运行**。 ### 可用函数 - `generateUSAddress(state)` - 美国地址 - `generateHKAddress(region, isEnglish)` - 香港地址 - `generateUKAddress(region)` - 英国地址 - `generateCAAddress(province)` - 加拿大地址 - `generateJPAddress(prefecture)` - 日本地址 - `generateINAddress(state)` - 印度地址 - `generateTWAddress(county)` - 台湾地址 - `generateSGAddress(state)` - 新加坡地址 - `generateDEAddress(state)` - 德国地址 - `generateTaxFreeAddress(state)` - 美国免税州地址 - `generateIdentityInfo(address)` - 身份信息 - `generateCreditCardInfo()` - 信用卡信息(测试用) ### 代码示例 **生成美国免税州地址:** ```javascript import { generateTaxFreeAddress } from './src/js/address-generator.js'; // 生成俄勒冈州(免税州)地址 const address = await generateTaxFreeAddress('OR'); console.log(address); // 输出: { street: "123 Main St", city: "Portland", state: "OR", zip: "97201", ... } ``` **生成地址 + 身份信息:** ```javascript import { generateUSAddress, generateIdentityInfo } from './src/js/address-generator.js'; const address = await generateUSAddress('CA'); const identity = generateIdentityInfo(address); console.log({ ...address, ...identity }); // 输出包含: name, gender, dateOfBirth, occupation, ssn 等 ``` **生成 MAC 地址:** ```javascript import { generateMACAddress, lookupVendor } from './src/js/mac-generator.js'; const mac = generateMACAddress('colon'); // 'aa:bb:cc:dd:ee:ff' const vendor = await lookupVendor(mac); console.log(vendor); // 来自 OUI 数据库的厂商信息 ``` **导出为 CSV/JSON:** ```javascript import { exportToCSV, exportToJSON, getAllSavedAddresses } from './src/js/storage.js'; // 保存一些地址后 const addresses = getAllSavedAddresses(); const csv = exportToCSV(addresses); const json = exportToJSON(addresses); // 下载或使用导出的数据 console.log(csv); console.log(json); ``` ### 在本机离线运行(仅自己使用,无需联网) 如果你和我一样,希望**只在自己的电脑上独享数据,不依赖任何外网服务器**,可以把整个 MockAddress Core 当成一个纯静态站点,在本机用一个简单的 HTTP 服务跑起来: - 我的开发环境是 Windows 电脑,安装了: - 一个现代浏览器(Chrome / Edge 等) - Python / PHP / Node.js(至少其一,实际我三者都装了) - 仓库代码放在本地某个目录,比如:`D:\mockaddress-core\`。 - 在项目根目录新建一个 `start-local-server.bat`,内容如下,一键启动本地服务器并自动打开浏览器访问 `http://localhost:8000`: ```bat @echo off echo Starting local server... echo. REM Check if Python 3 is available python --version >nul 2>&1 if %errorlevel% equ 0 ( python -c "import sys; sys.exit(0 if sys.version_info >= (3, 0) else 1)" >nul 2>&1 if %errorlevel% equ 0 ( echo Found Python 3 echo Starting server on http://localhost:8000 echo Press Ctrl+C to stop echo. timeout /t 2 /nobreak >nul start http://localhost:8000 python -m http.server 8000 exit /b 0 ) ) REM Check if Python 2 is available python --version >nul 2>&1 if %errorlevel% equ 0 ( python -c "import sys; sys.exit(0 if sys.version_info < (3, 0) else 1)" >nul 2>&1 if %errorlevel% equ 0 ( echo Found Python 2 echo Starting server on http://localhost:8000 echo Press Ctrl+C to stop echo. timeout /t 2 /nobreak >nul start http://localhost:8000 python -m SimpleHTTPServer 8000 exit /b 0 ) ) REM Check if PHP is available php --version >nul 2>&1 if %errorlevel% equ 0 ( echo Found PHP echo Starting server on http://localhost:8000 echo Press Ctrl+C to stop echo. timeout /t 2 /nobreak >nul start http://localhost:8000 php -S localhost:8000 exit /b 0 ) REM Check if Node.js is available where npx >nul 2>&1 if %errorlevel% equ 0 ( echo Found Node.js echo Starting server on http://localhost:8000 echo Press Ctrl+C to stop echo. timeout /t 2 /nobreak >nul start http://localhost:8000 npx --yes http-server -p 8000 exit /b 0 ) echo Error: No server found echo Please install Python, PHP, or Node.js pause exit /b 1 ``` 运行方式: - 双击 `start-local-server.bat`,脚本会依次尝试 Python 3 → Python 2 → PHP → Node.js,找到可用环境后自动启动本地服务器。 - 浏览器会自动打开 `http://localhost:8000`,此时**所有地址生成逻辑、包括美国地址生成器、香港中英文地址生成器等,全部只在你自己电脑本地运行,不依赖互联网**。 - 这种方式非常适合**内网环境**或对隐私/合规要求较高的团队。 详细使用说明请参考 [`使用说明.md`](./使用说明.md)。 你也可以参考我们的生产站点 查看真实使用场景和 UI 设计,然后在自己的项目中按需定制。 --- ## 部署示例:Cloudflare & VPS(静态托管) > 下列步骤是给要自己部署 mockaddress-core 的开发者看的,只描述最简单的路径,供 README 使用。 ### 使用 Cloudflare Pages 部署(推荐给前端 / 无运维成本场景) 1. 在 GitHub 上创建仓库(例如 `mockaddress-core`),把本项目代码推送上去。 2. 登录 Cloudflare,进入 **Pages**,选择「使用 Git 提供商创建项目」,绑定这个仓库。 3. 构建设置: - 框架预设:**None / 静态站点** - 构建命令:留空(或 `npm run build`,如果你将来加了打包流程) - 输出目录:设置为项目根目录(或者你的打包输出目录) 4. 部署后,确保: - 所有 JS/CSS 通过 `