Module genshin.utility.ds
Dynamic secret generation.
Functions
def generate_cn_dynamic_secret(body: Any = None,
query: Mapping[str, Any] | None = None,
*,
salt: str = 'xV8v4Qu54lUKrEYFZkJhB8cuOh9Asafs') ‑> str-
Expand source code
def generate_cn_dynamic_secret( body: typing.Any = None, query: typing.Optional[typing.Mapping[str, typing.Any]] = None, *, salt: str = constants.DS_SALT[types.Region.CHINESE], ) -> str: """Create a new chinese dynamic secret.""" t = int(time.time()) r = random.randint(100001, 200000) b = json.dumps(body) if body else "" q = "&".join(f"{k}={v}" for k, v in sorted(query.items())) if query else "" h = hashlib.md5(f"salt={salt}&t={t}&r={r}&b={b}&q={q}".encode()).hexdigest() return f"{t},{r},{h}"
Create a new chinese dynamic secret.
def generate_dynamic_secret(salt: str = '6s25p5ox5y14umn1p61aqyyvbvvl3lrt') ‑> str
-
Expand source code
def generate_dynamic_secret(salt: str = constants.DS_SALT[types.Region.OVERSEAS]) -> str: """Create a new overseas dynamic secret.""" t = int(time.time()) r = "".join(random.choices(string.ascii_letters, k=6)) h = hashlib.md5(f"salt={salt}&t={t}&r={r}".encode()).hexdigest() return f"{t},{r},{h}"
Create a new overseas dynamic secret.
def generate_geetest_ds(region: Region) ‑> str
-
Expand source code
def generate_geetest_ds(region: types.Region) -> str: """Create a dynamic secret for geetest API endpoint.""" t = int(time.time()) r = random.randint(100000, 200000) h = hashlib.md5(f"salt={constants.DS_SALT[region]}&t={t}&r={r}&b=&q=is_high=false".encode()).hexdigest() return f"{t},{r},{h}"
Create a dynamic secret for geetest API endpoint.
def generate_passport_ds(body: Mapping[str, Any]) ‑> str
-
Expand source code
def generate_passport_ds(body: typing.Mapping[str, typing.Any]) -> str: """Create a dynamic secret for Miyoushe passport API.""" salt = constants.DS_SALT["cn_passport"] t = int(time.time()) r = "".join(random.sample(string.ascii_letters, 6)) b = json.dumps(body) h = hashlib.md5(f"salt={salt}&t={t}&r={r}&b={b}&q=".encode()).hexdigest() result = f"{t},{r},{h}" return result
Create a dynamic secret for Miyoushe passport API.
def get_ds_headers(region: Region,
data: Any = None,
params: Mapping[str, Any] | None = None,
lang: str | None = None) ‑> dict[str, typing.Any]-
Expand source code
def get_ds_headers( region: types.Region, data: typing.Any = None, params: typing.Optional[typing.Mapping[str, typing.Any]] = None, lang: typing.Optional[str] = None, ) -> dict[str, typing.Any]: """Get ds http headers.""" if region == types.Region.OVERSEAS: ds_headers = { "x-rpc-app_version": "1.5.0", "x-rpc-client_type": "5", "x-rpc-language": lang, "x-rpc-lang": lang, "ds": generate_dynamic_secret(), } elif region == types.Region.CHINESE: ds_headers = { "x-rpc-app_version": "2.11.1", "x-rpc-client_type": "5", "ds": generate_cn_dynamic_secret(data, params), } else: raise TypeError(f"{region!r} is not a valid region.") return ds_headers
Get ds http headers.