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

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

Built distribution (wheel)

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

Total release size: 62.5 kB

Release files / wulu_shumei_bypass-0.1.1.tar.gz

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

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

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