Releases: benbusby/whoogle-search
v1.1.2 - Thanksgiving Release
Sorry for the multiple releases, something got bungled in the PR merge. I've fixed it but had to bump the version to re-release it everywhere.
Let’s start by being grateful for what we have and for everything Ben built. Whoogle became what it is because of a huge amount of work, care, and stubborn dedication on his part. We owe him more thanks than we can probably fit in a release note.
It’s a shame that Google seems to have abandoned the whole “Do No Evil” idea, but at least we still have a few paths that let us get most of what we need in a way that works for us. I’m also personally thankful for stumbling across a hidden stash of UA strings that opened up some new options. Digging through that pile led to a few experiments and, honestly, more hope than I expected. It might buy us some extra time while we keep collaborating with friends and rivals alike who are fighting the same fight. We’re still committed to simplicity and staying lightweight for Google’s sake. No Playwright. No Puppeteer. But we can definitely use the community’s brainpower to push toward something more durable.
In this release, we reverted the Mullvad Leta implementation. It served us well and we’re grateful for it, but it’s time to let it take its final voyage to Valhalla. In its place, we added a feature that can randomly generate UA strings based on patterns we found in the ones that still work. You can also bring your own rotating list or stick with a static UA if that’s your thing. There’s a config toggle that shows the active UA at the bottom of the results to help with debugging. On top of that, we added two small tools that let you generate offline UA lists and automatically test them. The second of which was instrumental in finding the working string patterns we’re using now.
We also found some additional UA strings and a couple other short term options, but for obvious reasons we’re not showing every card unless we must. It’d be great if Google left us alone this time, but I’m not holding my breath. If something breaks and I don’t catch it quickly enough, let me know. I’ll push another workaround for as long as we can keep this ship afloat.
If you have ideas for a real long term fix or want to help build one, drop into #1253. For example, what do you think about a bring-your-own Google Custom Search Engine key option? And if you’re a sympathetic Googler who wants to help or at least talk shop, the door is open.
To everyone else, thank you for your patience, your support, and your willingness to tinker with us. We’re doing our best to keep this project alive.
One last note. The only bug I’m aware of right now is that Image Search still throws the “Update your browser” message. I’ll be digging into that. Maps, Videos, and News are working again, so at least we’re in a better spot than we were yesterday.
Release v1.1.0: A Stopgap to a New Path Forward
Re-releasing v1.1.0-beta as a full release: A Stopgap to a New Path Forward
It was decided to re-release the beta as a full release as there appear to be a number of people who have some struggles with figuring out how to change their auto update processes from "latest" to a static version. Everything else remains the same.
The Road Here
First and foremost, Thank you for your continued support. Thanks to @benbusby for all the time and effort he spent building this, here's to hoping we can keep his dream alive.
Google's recent changes have made it increasingly difficult to provide the privacy-focused search experience that Whoogle was built for. JavaScript-free search results are no longer available, and user agent rotation has become ineffective. Google has even broken other various projects with these changes too. This marks the end of an era, but not the end of our mission.
Mullvad Leta Integration
In response to these challenges, we've integrated Mullvad Leta as the default search backend. While this wasn't the path we anticipated, Leta offers a privacy-respecting alternative that aligns with Whoogle's core values and can be used as a stopgap while we forge other ways forward. And since we are using it's Google Results filter, we are still getting the results we know and love (even if we have lost love and no longer recognize the company giving them to us)
What's New
- Mullvad Leta backend support (enabled by default) - @Don-Swanson
- Privacy-focused search powered by Google results without the tracking
- Can be disabled in settings to fall back to traditional Google search
- Seamless result formatting - Leta results are automatically converted to Whoogle's familiar interface
- Optimized layout - Refined UI for comfortable reading
- Environment variable:
WHOOGLE_CONFIG_USE_LETA(default:true)
Known Limitations with Leta
- Image, video, news, and map searches are not supported (regular web search only)
- Some advanced Google search operators may not work
For Users who want to keep trying with Google
You can disable Leta in the settings or set WHOOGLE_CONFIG_USE_LETA=0 to continue using Google directly, though results may never come back. Godspeed.
How to use it?
- For Docker users, this release should trigger a new build named 1.1.0 and latest (benbusby/whoogle-search:latest) that you can pull and use. (Give it about an hour from this release to become available)
- For all others, you should just be able to pull and build/use it as you normally would
We continue to believe in a web where privacy is the default, not a privilege. This release represents adaptation in the face of adversity—a reminder that the fight for digital privacy requires constant evolution.
What We Need From You
Test this release and let us know of any CRITICAL bugs. As this is intended as a stopgap only, please do not report minor bugs related to this release—Major/Critical bugs only that must be fixed to keep the stopgap alive.
If you have genuine ideas on ways forward (no generic AI suggestions or "here's what I found in a search"), please bring them to the discussion.
v1.1.0-beta - A Stopgap to a New Path Forward
Release v1.1.0-beta: A Stopgap to a New Path Forward
The Road Here
First and foremost, Thank you for your continued support. Thanks to @benbusby for all the time and effort he spent building this, here's to hoping we can keep his dream alive.
Google's recent changes have made it increasingly difficult to provide the privacy-focused search experience that Whoogle was built for. JavaScript-free search results are no longer available, and user agent rotation has become ineffective. Google has even broken other various projects with these changes too. This marks the end of an era, but not the end of our mission.
Mullvad Leta Integration
In response to these challenges, we've integrated Mullvad Leta as the default search backend. While this wasn't the path we anticipated, Leta offers a privacy-respecting alternative that aligns with Whoogle's core values and can be used as a stopgap while we forge other ways forward. And since we are using it's Google Results filter, we are still getting the results we know and love (even if we have lost love and no longer recognize the company giving them to us)
What's New
- Mullvad Leta backend support (enabled by default) - @Don-Swanson
- Privacy-focused search powered by Google results without the tracking
- Can be disabled in settings to fall back to traditional Google search
- Seamless result formatting - Leta results are automatically converted to Whoogle's familiar interface
- Optimized layout - Refined UI for comfortable reading
- Environment variable:
WHOOGLE_CONFIG_USE_LETA(default:true)
Known Limitations with Leta
- Image, video, news, and map searches are not supported (regular web search only)
- Some advanced Google search operators may not work
For Users who want to keep trying with Google
You can disable Leta in the settings or set WHOOGLE_CONFIG_USE_LETA=0 to continue using Google directly, though results may never come back. Godspeed.
How to use it?
- For Docker users, this release should trigger a new build named 1.1.0-beta (benbusby/whoogle-search:1.1.0-beta) that you can pull and use. (Give it about an hour from this release to become available)
- For all others, you should just be able to pull the
betabranch and build/use it as you normally would
We continue to believe in a web where privacy is the default, not a privilege. This release represents adaptation in the face of adversity—a reminder that the fight for digital privacy requires constant evolution.
What We Need From You
Test this release and let us know of any CRITICAL bugs. As this is intended as a stopgap only, please do not report minor bugs related to this release—Major/Critical bugs only that must be fixed to keep the stopgap alive.
If you have genuine ideas on ways forward (no generic AI suggestions or "here's what I found in a search"), please bring them to the discussion.
Beta Release for Public Testing
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=jsonorAccept: application/json - Optional static bundling:
WHOOGLE_BUNDLE_STATIC=1servesbundle.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
stringusage (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 fromrequestspossible. If issues arise, setWHOOGLE_HTTP2=0.
Endpoint and Behavior Notes
- JSON results via
/{search}?q=...&format=jsonor headerAccept: 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 byhttpxstack) - 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.2retained forarmv7l(for now)
Upgrade Tips
- Force HTTP/1.1 if needed: set
WHOOGLE_HTTP2=0 - Enable css bundling: set
WHOOGLE_BUNDLE_STATIC=1and restart - Disable suggestions: set
WHOOGLE_AUTOCOMPLETE=0
v0.9.4
What's Changed
- Remove dead instances by @AsmodeumX in #1223
- add a public instance for support by @TingyuShare in #1224
- Updated UI Config to respect User Agent in ENV file if exists by @Don-Swanson in #1240
- Turkish Language Translation Update by @tunazorlu in #1228
New Contributors
- @AsmodeumX made their first contribution in #1223
- @TingyuShare made their first contribution in #1224
- @tunazorlu made their first contribution in #1228
Full Changelog: v0.9.3...v0.9.4
v0.9.3
Changes
- Fix styling issues encountered when using the new Lynx User Agent (fb19bde)
Community Contributions
- Ensure helm chart can run on Kubernetes >=
v1.25and improve installation steps by @JoeyC-Dev in #1196 - Adding deploy option for RepoCloud.io to README.md by @cosark in #1197
- Bump jinja2 from 3.1.4 to 3.1.5 by @dependabot in #1209
New Contributors
- @JoeyC-Dev made their first contribution in #1196
- @cosark made their first contribution in #1197
Full Changelog: v0.9.2...v0.9.3