返回资讯中心
外部精选
软件工程
#开发者实时流

Whoogle Search has reached EOL – 24 Jul 2026

Whoogle no longer returns search results, and that isn't something this project can fix.

Hacker News 最新Baljhin2026/10/21 · 25 天前30 分钟阅读

以下正文同步自 Hacker News 最新,版权归原站所有,已转换为易读排版。

Whoogle no longer returns search results, and that isn't something this project can fix.

Since early 2025, Google has steadily shut the door on search queries made without JavaScript, banning working User-Agent strings as fast as they were found. Fetching results without JavaScript was the foundation Whoogle was built on. Google has now killed the last User-Agent string that still worked, and with it the only way Whoogle had to reach search results.

The Google Custom Search (BYOK) fallback described below is no longer a workable alternative either, so there's nothing left to fall back to. Google closed both doors; there's no third one to try.

Because of that, active work on this repository has come to an end:

The code stays up for reference, and it's still MIT licensed — fork it and take it wherever you like. Everything below this notice describes how Whoogle worked while Google still allowed it to, and is kept as a record of that. Please don't expect any of it to work today.

To everyone who used, deployed, translated, packaged, and contributed to Whoogle over the years: thank you. It was a good run, and it ended on Google's terms, not ours. Although not free, many of us have switched to Kagi as our new alternative.

(Historical description — see the notice above.) Get Google search results, but without any ads, JavaScript, AMP links, cookies, or IP address tracking. Easily deployable in one click as a Docker app, and customizable with a single config file. Quick and simple to implement as a primary search engine replacement on both desktop and mobile.

No ads or sponsored content

No JavaScript*

No cookies**

No tracking/linking of your personal IP address***

No AMP links

No URL tracking tags (i.e. utm=%s)

No referrer header

Tor and HTTP/SOCKS proxy support

Autocomplete/search suggestions

POST request search and suggestion queries (when possible)

View images at full res without site redirect (currently mobile only)

Light/Dark/System theme modes (with support for custom CSS theming)

Auto-generated Safari User Agents with random rotation

10 unique Safari-based UAs generated on startup from 115 language variants

Randomly rotated for each search request to avoid detection patterns

Cached across restarts with configurable refresh options

Fallback to safe default UA if generation fails

Optional display of current UA in search results footer

Easy to install/deploy

DDG-style bang (i.e. !<tag> <query>) searches

User-defined custom bangs

Optional location-based searching (i.e. results near <city>)

Optional NoJS mode to view search results in a separate window with JavaScript blocked

JSON output for results via content negotiation (see "JSON results (API)")

*No third party JavaScript. Whoogle can be used with JavaScript disabled, but if enabled, uses JavaScript for things like presenting search suggestions.

**No third party cookies. Whoogle uses server side cookies (sessions) to store non-sensitive configuration settings such as theme, language, etc. Just like with JavaScript, cookies can be disabled and not affect Whoogle's search functionality.

***If deployed to a remote server, or configured to send requests through a VPN, Tor, proxy, etc.

Supported Platforms

Official Docker images are built for:

Note: ARMv7 support (32-bit ARM, Raspberry Pi 2) was dropped in v1.2.0 due to incompatibility with modern security libraries on Alpine Linux. Users with ARMv7 devices can either:

There are a few different ways to begin using the app, depending on your preferences:

Create an account on render.com and import the Whoogle repo with the following settings:

You will need a Fly.io account to deploy Whoogle.

Deploy the app

flyctl auth login flyctl launch --image benbusby/whoogle-search:latest

The first deploy won't succeed because the default internal_port is wrong. To fix this, open the generated fly.toml file, set services.internal_port to 5000 and run flyctl launch again.

Your app is now available at https://<app-name>.fly.dev.

Use one of the following guides to install Whoogle on Koyeb:

pipx install https://github.com/benbusby/whoogle-search/archive/refs/heads/main.zip

pipx run --spec git+https://github.com/benbusby/whoogle-search.git whoogle-search

$ whoogle-search --help usage: whoogle-search [-h] [--port <port number>] [--host <ip address>] [--debug] [--https-only] [--userpass username:password] [--proxyauth username:password] [--proxytype <socks4|socks5|http>] [--proxyloc location:port]

Whoogle Search console runner

optional arguments: -h, --help Show this help message and exit --port <port number> Specifies a port to run on (default 5000) --host <ip address> Specifies the host address to use (default 127.0.0.1) --debug Activates debug mode for the server (default False) --https-only Enforces HTTPS redirects for all requests --userpass username:password Sets a username/password basic auth combo (default None) --proxyauth username:password Sets a username/password for a HTTP/SOCKS proxy (default None) --proxytype <socks4|socks5|http> Sets a proxy type for all connections (default None) --proxyloc location:port Sets a proxy location for all connections (default None)

See the available environment variables for additional configuration.

Note: Content-Security-Policy headers can be sent by Whoogle if you set WHOOGLE_CSP.

Python3

libcurl4-openssl-dev and libssl-dev

macOS: brew install openssl curl-openssl

Ubuntu: sudo apt-get install -y libcurl4-openssl-dev libssl-dev

Arch: pacman -S curl openssl

Install

Clone the repo and run the following commands to start the app in a local-only environment:

git clone https://github.com/benbusby/whoogle-search.git cd whoogle-search python3 -m venv venv source venv/bin/activate pip install -r requirements.txt ./run

See the available environment variables for additional configuration.

After building the virtual environment, you can add something like the following to /lib/systemd/system/whoogle.service to set up a Whoogle Search systemd service:

[Unit] Description=Whoogle

[Service]

Basic auth configuration, uncomment to enable

#Environment=WHOOGLE_USER=<username> #Environment=WHOOGLE_PASS=<password>

Proxy configuration, uncomment to enable

