From 92bc4b3cba1beb7aa443c4dcbb1e741ece3a5deb Mon Sep 17 00:00:00 2001 From: Igor Soarez Date: Mon, 3 Aug 2026 22:17:46 +0100 Subject: Record measured rate-limit behaviour per engine MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Concrete numbers from development rather than a vague warning: Google tolerates a lot then blocks for ~90 minutes, Brave challenges after one or two queries and clears in ~15-20, and DuckDuckGo and Bing never challenged at all. That last fact is the useful one — it says which engine to reach for when several searches are needed in a row. --- README.md | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) (limited to 'README.md') diff --git a/README.md b/README.md index 684bd96..6dac8a7 100644 --- a/README.md +++ b/README.md @@ -121,10 +121,14 @@ The browser is shared and belongs to a person. Worth being aware of: in the search engine's account history if that profile is signed in. - Tabs open and close on someone's screen. `background: true` keeps them from stealing focus, but they are visible. -- Searching hard trips rate limiters for the whole host — a handful of queries in - a few seconds is enough to earn a challenge that affects the human using that - browser too. Measured on Google: roughly 30 queries in a few minutes cost about - 90 minutes of blocking. Brave challenges considerably sooner than that. +- Searching hard trips rate limiters for the whole host, and the challenge + affects the human using that browser too. Measured during development: + **Google** tolerated a lot, then roughly 30 queries in a few minutes cost about + 90 minutes of blocking. **Brave** is far stricter — it challenges after as few + as one or two queries and clears again in roughly 15–20 minutes. **DuckDuckGo** + and **Bing** never challenged once across the whole of development, which is + why DuckDuckGo is the one to reach for when you need to run several searches + in a row. - **A decaying block does not look like a block.** Once the challenge page stops being served, engines return an *empty results page* for a while instead — indistinguishable from a query with no hits. It surfaces as `NoResultsError`, -- cgit v1.3.1