github benbusby/whoogle-search v1.0.0-beta
Beta Release for Public Testing

pre-release11 hours ago

Hello All!

I know there are many great Ideas and (unfortunately) some bugs that have been lying dormant for a little bit now.
While we give Ben a much needed break, I've done some refactoring, updating, bug squashing, and new feature implementation.

Some of the most notable changes are:

  • Migration from Python Requests to httpx. This comes with significant speed improvements and other features useful for the long term stability of the project
  • Added support for the long requested parsable JSON results
  • Fixed (hopefully) some bugs with alt links
  • Refactored, updated, and fixed a number of outstanding security issues

Since I'm only one person, I'm only able to test what I can, so looking for feedback from community tests to make sure all these changes didn't actually break something in the process that I may have forgotten to test. Please test and provide your feedback!

Full Release notes below:

Whoogle Search — Beta Release (since v0.9.4)

  • Version base: v0.9.4 → beta (be83605)
  • Changes: 30 files, +1074/−220
  • Full Changelog: v0.9.4...beta

Highlights

  • HTTPX migration with optional HTTP/2 (toggle via WHOOGLE_HTTP2)
  • JSON search output: ?format=json or Accept: application/json
  • Optional static bundling: WHOOGLE_BUNDLE_STATIC=1 serves bundle.css/bundle.js
  • Tor/proxy refactor and availability detection
  • Global autocomplete toggle via WHOOGLE_AUTOCOMPLETE

What’s Changed

  • be83605 Update deps; context-managed file I/O; BeautifulSoup string usage (Don-Swanson)
  • ffdeeb5 Autocomplete env toggle; HTTP client reconnection; link extraction fix (Don-Swanson)
  • 99c7c7b Config context fixes; tests updated; search fallback handling (Don-Swanson)
  • 7f80eb1 feat(beta): httpx, Tor/proxy refactor, JSON results, optional bundling, HTTP/2 toggle, cleanup (Don-Swanson)
  • 418d9df Merge dependabot: jinja2-3.1.6
  • 3733d87 Merge dependabot: cryptography-45.0.7

New Environment Variables

Name Default Description
WHOOGLE_HTTP2 1 Enable HTTP/2 for upstream httpx requests. Set 0 for HTTP/1.1.
WHOOGLE_BUNDLE_STATIC 0 Serve bundled CSS/JS (bundle.css, bundle.js) with cache-busting.
WHOOGLE_AUTOCOMPLETE 1 Toggle autocomplete/search suggestions globally.

Potentially Breaking Changes

  • Upstream client switched to httpx; behavior differences from requests possible. If issues arise, set WHOOGLE_HTTP2=0.

Endpoint and Behavior Notes

  • JSON results via /{search}?q=...&format=json or header Accept: application/json.
    • Returns 503 JSON when CAPTCHA-like content is detected.
    • Returns 303 for invalid queries, honoring JSON Accept.
  • Bundled css assets are auto-included by templates when WHOOGLE_BUNDLE_STATIC=1.

Dependency Changes

  • Added: httpx[http2,socks]==0.28.1, httpcore>=1.0.9, h11>=0.16.0, cachetools==6.2.0
  • Removed: requests, urllib3, PySocks (replaced by httpx stack)
  • Upgraded (highlights): cryptography (→ 46.0.1 non-armv7l), Jinja2 (→ 3.1.6), MarkupSafe (→ 3.0.2), beautifulsoup4 (→ 4.13.5), cssutils (→ 2.11.1), idna (→ 3.10), pluggy (→ 1.6.0), pycodestyle (→ 2.14.0), pyOpenSSL (→ 25.3.0 non-armv7l), soupsieve (→ 2.8), validators (→ 0.35.0), waitress (→ 3.0.2), wcwidth (→ 0.2.14), python-dotenv (→ 1.1.1), certifi (→ 2025.8.3), cffi (→ 2.0.0), click (→ 8.3.0), more-itertools (→ 10.8.0), packaging (→ 25.0), pyparsing (→ 3.2.5)
  • Compatibility: cryptography==3.3.2 retained for armv7l (for now)

Upgrade Tips

  • Force HTTP/1.1 if needed: set WHOOGLE_HTTP2=0
  • Enable css bundling: set WHOOGLE_BUNDLE_STATIC=1 and restart
  • Disable suggestions: set WHOOGLE_AUTOCOMPLETE=0

Don't miss a new whoogle-search release

NewReleases is sending notifications on new releases.