开发编码 本地计算 开箱即用 内置示例 不留痕迹

假数据生成器

为开发与测试环境生成中文假数据:姓名、手机号(中间四位脱敏)、身份证号(校验位合法但地区码与顺序号随机)、地址与邮箱。每次点击重新生成,最多 100 条,可复制为制表符分隔文本直接粘贴进表格,全部本地随机生成。

开发与测试常需要一批「看起来真实、但不对应真人」的数据:界面排版要看中文姓名的长度、表单校验要过手机号与身份证格式、导出报表要有足够行数。这个工具在浏览器本地随机生成这类数据,不经服务器,也不保存记录。

生成规则上有意做了两处限制:手机号中间四位打码(138****1234),保留格式特征但不会生成可直接拨打的号码;身份证号使用示例地区码、顺序号随机,仅校验位符合 GB 11643 算法,不指向任何真实证件。因此它适合测试环境,不建议用于对外发布的正式数据。

使用步骤

  1. 选择生成条数(1~100)与所需字段组合(姓名 / 手机号 / 身份证 / 地址 / 邮箱)。
  2. 点「生成」得到表格结果;参数变化不会自动重掷,需要新数据时再点一次。
  3. 点「复制全部」得到制表符分隔文本(首行为表头),可直接粘贴进 Excel、WPS 或数据库工具。
  4. 用于接口 mock 时,建议把手机号、身份证等字段再替换成固定值,避免误入正式库。

计算原理与示例

生成范围

选择条数(1~100)与字段组合后点「生成」。姓名从常见姓氏与名字库随机组合;手机号使用公开号段随机生成;身份证号按 GB 11643 校验位算法补齐末位,格式合法但号码随机,不对应任何真实证件。

脱敏设计

手机号默认中间四位打码(138****1234),既保留格式特征用于界面测试,又避免生成完整可拨打的号码。身份证号地区码固定使用示例值,顺序号随机,同样不可对应真人。

复制使用

生成结果以表格展示,点「复制全部」得到制表符分隔的文本(首行为表头),可直接粘贴进 Excel、WPS 或数据库工具。参数变化不会自动重掷,需要新数据时再点一次「生成」。

代码示例

SQL 造一张测试表的假数据(MySQL)

-- 借助 information_schema 生成序号,造 100 行测试订单
INSERT INTO orders (order_no, user_name, phone, amount, created_at)
SELECT
  CONCAT('TEST', LPAD(seq, 8, '0')),
  ELT(1 + FLOOR(RAND() * 5), '张伟', '王芳', '李娜', '刘洋', '陈静'),
  CONCAT('138', LPAD(FLOOR(RAND() * 10000), 4, '0'), '****'),
  ROUND(RAND() * 1000, 2),
  NOW() - INTERVAL FLOOR(RAND() * 365) DAY
FROM (
  SELECT @row := @row + 1 AS seq
  FROM information_schema.columns a, information_schema.columns b, (SELECT @row := 0) t
  LIMIT 100
) seq;

JavaScript 前端 mock 列表

const surnames = ['张', '王', '李', '赵', '陈'];
const given = ['伟', '芳', '娜', '强', '静'];
const pick = (a) => a[Math.floor(Math.random() * a.length)];

const makeUser = (i) => ({
  id: i + 1,
  name: pick(surnames) + pick(given),
  phone: `138${String(Math.floor(Math.random() * 1e4)).padStart(4, '0')}****`,
  amount: Number((Math.random() * 1000).toFixed(2)),
});

console.table(Array.from({ length: 20 }, (_, i) => makeUser(i)));

常见问题

生成的身份证号是真实的吗?

不是。号码由随机数拼装并按国标算法补齐校验位,格式合法但地区码、出生日期、顺序码都是随机的,不对应任何真实证件与个人。它只用于测试表单校验、数据库填充等开发场景。

手机号为什么中间四位是星号?

这是刻意的脱敏设计:138****1234 保留了号段与尾号格式,足以测试界面展示、格式校验和存储逻辑,但拼不出可拨打的完整号码,避免生成器被用于骚扰或注册场景。需要完整格式时可自行替换星号。

生成的数据会保存或上传吗?

不会。所有数据在浏览器里用随机数即时生成,不经过服务器也不落盘,刷新页面即消失。复制到剪贴板的内容由你自己管理。

最多能生成多少条?

单次最多 100 条。这个上限是为了保证页面渲染流畅与复制内容可控;需要更大量数据时,建议用 Faker、mockjs 之类的程序化方案批量生成后入库。

身份证校验位是怎么算的?

前 17 位分别乘以权重 7 9 10 5 8 4 2 1 6 3 7 9 10 5 8 4 2,求和后对 11 取模,按余数从 1 0 X 9 8 7 6 5 4 3 2 中取校验位。生成的假号严格按此算法补位,因此能通过常规的格式校验逻辑。

能用在生产环境吗?

不能。假数据仅用于开发、测试与演示环境。生产系统的用户数据必须来自真实用户输入,把假数据混入生产库会造成数据污染,且假身份证号在实名核验场景会直接失败。

生成的邮箱能收到邮件吗?

不能。邮箱使用 example.com、test.com 等保留示例域名随机拼装,这些域名不提供真实邮箱服务。测试邮件发送流程时,请使用 MailHog、Mailtrap 之类的本地捕获工具。

延伸阅读

来自本站原创文章,讲清这个工具背后的算法与口径。