Source code for duck.utils.rand_domain
import random
import string
[docs]
def generate_random_label(length: int) -> str:
"""
Generates a random label for a domain name.
Args:
length (int): The length of the label.
Returns:
str: A random label.
"""
return "".join(
random.choices(string.ascii_lowercase + string.digits, k=length))
[docs]
def generate_random_domain(max_labels: int = 3,
max_label_length: int = 32) -> str:
"""
Generates a random domain name valid according to RFC 1034/1035.
Args:
max_labels (int): Maximum number of labels in the domain. Default is 3.
max_label_length (int): Maximum length of each label. Default is 63.
Returns:
str: A random domain name.
"""
labels = [
generate_random_label(random.randint(1, max_label_length))
for _ in range(max_labels)
]
return ".".join(labels) + ".com"