"""会话层 (session layer) for the yunke CRM API. Public surface: * :class:`app.session.login.LoginResult` — parsed login outcome (userid, company, cookies snapshot, raw payload). * :func:`app.session.login.get_secure_key` — ``GET /newuc/login/getSecureKey``. * :func:`app.session.login.pc_login` — ``POST /usercenter/login/pcLogin``. * :func:`app.session.login.encrypt_password` — RSA (PKCS#1 v1.5) password encryption using the ``getSecureKey`` modulus/exponent. * :class:`app.session.yunke_client.YunkeClient` — the authenticated HTTP client every scraper uses. """ from app.session.login import ( LoginResult, encrypt_password, get_secure_key, pc_login, ) from app.session.yunke_client import YunkeClient __all__ = [ "LoginResult", "YunkeClient", "encrypt_password", "get_secure_key", "pc_login", ]