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.2

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.2
File Size Uploaded Provenance
wulu_shumei_bypass-0.1.2.tar.gz 48.4 kB Without provenance Details

Built distribution (wheel)

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

Total release size: 62.5 kB

Release files / wulu_shumei_bypass-0.1.2.tar.gz

Download URL wulu_shumei_bypass-0.1.2.tar.gz
Size 48.4 kB
Tags Source
SHA-256 checksum
How to use checksums
2ba22edf01bdca0aa9f043b18fd84ede064d055f2bf21badbfe5db7afd463c74
BLAKE2b-256 checksum
How to use checksums
d40e18ca5c3d8ce35956c0a614fa88b46084fabf137e2155abaeeaf14fdc37f2
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via uv/0.13.1 {"installer":{"name":"uv","version":"0.13.1","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.2-py3-none-any.whl

Download URL wulu_shumei_bypass-0.1.2-py3-none-any.whl
Size 14.1 kB
Tags Python 3
SHA-256 checksum
How to use checksums
89fc1acc6b227e8a407748b3e849a793b9c2850e6ff3a2ae3469b0d62b642b57
BLAKE2b-256 checksum
How to use checksums
fd6442db3bf649e391b42c33c80cc7ae999adc825944e55def2cf3a95bb9fe93
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via uv/0.13.1 {"installer":{"name":"uv","version":"0.13.1","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.2

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