diff options
| author | Igor Soarez <igor@soarez.org> | 2026-08-03 22:17:46 +0100 |
|---|---|---|
| committer | Igor Soarez <igor@soarez.org> | 2026-08-03 22:17:46 +0100 |
| commit | 92bc4b3cba1beb7aa443c4dcbb1e741ece3a5deb (patch) | |
| tree | 79f83d1c493c31d655ed1a082f15eed5b3951bab | |
| parent | 7a8f261ec50b9c15bc37ba8ae1f0022c392111d3 (diff) | |
Record measured rate-limit behaviour per engine
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.
| -rw-r--r-- | README.md | 12 | ||||
| -rw-r--r-- | src/engines.ts | 2 |
2 files changed, 9 insertions, 5 deletions
@@ -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`, diff --git a/src/engines.ts b/src/engines.ts index a71b9c8..ef8baef 100644 --- a/src/engines.ts +++ b/src/engines.ts @@ -172,7 +172,7 @@ const BING: EngineDefinition = { const BRAVE: EngineDefinition = { id: "brave", label: "Brave Search", - note: "independent index and unwrapped links; challenges quickly under repeated queries", + note: "independent index, direct links; challenges after 1-2 queries, clears in ~15-20 min", // Left empty deliberately — see the note in README. Brave's filter UI is // client-rendered and the `tf=` values could not be confirmed against a page // that was not simultaneously serving a bot check, so no window is claimed |
