[package]
edition = "2021"
rust-version = "1.85"
name = "captchaforge"
version = "0.2.36"
authors = ["Santh Project <contact@santh.dev>"]
build = false
autolib = false
autobins = false
autoexamples = false
autotests = false
autobenches = false
description = "[DO NOT USE — UNDER ACTIVE DEVELOPMENT, NOT PRODUCTION-READY] Captcha solver scaffolding for chromiumoxide-driven browsers. The architecture is in place (vendor solvers, retry-loop iframe walking, VLM provider abstraction, real-WAF bench harness) but the live-vendor success rate is still 0% — Cloudflare Turnstile / hCaptcha / reCAPTCHA detect us at a TLS / CDP fingerprint layer that no flag-based stealth has cleared. Watch the repo; do not depend on this for any real workload."
readme = "README.md"
keywords = [
"captcha",
"headless-browser",
"chromiumoxide",
"turnstile",
"recaptcha",
]
categories = [
"web-programming",
"authentication",
]
license = "MIT OR Apache-2.0"
repository = "https://github.com/santhsecurity/captchaforge"
[package.metadata.binstall]
pkg-url = "{ repo }/releases/download/v{ version }/captchaforge-v{ version }-{ target }.{ archive-format }"
bin-dir = "captchaforge-v{ version }-{ target }/{ bin }{ binary-ext }"
[package.metadata.binstall.overrides.x86_64-pc-windows-msvc]
pkg-fmt = "zip"
[lib]
name = "captchaforge"
path = "src/lib.rs"
[[example]]
name = "architecture_proof"
path = "examples/architecture_proof.rs"
[[example]]
name = "solve_url_simple"
path = "examples/solve_url_simple.rs"
[[test]]
name = "captcha_type_display"
path = "tests/captcha_type_display.rs"
[[test]]
name = "chaos_behavior"
path = "tests/chaos_behavior.rs"
[[test]]
name = "chaos_frame"
path = "tests/chaos_frame.rs"
[[test]]
name = "chaos_resilience"
path = "tests/chaos_resilience.rs"
[[test]]
name = "chaos_solver"
path = "tests/chaos_solver.rs"
[[test]]
name = "community_rules"
path = "tests/community_rules.rs"
[[test]]
name = "community_rules_schema"
path = "tests/community_rules_schema.rs"
[[test]]
name = "cve_replay"
path = "tests/cve_replay.rs"
[[test]]
name = "fuzz_smoke"
path = "tests/fuzz_smoke.rs"
[[test]]
name = "helm_chart_structure"
path = "tests/helm_chart_structure.rs"
[[test]]
name = "integration"
path = "tests/integration.rs"
[[test]]
name = "integration_behavior"
path = "tests/integration_behavior.rs"
[[test]]
name = "integration_browser"
path = "tests/integration_browser.rs"
[[test]]
name = "integration_chain_wires"
path = "tests/integration_chain_wires.rs"
[[test]]
name = "integration_concurrent"
path = "tests/integration_concurrent.rs"
[[test]]
name = "integration_cross_module"
path = "tests/integration_cross_module.rs"
[[test]]
name = "integration_detect_all_types"
path = "tests/integration_detect_all_types.rs"
[[test]]
name = "integration_errors"
path = "tests/integration_errors.rs"
[[test]]
name = "integration_frame"
path = "tests/integration_frame.rs"
[[test]]
name = "integration_solvers"
path = "tests/integration_solvers.rs"
[[test]]
name = "local_scorecard"
path = "tests/local_scorecard.rs"
[[test]]
name = "mdbook_structure"
path = "tests/mdbook_structure.rs"
[[test]]
name = "pattern_store"
path = "tests/pattern_store.rs"
[[test]]
name = "prometheus_rules_structure"
path = "tests/prometheus_rules_structure.rs"
[[test]]
name = "property_audio_dsp"
path = "tests/property_audio_dsp.rs"
[[test]]
name = "property_behavior"
path = "tests/property_behavior.rs"
[[test]]
name = "property_captcha_type"
path = "tests/property_captcha_type.rs"
[[test]]
name = "property_detect"
path = "tests/property_detect.rs"
[[test]]
name = "property_frame"
path = "tests/property_frame.rs"
[[test]]
name = "property_frame_graph"
path = "tests/property_frame_graph.rs"
[[test]]
name = "property_json"
path = "tests/property_json.rs"
[[test]]
name = "property_mouse_sampler"
path = "tests/property_mouse_sampler.rs"
[[test]]
name = "property_pattern"
path = "tests/property_pattern.rs"
[[test]]
name = "property_solve_method"
path = "tests/property_solve_method.rs"
[[test]]
name = "property_solver"
path = "tests/property_solver.rs"
[[test]]
name = "property_token_shapes"
path = "tests/property_token_shapes.rs"
[[test]]
name = "property_url"
path = "tests/property_url.rs"
[[test]]
name = "rule_fixture_contract"
path = "tests/rule_fixture_contract.rs"
[[test]]
name = "serde_roundtrip"
path = "tests/serde_roundtrip.rs"
[[test]]
name = "snapshot_structures"
path = "tests/snapshot_structures.rs"
[[test]]
name = "snapshot_wire_shapes"
path = "tests/snapshot_wire_shapes.rs"
[[test]]
name = "training_pipeline"
path = "tests/training_pipeline.rs"
[[test]]
name = "training_pipeline_end_to_end"
path = "tests/training_pipeline_end_to_end.rs"
[[test]]
name = "wirings"
path = "tests/wirings.rs"
[[bench]]
name = "hot_path"
path = "benches/hot_path.rs"
harness = false
[dependencies.anyhow]
version = "1"
[dependencies.async-trait]
version = "0.1"
[dependencies.base64]
version = "0.22"
[dependencies.bytes]
version = "1"
[dependencies.chromiumoxide]
version = "0.9"
default-features = true
[dependencies.futures-util]
version = "0.3"
[dependencies.rand]
version = "0.8"
[dependencies.reqwest]
version = "0.12"
features = [
"json",
"multipart",
"rustls-tls",
]
default-features = false
[dependencies.serde]
version = "1"
features = ["derive"]
[dependencies.serde_json]
version = "1"
[dependencies.sha2]
version = "0.10"
[dependencies.tempfile]
version = "3"
[dependencies.thiserror]
version = "1"
[dependencies.tokio]
version = "1"
features = ["full"]
[dependencies.toml]
version = "0.8"
[dependencies.tracing]
version = "0.1"
[dependencies.url]
version = "2"
[dev-dependencies.criterion]
version = "0.5"
features = ["html_reports"]
[dev-dependencies.futures-util]
version = "0.3"
[dev-dependencies.insta]
version = "1.41"
features = [
"json",
"redactions",
]
[dev-dependencies.proptest]
version = "1.5"
[dev-dependencies.scraper]
version = "0.20"
[dev-dependencies.which]
version = "7"
[lints.rust]
unsafe_code = "forbid"