随机 IP / 域名
IPv4/IPv6/随机域名
IP 地址类别参考
· 公网 IPv4:1.0.0.0 - 223.255.255.255 中排除私有段
· 私有 IPv4:10.0.0.0/8 / 172.16.0.0/12 / 192.168.0.0/16
· 回环:127.0.0.0/8
· IPv6 私有:fc00::/7(含 fd:: 唯一本地)
· CIDR 指定网段:填入 192.168.1.0/24 → 生成该段内随机 IP
关于本工具
了解工具定位 · 使用场景 · 对比优势
使用场景
隐私浏览测试
安全研究人员或普通用户在测试浏览器隐私保护时,需要验证网站是否通过 IP 或域名追踪用户。本工具可快速生成随机 IPv4/IPv6 地址和域名,用于填充表单或请求头,模拟不同网络身份,检测网站对匿名流量的响应行为,避免真实 IP 泄露。
网络配置验证
网络工程师配置防火墙或 DNS 规则后,需用假 IP 和域名测试策略是否生效。本工具提供合法格式的随机 IPv4/IPv6 地址和域名,填入 ACL 规则或 DNS 解析记录中,验证规则匹配与阻断效果,无需占用真实公网资源。
应用沙箱脱敏
移动端或桌面端开发者在测试应用网络请求时,需用假 IP 和域名填充日志或调试界面,避免真实服务器地址写入代码仓库。本工具一键生成随机地址,替换测试环境中的真实连接信息,降低敏感数据泄露风险,同时保持数据格式合规。
安全培训演示
安全讲师在演示 IP 伪造或 DNS 劫持攻击时,需要假地址作为教学示例。本工具可生成不同子网掩码的 IPv4 段、链路本地 IPv6 地址及随机域名,用于构造攻击场景或防御策略演示,避免使用真实网络资产,确保培训环境安全可控。
对比矩阵本工具 vs 竞品 vs 传统方法
| 维度 | 本工具(假 IP/域名) | 竞品 A(在线 IP 生成器) | 传统方法(手动修改 hosts) |
|---|---|---|---|
| 数据隐私 | 纯浏览器处理,数据不上传服务器 | 需将数据提交至云端生成 | 本地操作,但需手动编辑系统文件 |
| 处理速度 | 即时生成(毫秒级) | 受网络延迟影响,通常 1-3 秒 | 取决于手动输入速度,通常 10 秒以上 |
| 离线可用性 | 完全离线可用(浏览器本地运行) | 必须联网使用 | 完全离线可用 |
| 输出格式 | 支持 IPv4、IPv6、随机域名一键生成 | 通常仅支持单一格式输出 | 需手动构造每个 IP 和域名,易出错 |
| 批量生成 | 支持一次性生成多个随机 IP/域名 | 部分支持,但有限制 | 不支持,需逐个手动添加 |
| 使用门槛 | 打开网页即用,无需安装 | 需注册或登录部分服务 | 需具备系统文件编辑权限和基础知识 |
| 平台兼容性 | 任何现代浏览器(桌面/移动端) | 仅限桌面端浏览器 | 依赖操作系统(Windows/macOS/Linux 操作不同) |
使用指南
上手步骤 · 输入输出 · 避坑提示
输入输出示例8 个典型场景,覆盖常规、边界与易错
| 输入 | 输出 | 说明 |
|---|---|---|
| 192.168.1.1 | 192.168.1.1 | 典型场景:常见私有 IPv4 地址 |
| 2001:db8::1 | 2001:db8::1 | 典型场景:标准 IPv6 地址(文档前缀) |
| example.com | example.com | 典型场景:标准域名(保留域名) |
| 0.0.0.0 | 0.0.0.0 | 边界 case:IPv4 全零地址(未指定) |
| ::1 | ::1 | 边界 case:IPv6 环回地址 |
| 256.256.256.256 | 无效 IPv4 地址 | 易错 case:每段超过 255 的常见误输入 |
| google.com. | google.com | 易错 case:末尾带点号(FQDN)自动去除 |
| localhost | localhost | 边界 case:主机名(非域名)仍可识别 |
常见错误对照8 个常踩的坑 · 错误 → 修复
1. IPv6 地址省略了方括号
http://2001:db8::1:8080/pathhttp://[2001:db8::1]:8080/pathRFC 3986 规定 IPv6 字面地址在 URI 中必须用方括号包裹,否则冒号会被解析为端口分隔符,导致地址解析错误。
2. IPv6 地址未压缩时写了多余的 0
2001:0db8:0000:0000:0000:0000:0000:00012001:db8::1IPv6 允许省略每组前导零,并可用 :: 替代连续零段。但工具通常接受完整写法,只是可读性差且容易抄错。
3. IPv4 地址用了前导零(八进制歧义)
192.168.01.1192.168.1.1部分解析器(如 inet_aton)会将 01 解释为八进制(即十进制的 1),但现代标准(POSIX 不推荐)和大多数应用视为非法或产生歧义。
4. 随机域名带了协议前缀
https://example-test-abc.xyzexample-test-abc.xyz工具生成的随机域名是纯域名字符串,不含协议、端口或路径。带上 https:// 会导致后续拼接 URL 时出现双协议头。
5. 随机域名包含非法字符(下划线)
my_test_domain.iomy-test-domain.ioDNS 标准(RFC 1035)只允许字母、数字和连字符。下划线仅在 SRV 记录等特定用途中合法,通用域名中会被拒绝。
6. IPv4 地址写了超出 0-255 的数值
192.168.256.1192.168.255.1IPv4 每个字节取值范围 0-255,256 超出范围。部分库会截断或抛出异常,工具会直接标记为无效地址。
7. IPv6 地址中混入了字母 G
2001:db8:abcd:efgh::12001:db8:abcd:ef00::1IPv6 使用十六进制(0-9, a-f),字母 g 及以上非法。输入时容易手误将 f 打成 g,工具会立即报错。
8. 把子网掩码写成了 CIDR 以外的格式
192.168.1.0/255.255.255.0192.168.1.0/24本工具只接受 CIDR 前缀长度(/24)而非点分十进制掩码。混用格式会导致解析失败,需要手动转换。
工作原理
公式推导 · 流程图解 · 依据出处
核心公式
IPv4: 4 个 0-255 的十进制数,以点分隔;IPv6: 8 组 4 位十六进制数,以冒号分隔;随机域名: 由字母、数字、连字符组成的字符串,长度 1-63 字符,以点分隔多级标签
变量说明
IPv4 地址— 如 192.168.1.1,每段 0-255IPv6 地址— 如 2001:db8::1,可省略前导零随机域名— 如 example.com,标签长度 1-63
示例
生成一个随机 IPv4 地址:第一段 192,第二段 168,第三段 1,第四段 100 → 192.168.1.100。生成一个随机 IPv6 地址:2001:0db8:85a3:0000:0000:8a2e:0370:7334。生成一个随机域名:随机标签 'abc123' + 顶级域 '.com' → abc123.com。
适用范围
适用于测试、开发、演示场景,需生成符合 RFC 791(IPv4)、RFC 4291(IPv6)、RFC 1035(域名)规范的随机地址/域名。不适用于生产环境 DNS 解析或真实网络配置,因随机地址可能已被占用或属于保留段。
原理图
开发者集成
3 种主流语言 · 复制即用
import random
import ipaddress
# 生成随机 IPv4 地址
def random_ipv4():
return f"{random.randint(1, 255)}.{random.randint(0, 255)}.{random.randint(0, 255)}.{random.randint(1, 255)}"
# 生成随机 IPv6 地址
def random_ipv6():
segments = [f"{random.randint(0, 0xffff):04x}" for _ in range(8)]
return ":".join(segments)
# 生成随机域名(简单模式:单词+数字)
def random_domain():
prefixes = ["test", "demo", "example", "dev", "api"]
tlds = ["com", "net", "org", "io", "dev"]
return f"{random.choice(prefixes)}{random.randint(100, 999)}.{random.choice(tlds)}"
# 验证 IPv4 合法性
ipv4 = random_ipv4()
assert ipaddress.ip_address(ipv4).version == 4
# 验证 IPv6 合法性
ipv6 = random_ipv6()
assert ipaddress.ip_address(ipv6).version == 6
print(f"IPv4: {ipv4}")
print(f"IPv6: {ipv6}")
print(f"Domain: {random_domain()}")package main
import (
"fmt"
"math/rand"
"net"
"strconv"
"strings"
"time"
)
func init() {
rand.Seed(time.Now().UnixNano())
}
func randomIPv4() string {
parts := make([]string, 4)
for i := 0; i < 4; i++ {
parts[i] = strconv.Itoa(rand.Intn(255) + 1)
}
return strings.Join(parts, ".")
}
func randomIPv6() string {
parts := make([]string, 8)
for i := 0; i < 8; i++ {
parts[i] = fmt.Sprintf("%04x", rand.Intn(0x10000))
}
return strings.Join(parts, ":")
}
func randomDomain() string {
prefixes := []string{"test", "demo", "example", "dev"}
tlds := []string{"com", "net", "org", "io"}
return fmt.Sprintf("%s%d.%s",
prefixes[rand.Intn(len(prefixes))],
rand.Intn(900)+100,
tlds[rand.Intn(len(tlds))])
}
func main() {
// 生成并验证 IPv4
ipv4 := randomIPv4()
if net.ParseIP(ipv4).To4() != nil {
fmt.Println("IPv4:", ipv4)
}
// 生成并验证 IPv6
ipv6 := randomIPv6()
if net.ParseIP(ipv6) != nil {
fmt.Println("IPv6:", ipv6)
}
fmt.Println("Domain:", randomDomain())
}// 生成随机 IPv4 地址
function randomIPv4() {
const parts = Array.from({ length: 4 }, () => Math.floor(Math.random() * 255) + 1);
return parts.join('.');
}
// 生成随机 IPv6 地址
function randomIPv6() {
const segments = Array.from({ length: 8 }, () =>
Math.floor(Math.random() * 0x10000).toString(16).padStart(4, '0')
);
return segments.join(':');
}
// 生成随机域名
function randomDomain() {
const prefixes = ['test', 'demo', 'example', 'dev', 'api'];
const tlds = ['com', 'net', 'org', 'io', 'dev'];
return `${prefixes[Math.floor(Math.random() * prefixes.length)]}${Math.floor(Math.random() * 900) + 100}.${tlds[Math.floor(Math.random() * tlds.length)]}`;
}
// 验证 IPv4 格式
const ipv4 = randomIPv4();
const ipv4Regex = /^(\d{1,3}\.){3}\d{1,3}$/;
console.assert(ipv4Regex.test(ipv4), 'Invalid IPv4');
// 验证 IPv6 格式
const ipv6 = randomIPv6();
const ipv6Regex = /^([0-9a-f]{1,4}:){7}[0-9a-f]{1,4}$/;
console.assert(ipv6Regex.test(ipv6), 'Invalid IPv6');
console.log('IPv4:', ipv4);
console.log('IPv6:', ipv6);
console.log('Domain:', randomDomain());常见问题
7 个高频疑问