No description
Find a file
Xe Iaso 22c47f40d1
feat(expressions): add randInt function to allow making rules nondeterministic (#578)
This seems counter-intuitive at first glance, but let me cook.

One of the problems with Anubis is that the rule matching is super
deterministic. This means that attackers can figure out what patterns
they are hitting and change things to bypass them.

The randInt function lets you have rulesets behave nondeterministically.
This is a very easy way to hang yourself, but can be great to
psychologically mess with scraper operators. Consider this rule:

```yaml
- name: deny-lightpanda-sometimes
  action: DENY
  expression:
    all:
      - userAgent.matches("LightPanda")
      - randInt(16) >= 4
```

It would match about 75% of the time.

Signed-off-by: Xe Iaso <me@xeiaso.net>
2025-05-28 16:36:27 -04:00
.github add Weblate to known-instances.md (#571) 2025-05-28 00:03:04 +00:00
.vscode feat(checker): add CEL for matching complicated expressions (#421) 2025-05-03 14:26:54 -04:00
cmd feat(cli): Add --version flag (#572) 2025-05-28 04:16:44 +00:00
data feat(expressions): add randInt function to allow making rules nondeterministic (#578) 2025-05-28 16:36:27 -04:00
decaymap Add periodic cleanup job for DecayMap (#8) (#158) 2025-03-29 23:24:06 -04:00
docs feat(expressions): add randInt function to allow making rules nondeterministic (#578) 2025-05-28 16:36:27 -04:00
internal fix(internal): register mime type for .mjs files (#577) 2025-05-28 13:52:48 +00:00
lib feat(expressions): add randInt function to allow making rules nondeterministic (#578) 2025-05-28 16:36:27 -04:00
run Create Anubis OpenRC init.d script (#561) 2025-05-27 01:58:59 +00:00
test docs: add caddy docs (#423) 2025-05-02 19:15:05 +00:00
var initial import from /x/ monorepo 2025-03-17 19:33:07 -04:00
web Bump AI-robots.txt rules to version 1.31 (#538) 2025-05-23 16:15:12 +00:00
xess build(deps): bump the gomod group across 1 directory with 4 updates (#457) 2025-05-07 17:48:10 -04:00
.air.toml feat: Add Open Graph tag support (#195) 2025-04-06 20:02:12 -04:00
.gitattributes Debug tool for benchmarking proof-of-work algorithms (#155) 2025-03-29 23:38:12 -04:00
.gitignore docs: fix edit me links and configuration subcategory (#238) 2025-04-07 17:28:29 -04:00
.ko.yaml Try using ko to build images 2025-03-19 09:10:29 -04:00
anubis.go feat(lib): ensure that clients store cookies (#501) 2025-05-16 13:03:40 -04:00
Brewfile all: do not commit generated JS/CSS to source control (#148) 2025-03-28 14:55:25 -04:00
go.mod build(deps): bump k8s.io/apimachinery in the gomod group (#524) 2025-05-28 09:41:25 -04:00
go.sum build(deps): bump k8s.io/apimachinery in the gomod group (#524) 2025-05-28 09:41:25 -04:00
LICENSE initial import from /x/ monorepo 2025-03-17 19:33:07 -04:00
Makefile ci: add govulncheck (#456) 2025-05-06 14:07:55 +00:00
package-lock.json v1.19.0-pre1 2025-05-25 14:10:22 -04:00
package.json v1.19.0-pre1 2025-05-25 14:10:22 -04:00
README.md chore(sponsors): add weblate 2025-05-13 10:02:42 -04:00
VERSION v1.19.0-pre1 2025-05-25 14:10:22 -04:00
yeetfile.js Spelling (#445) 2025-05-05 10:52:02 -04:00

Anubis

A smiling chibi dark-skinned anthro jackal with brown hair and tall ears looking victorious with a thumbs-up

enbyware GitHub Issues or Pull Requests by label GitHub go.mod Go version language count repo size

Sponsors

Anubis is brought to you by sponsors and donors like:

Distrust Terminal Trove canine.tools Weblate

Overview

Anubis weighs the soul of your connection using a proof-of-work challenge in order to protect upstream resources from scraper bots.

This program is designed to help protect the small internet from the endless storm of requests that flood in from AI companies. Anubis is as lightweight as possible to ensure that everyone can afford to protect the communities closest to them.

Anubis is a bit of a nuclear response. This will result in your website being blocked from smaller scrapers and may inhibit "good bots" like the Internet Archive. You can configure bot policy definitions to explicitly allowlist them and we are working on a curated set of "known good" bots to allow for a compromise between discoverability and uptime.

In most cases, you should not need this and can probably get by using Cloudflare to protect a given origin. However, for circumstances where you can't or won't use Cloudflare, Anubis is there for you.

If you want to try this out, connect to anubis.techaro.lol.

Support

If you run into any issues running Anubis, please open an issue. Please include all the information I would need to diagnose your issue.

For live chat, please join the Patreon and ask in the Patron discord in the channel #anubis.

Star History

Star History Chart

Packaging Status

Packaging status

Contributors

Made with contrib.rocks.