假数据生成器
为开发与测试环境生成中文假数据:姓名、手机号(中间四位脱敏)、身份证号(校验位合法但地区码与顺序号随机)、地址与邮箱。每次点击重新生成,最多 100 条,可复制为制表符分隔文本直接粘贴进表格,全部本地随机生成。
开发与测试常需要一批「看起来真实、但不对应真人」的数据:界面排版要看中文姓名的长度、表单校验要过手机号与身份证格式、导出报表要有足够行数。这个工具在浏览器本地随机生成这类数据,不经服务器,也不保存记录。
生成规则上有意做了两处限制:手机号中间四位打码(138****1234),保留格式特征但不会生成可直接拨打的号码;身份证号使用示例地区码、顺序号随机,仅校验位符合 GB 11643 算法,不指向任何真实证件。因此它适合测试环境,不建议用于对外发布的正式数据。
这个工具解决你的问题了吗?
提交后会把工具名、你的输入与当前结果发送到服务器;请勿填写身份证号、手机号等隐私信息。
AI 助手 会结合你当前的输入与结果回答
追问会再次把当前输入与结果发送到服务器;请勿填写隐私信息。
使用步骤
- 选择生成条数(1~100)与所需字段组合(姓名 / 手机号 / 身份证 / 地址 / 邮箱)。
- 点「生成」得到表格结果;参数变化不会自动重掷,需要新数据时再点一次。
- 点「复制全部」得到制表符分隔文本(首行为表头),可直接粘贴进 Excel、WPS 或数据库工具。
- 用于接口 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 之类的本地捕获工具。
延伸阅读
来自本站原创文章,讲清这个工具背后的算法与口径。