怎样用脚本批量生成手机号?

wen 实用脚本 1

本文目录导读:

怎样用脚本批量生成手机号?

  1. 场景一:生成随机的、合法的、可用的手机号(用于测试)
  2. 场景二:生成连续的手机号(用于压力测试、模拟递增数据)
  3. 场景三:使用 Shell 脚本(Linux/Mac)快速生成
  4. 如何确保号码不重复?
  5. 扩展思路:生成指定运营商的号码(验证、测试)
  6. 为什么生成的号码可能是“无效”的?
  7. 工具推荐(无需写代码)

生成手机号码的脚本需要根据你的使用场景(如测试、数据分析、学习等)来设计,生成手机号的核心是生成符合中国电信运营商标识(号段)的11位数字

下面提供几种不同场景下,使用 Python 和 Bash 生成手机号的脚本示例。

重要提示: 如果你是为了骚扰、注册垃圾账号、营销轰炸等非法目的,请不要使用这些代码,这是违法的。

生成随机的、合法的、可用的手机号(用于测试)

合法的手机号需要满足:前3位是真实的号段(如 139, 150, 186 等),中间4位是地区编码(可随机),最后4位是随机数字。

import random
# 真实的手机号号段(前三位或前四位)
# 联通、移动、电信 常见号段
phone_prefixes = [
    "130", "131", "132", "133", "134", "135", "136", "137", "138", "139",
    "150", "151", "152", "153", "155", "156", "157", "158", "159", 
    "166", "167",
    "170", "171", "172", "173", "175", "176", "177", "178", 
    "180", "181", "182", "183", "184", "185", "186", "187", "188", "189",
    "190", "191", "192", "193", "195", "196", "198", "199"
]
def generate_phone_number():
    """生成一个随机手机号"""
    prefix = random.choice(phone_prefixes)
    # 生成8位随机数字
    suffix = ''.join(random.choices('0123456789', k=8))
    return prefix + suffix
# 批量生成 100 个
print("生成的手机号列表:")
phone_numbers = [generate_phone_number() for _ in range(100)]
for i, phone in enumerate(phone_numbers, 1):
    print(f"{i}. {phone}")
# 如果需要写入文件:
with open("phones.txt", "w") as f:
    for phone in phone_numbers:
        f.write(phone + "\n")
print("\n已写入 phones.txt 文件。")

生成连续的手机号(用于压力测试、模拟递增数据)

适合测试接口的防刷能力或模拟用户排队。

def generate_sequential_phones(start_prefix="138", start_suffix=10000000, count=50):
    """生成递增的手机号"""
    phones = []
    base = int(start_suffix)
    for i in range(count):
        suffix = str(base + i).zfill(8)  # 8位数字,不足补零
        phone = start_prefix + suffix
        phones.append(phone)
    return phones
# 从 13810000000 开始生成 50 个
phones = generate_sequential_phones("138", 10000000, 50)
for p in phones:
    print(p)

使用 Shell 脚本(Linux/Mac)快速生成

适合极速小批量测试,不需要安装 Python 的环境。

#!/bin/bash
# 生成 10 个随机手机号
for i in {1..10}
do
  # 从常见号段中随机选一个
  prefix=("130" "131" "132" "133" "134" "135" "136" "137" "138" "139" "150" "151" "152" "153" "155" "156" "157" "158" "159" "186" "187" "188")
  random_prefix=${prefix[$RANDOM % ${#prefix[@]}]}
  # 生成 8 位随机数字
  suffix=$(printf "%08d" $((RANDOM * RANDOM % 100000000)))
  echo "${random_prefix}${suffix}"
done
# 保存到文件
# ./generate.sh > phone_list.txt

如何确保号码不重复?

如果需要生成大量(如 10 万)且互不重复的号码,可以使用 set 数据结构。

import random
def generate_unique_phones(phone_set, count=1000):
    """生成不重复的号码"""
    local_set = set()
    while len(local_set) < count:
        phone = generate_phone_number()  # 复用上面的函数
        if phone not in phone_set:       # 排除全局已有的号
            local_set.add(phone)
    return list(local_set)
# 示例:生成 10 个不重复的
unique = generate_unique_phones(set(), 10)
print(unique)

扩展思路:生成指定运营商的号码(验证、测试)

# 只生成移动号段
mobile_prefixes = ["134", "135", "136", "137", "138", "139", "150", "151", "152", "157", "158", "159", "188", "187", "182", "183", "184", "178"]
def generate_mobile():
    prefix = random.choice(mobile_prefixes)
    suffix = ''.join(random.choices('0123456789', k=8))
    return prefix + suffix

为什么生成的号码可能是“无效”的?

  • 运营商未放号:很多号段虽然存在,但部分号码并未分配给用户。
  • 无法接打电话:生成的号码大概率是空号,无法收到验证码,只能用来填充数据库、测试前端输入限制、做演示数据。

工具推荐(无需写代码)

如果你不会编程,可以使用在线网站生成,搜索“在线手机号生成器”,不过要注意输入输出格式,并且警惕隐私泄露风险。

抱歉,评论功能暂时关闭!