Skip to content

v0.2.1 — the help text was still lying

Choose a tag to compare

@jehrr jehrr released this 16 Sep 12:09
· 14 commits to main since this release
68c5e7a

--help was still lying. 0.2.0 implemented both of this site's
captchas and corrected the README — but not the engines' own text, which is
what a user reads first.

Two engines were still telling readers "NO challenge has ever been observed
on this site
… neither setting has anything to act on today, and neither
helps with a refusal". Playwright's said Cloudflare's challenge "is reported
as blocked instead, so no solve is attempted or billed for it". Both describe
a repo that stopped existing in 0.2.0.

Fixed

  • Every user-facing claim that a captcha cannot be solved is gone — from
    --help, from four docstrings and from page_flow.block_advice. What
    replaced them is what was measured: reCAPTCHA Enterprise ~55s /
    $0.00299
    , Turnstile 11s / $0.00145, and PerimeterX's widget-less stub
    as the one refusal nothing can buy.

  • --help named a host the parser refuses. .co.th was dropped in 0.1.0
    — it redirects to robinhood.co.th, a different company — and HOSTS has
    held ten entries ever since, while three engines and output_writer.py
    went on saying "eleven country sites" and playwright's --url help listed
    .co.th among the supported ones.

  • The README contradicted itself about Cloudflare. One section said a
    managed challenge is what a non-browser client gets and that a browser
    engine seeing one means "something has stripped the context" — three
    sections above the Turnstile section explaining that foodpanda.com serves
    one to a real browser, which is how this repo solved one. Same
    contradiction in TROUBLESHOOTING.md.

Added

  • A flag reference in the README. There was none: sixteen real flags were
    documented nowhere but --help. Four tables — core, proxies, 2Captcha, and
    the engine differences — with defaults and what each flag actually does.

  • Three checks, because prose does not fail a build on its own: a
    banned-phrase check over every shipped .py and .md; a check that the
    documented host count equals len(HOSTS) and that no user-facing text
    advertises a refused host; and a check that every flag an engine accepts
    appears in the README, that every in-page link resolves, and that each exit
    code is documented.

    Each was verified to fail when its fix is reverted. A check that cannot
    fail is not a check.

532 offline checks, up from 493.