Skip to main content

wulu-shumei-bypass

PyPI Python License CI

| English | 简体中文 |

A Python framework for interacting with Shumei (数美) CAPTCHA service — handles registration, image fetching, parameter encryption, and verification submission.

The framework itself is fully open-source. Reverse-engineered solvers for specific captcha modes are distributed as private extension modules (see Private Extensions).

Features

  • 🧩 Protocol-level integration — handles captcha registration, image fetching, field encryption, and verification submission against the Shumei (数美) API
  • 🔐 Correct encryption out of the box — DES-encrypted protocol fields (selectData, mouseData, duration, etc.) with the right parameter names per protocol version
  • 🖱️ Realistic trajectory generation — human-like mouse movement paths for slide captchas
  • 🧠 Pluggable solver architecture — register your own solver per mode with @Shumei.add_solver, or use the private extensions
  • 📦 Multi-mode support — slide, auto_slide, select, icon_select, seq_select, spatial_select

Installation

uv add "wulu-shumei-bypass[all]"
# or
pip install "wulu-shumei-bypass[all]"

Optional extras

Mode Status Extra
slide ✅ wulu-shumei-bypass[cv]
spatial_select ✅ wulu-shumei-bypass[cv]
auto_slide ✅ —
icon_select 🔒 —
seq_select 🔒 —
select ❌ —

Legend: ✅ = open source · 🔒 = private extension · ❌ = not available

Quick Start

Register & verify (slide)

import asyncio

from wulu_shumei_bypass import Shumei


async def main():
    s = Shumei(
        organization='your-organization-id',
        mode='slide',
    )
    result = await s.solve()
    print(result)


asyncio.run(main())

Register manually & fetch images

import asyncio

from wulu_shumei_bypass import Shumei


async def main():
    s = Shumei(organization='your-organization-id', mode='icon_select')
    reg = await s.register()  # -> RegisterResult (rid, bg, fg, ...)
    bg = await s.fetch_img(reg['bg'])  # raw bytes of background image
    fg = await s.fetch_img(reg['fg'])  # raw bytes of foreground image


asyncio.run(main())

Low-level verify with a custom solver

import asyncio

from wulu_shumei_bypass import Shumei


@Shumei.add_solver('seq_select')
def solve_seq(bg: bytes) -> list[list[float]]:
    # return a list of [x_ratio, y_ratio] click points in click order
    ...


async def main():
    s = Shumei(organization='your-organization-id', mode='seq_select')
    reg = await s.register()
    result = await s.fverify(reg)
    print(result)  # {'code': 1100, 'riskLevel': 'PASS', ...}


asyncio.run(main())

API Overview

Shumei(**params)

Param Type Default Description
organization str (required) Organization ID assigned by Shumei
app_id str default Application ID
channel str default Channel identifier
version str 1.0.4 Protocol version (rversion)
sdkver str 1.1.3 SDK version
mode Mode slide Captcha mode
lang str zh-cn Language
os_type OSType web_pc OS type (web_pc / web_mobile)
captcha_uuid str auto Session UUID (auto-generated)
xhr_hooked bool True Whether the target site hooks XHR
custom_data dict {} Extra data sent with registration

Methods

  • await s.register() -> RegisterResult — obtain a new captcha challenge
  • await s.fetch_img(path: str) -> bytes — download a captcha image
  • await s.fverify(reg: RegisterResult) -> VerifyResult — submit a solution
  • await s.solve(retry: int = 3) -> VerifyResult — register → solve → verify until PASS
  • @Shumei.add_solver(mode) — register a custom solver for a mode

Solver contract

Each solver receives the image bytes and returns click coordinates as ratios (0.0–1.0 relative to image dimensions), in click order:

Mode Signature
slide (bg: bytes, fg: bytes) -> float (slide ratio)
auto_slide (no solver needed)
spatial_select (bg: bytes, order: str) -> tuple[float, float]
icon_select (bg: bytes, fg: bytes) -> list[list[float]]
select (bg: bytes, order: list[str]) -> list[list[float]]
seq_select (bg: bytes) -> list[list[float]]

Private Extensions

Solvers for icon_select, seq_select, and select are not bundled with this open-source package. They live in private repositories and are loaded automatically when installed:

  • wulu-shumei-bypass-icon
  • wulu-shumei-bypass-seq

Contact the author for access to the private extensions.

Development

uv sync --dev
uv run pytest

Disclaimer

⚠️ For educational and research purposes only. Use at your own risk.

This project is intended solely for security research, reverse-engineering education, and interoperability testing. The author is not responsible for any misuse, unauthorized access, or violation of third-party terms of service. Always ensure your use complies with applicable laws and the terms of the services you interact with.

License

MIT

Metadata

Release files for wulu-shumei-bypass 0.1.3

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for wulu-shumei-bypass 0.1.3
File Size Uploaded Provenance
wulu_shumei_bypass-0.1.3.tar.gz 48.4 kB Without provenance Details

Built distribution (wheel)

Table of built distributions (wheels) for wulu-shumei-bypass 0.1.3
File Interpreter ABI Platform
wulu_shumei_bypass-0.1.3-py3-none-any.whl Python 3 none any Details

Total release size: 62.5 kB

Release files / wulu_shumei_bypass-0.1.3.tar.gz

Download URL wulu_shumei_bypass-0.1.3.tar.gz
Size 48.4 kB
Tags Source
SHA-256 checksum
How to use checksums
ae90aadc44919d68dd1b1b46f944434fea15a1a6d0f728e118c0c520c3d7292c
BLAKE2b-256 checksum
How to use checksums
961399a16dae1406c5ea8afbc2accf08d4fe54f7577a39d514720aacf9e0046d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via uv/0.13.5 {"installer":{"name":"uv","version":"0.13.5","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Release files / wulu_shumei_bypass-0.1.3-py3-none-any.whl

Download URL wulu_shumei_bypass-0.1.3-py3-none-any.whl
Size 14.1 kB
Tags Python 3
SHA-256 checksum
How to use checksums
7b4e58913aaeab2cda680e74e18065e48885862d9b583193efe8b7498cb2adaf
BLAKE2b-256 checksum
How to use checksums
ff0364b8dbbfa9c3441f0878500ee878fdaf01cbd99461e7759e06f86e94c686
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via uv/0.13.5 {"installer":{"name":"uv","version":"0.13.5","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Security for wulu-shumei-bypass 0.1.3

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page