You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python域名生成器分隔符随机性不足问题求助

解决Python域名生成器分隔符随机性不足的问题

问题分析

你设置了分隔符集合delimiters = ['', '-', '.'],期望生成如web-loginconfirm.co.id、web.login-confirm.co.id这类多种分隔符混合的域名,但当前代码输出的域名分隔符样式单一,无法实现混合效果。

核心原因是:当前代码使用random.choice(delimiters).join(data)的方式,会选择一个固定分隔符连接所有子域名部分,导致整个前缀的分隔符完全一致,无法实现多种分隔符混合的效果。

解决方案

需要改为为每一对相邻的子域名部分随机选择分隔符,而不是用同一个分隔符贯穿始终。可以自定义一个随机连接函数,逐个拼接子域名部分,每次都随机挑选分隔符。

修改后的完整代码

import random

def random_join(parts, delimiters):
    if not parts:
        return ""
    result = parts[0]
    for part in parts[1:]:
        # 每两个相邻部分之间随机选择一个分隔符
        result += random.choice(delimiters) + part
    return result

Example = open("dictionaries/examples.txt", 'w', encoding="utf-8")
with open("dictionaries/Combined.txt") as i:
    Test = [line.rstrip() for line in i]

# Combined.txt中的示例内容
Example_words = ['login', 'confirm', 'signup', 'confirmation', 'enroll', 'mobile', 'access',
'claim', 'service', 'group', 'recovery', 'support', 'find', 'confirmation']

delimiters = ['', '-', '.']
web = 'web'
subdomain_count2 = 2
subdomain_count3 = 3
subdomain_count4 = 4
suffix = ['co.id', 'info', 'id', 'com']
output = []
for i in range(5):
    outputs = []
    outputs2 = []
    outputs3 = []
    for j in range(subdomain_count2):
        outputs.append(random.choice(Test))
    data = outputs + [web]
    random.shuffle(data)
    for k in range(subdomain_count3):
        outputs2.append(random.choice(Test))
    data2 = outputs2 + [web]
    random.shuffle(data2)
    for l in range(subdomain_count4):
        outputs3.append(random.choice(Test))
    data3 = outputs3 + [web]
    random.shuffle(data3)
    
    # 使用自定义函数生成带随机混合分隔符的前缀
    prefix = random_join(data, delimiters)
    prefix2 = random_join(data2, delimiters)
    prefix3 = random_join(data3, delimiters)
    
    tld = random.choice(suffix)
    addr1 = '.'.join([prefix, tld])
    addr2 = '.'.join([prefix2, tld])
    addr3 = '.'.join([prefix3, tld])
    addr = (addr1 + '\n' + addr2 + '\n' + addr3 + '\n')
    output.append(addr)
    Example.write(addr)

Example.close()  # 确保文件资源释放

with open("dictionaries/examples.txt") as f:
    websamples = [line.rstrip() for line in f]

关键修改说明

  1. 新增random_join函数:实现逐个部分随机选分隔符的逻辑,确保相邻子域名之间的分隔符可以不同;
  2. 移除冗余代码:删除了原来无意义的out = random.choice(delimiters).join([prefix])逻辑,因为prefix已经是处理好的前缀;
  3. 优化资源管理:增加Example.close()确保文件资源被正确释放。

效果示例

修改后生成的域名会包含多种分隔符组合,例如:

  • web-login.confirm.co.id
  • login.web-confirmation.info
  • mobile.access-web.id

内容的提问来源于stack exchange,提问作者Tsukuru

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.14 18:31:50