Skip to main content

wulu-geetest-bypass-icon

Offline icon-type solver for Geetest v4 CAPTCHAs. Locates the background collage icon that matches each question and returns normalized click coordinates.

How it works

The icon CAPTCHA shows a collage background built from the same icons that appear as questions, which makes it a matching problem rather than a recognition one:

  1. The background collage goes through a YOLO model, which returns one box per direction icon (u, d, l, r, lu, ld, ru, rd).
  2. Each question thumbnail is MD5-hashed. That digest is the CDN filename of the asset, so it maps straight to a direction via DIR_HASHES — no image comparison involved.
  3. The question is answered with the center of the first still-unused detection facing that direction.

A question with an unknown MD5, or whose direction has no detection, raises UnsupportedQuestionError instead of guessing.

Model

The default model is a YOLOv8n ONNX export: input 640x640, output [1, 12, 8400], 8 direction classes. It is not trained here — both the ONNX file and the DIR_HASHES table come from gaogzhen/GeekedTest under the MIT License. See THIRD_PARTY_NOTICES.md.

Lookup order

  1. $WULU_ICON_MODEL, if it points at an existing file
  2. <CACHE_DIR>/<FILENAME>
  3. download model_url() into CACHE_DIR

The model also downloads on first use. To prefetch it, run the main package's CLI:

wulu-geetest download icon

If huggingface.co is unreachable, point HF_ENDPOINT at a mirror — the same variable huggingface_hub reads, so anything already configured for it works here too:

export HF_ENDPOINT=https://hf-mirror.com
wulu-geetest download icon

--endpoint is shorthand for setting that variable for the one command:

wulu-geetest download icon --endpoint https://hf-mirror.com

download_model(progress=None, *, force=False) is registered under the wulu_geetest_bypass.downloads entry point group, which is how that command finds it; call it directly to download without the framework.

Environment variables

Variable Meaning Default
WULU_ICON_MODEL Path to the ONNX model. Ignored if the file does not exist. unset → cache, then download
WULU_ICON_DIRECTIONS Comma-separated channel order. Used only when the model carries no names metadata. u,d,l,r,lu,ld,ru,rd
WULU_ICON_CONF_THRES Confidence threshold. 0.10
WULU_ICON_IOU_THRES NMS IoU threshold. 0.45
WULU_ICON_MAX_DET Max boxes kept per background. 4
HF_ENDPOINT Base URL the model is downloaded from; set it to a mirror when huggingface.co is unreachable. Read on each download, so it may be set after import. https://huggingface.co

Source constants (_config.py)

For downstream forks that ship their own model:

Constant Meaning Default
FILENAME Model filename; also its name inside the cache dir. icon_t1_261010
OWNER, HF_REPO HuggingFace repo holding the model. wulu007, gt
DEFAULT_ENDPOINT Host used when HF_ENDPOINT is unset. https://huggingface.co
model_url() {endpoint}/{OWNER}/{HF_REPO}/resolve/main/{FILENAME}. —
CACHE_DIR Where the model is cached. platformdirs.user_cache_dir('wulu-geetest-bypass', appauthor=False)
DIR_HASHES Question-icon MD5 → direction. 8 CDN assets

Class order

Read from the model's names metadata when present, so a retrained model with a different class order works with no configuration. Otherwise WULU_ICON_DIRECTIONS (or its default) is used.

Either way the result must be a permutation of the eight known directions, or the first detection raises UnsupportedModelError — as does a model exported with end2end=True (built-in NMS). The output channel count must equal 4 + len(classes); anything else raises too.

Usage

uv add wulu-geetest-bypass[icon]

The solver registers as an entry point of the wulu_geetest_bypass.solvers group under the icon captcha type, and is discovered automatically by wulu_geetest_bypass.

from wulu_geetest_bypass import Geetest

solver = Geetest(captcha_id='your_captcha_id', risk_type='icon')
seccode = await solver.resolve()

Metadata

Release files for wulu-geetest-bypass-icon 0.1.0

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-geetest-bypass-icon 0.1.0
File Size Uploaded
wulu_geetest_bypass_icon-0.1.0.tar.gz 8.2 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for wulu-geetest-bypass-icon 0.1.0
File Interpreter ABI Platform
wulu_geetest_bypass_icon-0.1.0-py3-none-any.whl Python 3 none any Details

Total release size: 18.2 kB

Release files / wulu_geetest_bypass_icon-0.1.0.tar.gz

Download URL wulu_geetest_bypass_icon-0.1.0.tar.gz
Size 8.2 kB
Tags Source
SHA-256 checksum
How to use checksums
8298b01520cc4247c9a3016290c2e5c540b133ef955711ba33e9b2709f03f9e6
BLAKE2b-256 checksum
How to use checksums
060f5d933660b0aee95bf172f6fbaa88ba1fe15d4aaa2cf7e63501c0dc88427d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via uv/0.13.0 {"installer":{"name":"uv","version":"0.13.0","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_geetest_bypass_icon-0.1.0-py3-none-any.whl

Download URL wulu_geetest_bypass_icon-0.1.0-py3-none-any.whl
Size 10.0 kB
Tags Python 3
SHA-256 checksum
How to use checksums
407e0900ddb0f20c7decdf363574ea9ab0318e8e6f1549ed703491a694c00c52
BLAKE2b-256 checksum
How to use checksums
3978a68ab73df78315d5013692c6b6dcb4fe25cc59dc1bf4fbaa2595ebca843d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via uv/0.13.0 {"installer":{"name":"uv","version":"0.13.0","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 history Release notifications | RSS feed

This release

0.1.0 This release

2 release files

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