diff --git a/api/config.py b/api/config.py index 29173a2..a40c52e 100644 --- a/api/config.py +++ b/api/config.py @@ -57,6 +57,7 @@ CONFIG_KEYS = [ "cfworker_enabled_domains", "cfworker_subdomain", "cfworker_random_subdomain", + "cfworker_random_name_subdomain", "cfworker_fingerprint", "smstome_cookie", "smstome_country_slugs", diff --git a/core/base_mailbox.py b/core/base_mailbox.py index 7a9edc0..5939767 100644 --- a/core/base_mailbox.py +++ b/core/base_mailbox.py @@ -314,6 +314,7 @@ def create_mailbox( enabled_domains=extra.get("cfworker_enabled_domains", ""), subdomain=extra.get("cfworker_subdomain", ""), random_subdomain=extra.get("cfworker_random_subdomain", False), + random_name_subdomain=extra.get("cfworker_random_name_subdomain", False), fingerprint=extra.get("cfworker_fingerprint", ""), custom_auth=extra.get("cfworker_custom_auth", ""), proxy=proxy, @@ -2280,6 +2281,7 @@ class CFWorkerMailbox(BaseMailbox): enabled_domains: Any = None, subdomain: str = "", random_subdomain: Any = False, + random_name_subdomain: Any = False, fingerprint: str = "", custom_auth: str = "", proxy: str = None, @@ -2297,6 +2299,7 @@ class CFWorkerMailbox(BaseMailbox): self.enabled_domains = raw_enabled_domains self.subdomain = self._normalize_subdomain(subdomain) self.random_subdomain = self._to_bool(random_subdomain) + self.random_name_subdomain = self._to_bool(random_name_subdomain) self.fingerprint = fingerprint self.custom_auth = custom_auth self.proxy = build_requests_proxy_config(proxy) @@ -2452,7 +2455,16 @@ class CFWorkerMailbox(BaseMailbox): return "" sub_parts: list[str] = [] - if self.random_subdomain: + if self.random_name_subdomain: + try: + import names + import random + + name_func = random.choice([names.get_first_name, names.get_last_name]) + sub_parts.append(name_func().lower().replace(" ", "")) + except ImportError: + sub_parts.append(self._generate_subdomain_label()) + elif self.random_subdomain: sub_parts.append(self._generate_subdomain_label()) if self.subdomain: sub_parts.append(self.subdomain) diff --git a/frontend/src/pages/Accounts.tsx b/frontend/src/pages/Accounts.tsx index 8021d7e..44076ac 100644 --- a/frontend/src/pages/Accounts.tsx +++ b/frontend/src/pages/Accounts.tsx @@ -671,6 +671,7 @@ export default function Accounts() { cfworker_domain: cfg.cfworker_domain, cfworker_subdomain: cfg.cfworker_subdomain, cfworker_random_subdomain: parseBooleanConfigValue(cfg.cfworker_random_subdomain), + cfworker_random_name_subdomain: parseBooleanConfigValue(cfg.cfworker_random_name_subdomain), cfworker_fingerprint: cfg.cfworker_fingerprint, smstome_cookie: cfg.smstome_cookie, smstome_country_slugs: cfg.smstome_country_slugs, diff --git a/frontend/src/pages/RegisterTaskPage.tsx b/frontend/src/pages/RegisterTaskPage.tsx index c4c0a36..c8964cc 100644 --- a/frontend/src/pages/RegisterTaskPage.tsx +++ b/frontend/src/pages/RegisterTaskPage.tsx @@ -85,6 +85,7 @@ export default function RegisterTaskPage() { cfworker_domain_override: '', cfworker_subdomain: cfg.cfworker_subdomain || '', cfworker_random_subdomain: parseBooleanConfigValue(cfg.cfworker_random_subdomain), + cfworker_random_name_subdomain: parseBooleanConfigValue(cfg.cfworker_random_name_subdomain), cfworker_fingerprint: cfg.cfworker_fingerprint || '', smstome_cookie: cfg.smstome_cookie || '', smstome_country_slugs: cfg.smstome_country_slugs || '', @@ -146,6 +147,7 @@ export default function RegisterTaskPage() { cfworker_domain_override: values.cfworker_domain_override, cfworker_subdomain: values.cfworker_subdomain, cfworker_random_subdomain: values.cfworker_random_subdomain, + cfworker_random_name_subdomain: values.cfworker_random_name_subdomain, cfworker_fingerprint: values.cfworker_fingerprint, smstome_cookie: values.smstome_cookie, smstome_country_slugs: values.smstome_country_slugs, @@ -469,9 +471,12 @@ export default function RegisterTaskPage() { > - + 每次注册前随机生成一层子域名 + + 使用随机姓名作为子域名 + diff --git a/frontend/src/pages/Settings.tsx b/frontend/src/pages/Settings.tsx index 5a6f3df..0694508 100644 --- a/frontend/src/pages/Settings.tsx +++ b/frontend/src/pages/Settings.tsx @@ -196,6 +196,7 @@ const TAB_ITEMS = [ { key: 'cfworker_custom_auth', label: '站点密码', secret: true }, { key: 'cfworker_subdomain', label: '固定子域名', placeholder: 'mail / pool-a' }, { key: 'cfworker_random_subdomain', label: '随机子域名', type: 'boolean' }, + { key: 'cfworker_random_name_subdomain', label: '随机姓名子域名', type: 'boolean' }, { key: 'cfworker_fingerprint', label: 'Fingerprint', placeholder: '6703363b...' }, ], }, @@ -1350,6 +1351,7 @@ export default function Settings() { data.cfworker_domains = parseStoredDomainList(data.cfworker_domains) data.cfworker_enabled_domains = parseStoredDomainList(data.cfworker_enabled_domains) data.cfworker_random_subdomain = parseBooleanConfigValue(data.cfworker_random_subdomain) + data.cfworker_random_name_subdomain = parseBooleanConfigValue(data.cfworker_random_name_subdomain) form.setFieldsValue(data) }) }, [form]) @@ -1373,6 +1375,7 @@ export default function Settings() { values.cfworker_domain = '' } values.cfworker_random_subdomain = parseBooleanConfigValue(values.cfworker_random_subdomain) + values.cfworker_random_name_subdomain = parseBooleanConfigValue(values.cfworker_random_name_subdomain) await apiFetch('/config', { method: 'PUT', body: JSON.stringify({ data: values }) }) form.setFieldsValue({ @@ -1380,6 +1383,7 @@ export default function Settings() { cfworker_enabled_domains: enabledDomains, cfworker_domain: domains.length > 0 ? '' : values.cfworker_domain, cfworker_random_subdomain: values.cfworker_random_subdomain, + cfworker_random_name_subdomain: values.cfworker_random_name_subdomain, }) message.success('保存成功') setSaved(true) diff --git a/requirements.txt b/requirements.txt index 33b7669..5045532 100644 --- a/requirements.txt +++ b/requirements.txt @@ -16,3 +16,4 @@ rich>=13.7.1 pyinstaller>=6.0.0 httpx>=0.27.0 selectolax>=0.3.21 +names>=0.3.0