#Environment=WHOOGLE_PROXY_USER=<proxy username> #Environment=WHOOGLE_PROXY_PASS=<proxy password> #Environment=WHOOGLE_PROXY_TYPE=<proxy type (http|https|proxy4|proxy5) #Environment=WHOOGLE_PROXY_LOC=<proxy host/ip>

Site alternative configurations, uncomment to enable

Note: If not set, the feature will still be available

with default values.

#Environment=WHOOGLE_ALT_TW=farside.link/nitter #Environment=WHOOGLE_ALT_YT=farside.link/invidious #Environment=WHOOGLE_ALT_RD=farside.link/libreddit #Environment=WHOOGLE_ALT_MD=farside.link/scribe #Environment=WHOOGLE_ALT_TL=farside.link/lingva #Environment=WHOOGLE_ALT_IMG=farside.link/rimgo #Environment=WHOOGLE_ALT_WIKI=farside.link/wikiless #Environment=WHOOGLE_ALT_IMDB=farside.link/libremdb #Environment=WHOOGLE_ALT_QUORA=farside.link/quetre #Environment=WHOOGLE_ALT_SO=farside.link/anonymousoverflow

Load values from dotenv only

#Environment=WHOOGLE_DOTENV=1

specify dotenv location if not in default location

#Environment=WHOOGLE_DOTENV_PATH=<path/to>/whoogle.env Type=simple User=<username>

If installed as a package, add:

ExecStart=<python_install_dir>/python3 <whoogle_install_dir>/whoogle-search --host 127.0.0.1 --port 5000

For example:

ExecStart=/usr/bin/python3 /home/my_username/.local/bin/whoogle-search --host 127.0.0.1 --port 5000

Otherwise if running the app from source, add:

ExecStart=<whoogle_repo_dir>/run

For example:

ExecStart=/var/www/whoogle-search/run

WorkingDirectory=<whoogle_repo_dir> ExecReload=/bin/kill -HUP $MAINPID Restart=always RestartSec=3 SyslogIdentifier=whoogle

[Install] WantedBy=multi-user.target

Then,

sudo systemctl daemon-reload sudo systemctl enable whoogle sudo systemctl start whoogle

Tor Configuration optional

If routing your request through Tor you will need to make the following adjustments. Due to the nature of interacting with Google through Tor we will need to be able to send signals to Tor and therefore authenticate with it.

There are two authentication methods, password and cookie. You will need to make changes to your torrc:

Uncomment or add the following lines in your torrc:

Set the Tor environment variable to 1, WHOOGLE_CONFIG_TOR. Refer to the Environment Variables section for more details.

Uncomment or add the following lines in your torrc:

Now take the password from the first step and place it in the control.conf file within the whoogle working directory, ie. misc/tor/control.conf

Heavily restrict access to control.conf to only be readable by the user running whoogle:

Finally set the Tor environment variable and use password variable to 1, WHOOGLE_CONFIG_TOR and WHOOGLE_TOR_USE_PASS. Refer to the Environment Variables section for more details.

Ensure the Docker daemon is running, and is accessible by your user account

To add user permissions, you can execute sudo usermod -aG docker yourusername

Running docker ps should return something besides an error. If you encounter an error saying the daemon isn't running, try sudo systemctl start docker (Linux) or ensure the docker tool is running (Windows/macOS).

Clone and deploy the docker app using a method below:

Docker CLI

Through Docker Hub:

docker pull benbusby/whoogle-search docker run --publish 5000:5000 --detach --name whoogle-search benbusby/whoogle-search:latest

or with docker-compose:

git clone https://github.com/benbusby/whoogle-search.git cd whoogle-search docker-compose up

or by building yourself:

git clone https://github.com/benbusby/whoogle-search.git cd whoogle-search docker build --tag whoogle-search:1.0 . docker run --publish 5000:5000 --detach --name whoogle-search whoogle-search:1.0

Optionally, you can also enable some of the following environment variables to further customize your instance:

docker run --publish 5000:5000 --detach --name whoogle-search
-e WHOOGLE_USER=username
-e WHOOGLE_PASS=password
-e WHOOGLE_PROXY_USER=username
-e WHOOGLE_PROXY_PASS=password
-e WHOOGLE_PROXY_TYPE=socks5
-e WHOOGLE_PROXY_LOC=ip
whoogle-search:1.0

And kill with: docker rm --force whoogle-search

heroku login heroku container:login git clone https://github.com/benbusby/whoogle-search.git cd whoogle-search heroku create heroku container:push web heroku container:release web heroku open

This series of commands can take a while, but once you run it once, you shouldn't have to run it again. The final command, heroku open will launch a tab in your web browser, where you can test out Whoogle and even set it as your primary search engine. You may also edit environment variables from your app’s Settings tab in the Heroku Dashboard.

There is an AUR package available, as well as a pre-built and daily updated package available at Chaotic-AUR.

There are other methods for deploying docker containers that are well outlined in this article, but there are too many to describe set up for each here. Generally it should be about the same amount of effort as the Heroku deployment.

Depending on your preferences, you can also deploy the app yourself on your own infrastructure. This route would require a few extra steps:

There are a few optional environment variables available for customizing a Whoogle instance. These can be set manually, or copied into whoogle.env and enabled for your preferred deployment method:

These environment variables allow setting default config values, but can be overwritten manually by using the home page config menu. These allow a shortcut for destroying/rebuilding an instance to the same config state every time.

These environment variables configure the "Bring Your Own Key" feature for Google Custom Search API:

This path is no longer viable. CSE was the last fallback left after Google blocked no-JS results, and Google has

正文由 探How 从来源站点 RSS 同步,内容未经改写;遇到排版缺失或需要图片、视频时请以原文为准。

打开原文
去社区讨论 →