No description
Find a file
Xe Iaso 122e4bc072
feat: first implementation of honeypot logic (#1342)
* feat: first implementation of honeypot logic

This is a bit of an experiment, stick with me.

The core idea here is that badly written crawlers are that: badly
written. They look for anything that contains `<a href="whatever" />`
tags and will blindly use those values to recurse. This takes advantage
of that by hiding a link in a `<script>` tag like this:

```html
<script type="ignore"><a href="/bots-only">Don't click</a></script>
```

Browsers will ignore it because they have no handler for the "ignore"
script type.

This current draft is very unoptimized (it takes like 7 seconds to
generate a page on my tower), however switching spintax libraries will
make this much faster.

The hope is to make this pluggable with WebAssembly such that we force
administrators to choose a storage method. First we crawl before we
walk.

The AI involvement in this commit is limited to the spintax in
affirmations.txt, spintext.txt, and titles.txt. This generates a bunch
of "pseudoprofound bullshit" like the following:

> This Restoration to Balance & Alignment
>
> There's a moment when creators are being called to realize that the work
> can't be reduced to results, but about energy. We don't innovate products
> by pushing harder, we do it by holding the vision. Because momentum can't
> be forced, it unfolds over time when culture are moving in the same
> direction. We're being invited into a paradigm shift in how we think
> about innovation. [...]

This is intended to "look" like normal article text. As this is a first
draft, this sucks and will be improved upon.

Assisted-by: GLM 4.6, ChatGPT, GPT-OSS 120b
Signed-off-by: Xe Iaso <me@xeiaso.net>

* fix(honeypot/naive): optimize hilariously

Signed-off-by: Xe Iaso <me@xeiaso.net>

* feat(honeypot/naive): attempt to automatically filter out based on crawling

Signed-off-by: Xe Iaso <me@xeiaso.net>

* fix(lib): use mazeGen instead of bsGen

Signed-off-by: Xe Iaso <me@xeiaso.net>

* docs: add honeypot docs

Signed-off-by: Xe Iaso <me@xeiaso.net>

* chore(test): go mod tidy

Signed-off-by: Xe Iaso <me@xeiaso.net>

* chore: fix spelling metadata

Signed-off-by: Xe Iaso <me@xeiaso.net>

* chore: spelling

Signed-off-by: Xe Iaso <me@xeiaso.net>

---------

Signed-off-by: Xe Iaso <me@xeiaso.net>
2025-12-16 04:14:29 -05:00
.devcontainer chore: remove copilot instructions (#1218) 2025-10-24 22:42:48 -04:00
.github feat: first implementation of honeypot logic (#1342) 2025-12-16 04:14:29 -05:00
.vscode docs: add blogpost for announcing v1.21.1 (#886) 2025-07-22 16:42:58 -04:00
cmd feat: writing logs to the filesystem with rotation support (#1299) 2025-11-21 11:46:00 -05:00
data Implement FCrDNS and other DNS features (#1308) 2025-11-26 22:24:45 -05:00
decaymap perf: apply fieldalignement (#1284) 2025-11-16 20:43:07 +00:00
docs feat: first implementation of honeypot logic (#1342) 2025-12-16 04:14:29 -05:00
internal feat: first implementation of honeypot logic (#1342) 2025-12-16 04:14:29 -05:00
lib feat: first implementation of honeypot logic (#1342) 2025-12-16 04:14:29 -05:00
run fix(run): mark openrc service script as executable (#1272) 2025-11-13 22:14:21 -05:00
test feat: first implementation of honeypot logic (#1342) 2025-12-16 04:14:29 -05:00
utils/cmd/backoff-retry test(ssh-ci): deflake SSH CI with exponential backoff (#859) 2025-07-18 17:46:49 +00:00
var initial import from /x/ monorepo 2025-03-17 19:33:07 -04:00
web feat: first implementation of honeypot logic (#1342) 2025-12-16 04:14:29 -05:00
xess fix(lib): serve CSS properly (#1158) 2025-09-27 22:16:23 -04:00
.air.toml feat: add a strip-base-prefix option (#655) 2025-06-12 17:46:08 -04:00
.gitattributes fix(gitattributes): update pattern for generated files (#652) 2025-06-11 21:00:37 +00:00
.gitignore feat: implement localization system (#716) 2025-06-27 17:49:15 +00:00
.ko.yaml Try using ko to build images 2025-03-19 09:10:29 -04:00
anubis.go fix: mend auth cookie name stutter (#1139) 2025-09-19 13:51:11 -04:00
Brewfile all: do not commit generated JS/CSS to source control (#148) 2025-03-28 14:55:25 -04:00
go.mod feat: first implementation of honeypot logic (#1342) 2025-12-16 04:14:29 -05:00
go.sum feat: first implementation of honeypot logic (#1342) 2025-12-16 04:14:29 -05:00
LICENSE initial import from /x/ monorepo 2025-03-17 19:33:07 -04:00
Makefile Makefile: Build robots2policy (#699) 2025-06-20 11:08:56 -04:00
package-lock.json build(deps): bump the npm group with 2 updates (#1339) 2025-12-14 21:29:42 -05:00
package.json build(deps): bump the npm group with 2 updates (#1339) 2025-12-14 21:29:42 -05:00
README.md link to docs site from readme (#1214) 2025-10-24 15:53:11 -04:00
SECURITY.md chore: copy SECURITY.md from TecharoHQ/.github 2025-08-20 12:42:02 -04:00
VERSION chore: v1.24.0-pre1 2025-12-02 07:58:29 -05:00
yeetfile.js docs: remove JSON examples from policy file docs (#945) 2025-08-03 18:09:26 +00: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 GitHub Sponsors

Sponsors

Anubis is brought to you by sponsors and donors like:

Diamond Tier

Raptor Computing Systems

Gold Tier

Distrust Terminal Trove canine.tools Weblate Uberspace Wildbase Cat eyes over the word Emma in a serif font Cat eyes over the word Emma in a serif font

Overview

Anubis is a Web AI Firewall Utility that weighs the soul of your connection using one or more challenges 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, visit the Anubis documentation site at 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.