Commit graph

704 commits

Author SHA1 Message Date
ai.robots.txt
c7c888c60e Merge pull request #263 from acook/patch-1 v1.50
add Lightpanda user agent
2026-08-17 02:39:02 +00:00
Glyn Normington
a2858c0255
Merge pull request #263 from acook/patch-1
add Lightpanda user agent
2026-08-17 03:38:51 +01:00
Glyn Normington
dd30b585f4
Merge pull request #262 from farrelldan/add-bot-ledger-related
Add Bot Ledger to Related resources
2026-08-16 04:02:44 +01:00
Anthony M. Cook
a5d17db8b8
add Lightpanda user agent
The Lightpanda browser is an AI-centric headless browser used for scraping and automation.

It is currently being used by a botnet of millions of IP addresses, including over 20k SpaceX IPs, to scrape sites such as the official Haskell Gitlab:
https://github.com/lightpanda-io/browser/issues/3156
2026-08-07 11:22:16 -05:00
Dan
abe839e4e0 docs(README): add Bot Ledger to Related resources
Free, static directory of verified AI crawlers with a one-click robots.txt/llms.txt generator, thematically aligned with this project's goal of helping site owners manage AI crawler access.
2026-08-07 08:12:59 -06:00
Glyn Normington
2f5d7ccf39
Merge pull request #260 from Ilyan321/fix/issue-257-regex-anchoring
fix(code): unanchor PCRE patterns to allow matching real user-agent headers (#257)
2026-08-05 18:18:57 +01:00
Ilyan321
4c9331ebbb Merge branch 'main' of https://github.com/ai-robots-txt/ai.robots.txt into fix/issue-257-regex-anchoring 2026-08-05 21:56:22 +05:00
ai.robots.txt
6f3054bcf0 Merge pull request #261 from fork-graveyard/main
fix lighttpd config for 1.x
2026-08-05 16:07:54 +00:00
Glyn Normington
dbd9aa78d4
Merge pull request #261 from fork-graveyard/main
fix lighttpd config for 1.x
2026-08-05 17:07:44 +01:00
girst
1177eba00a fix lighttpd config for 1.x
single quotes only allowed in 2.x. follow-up to a94b2c9.
2026-08-05 14:48:34 +02:00
Ilyan321
5658a6d726 test(code): expand false positive integration test coverage 2026-08-05 17:06:50 +05:00
Ilyan321
51a49494aa fix(code): use word boundaries \b in list_to_pcre to prevent false positive matches like NotCursor 2026-08-05 17:02:56 +05:00
Ilyan321
26510d4cd5 Merge branch 'main' of https://github.com/ai-robots-txt/ai.robots.txt into fix/issue-257-regex-anchoring 2026-08-05 16:58:22 +05:00
Ilyan321
7b1026e69c test(code): add integration test verifying regex does not match non-AI user agents 2026-08-05 16:50:35 +05:00
ai.robots.txt
5994ca0b33 Merge pull request #259 from fork-graveyard/main
do not needlessly escape hypens, make nginx matches case-sensitive, further minify regexps
2026-08-05 11:33:22 +00:00
Glyn Normington
d93db7b81d
Merge pull request #259 from fork-graveyard/main
do not needlessly escape hypens, make nginx matches case-sensitive, further minify regexps
2026-08-05 12:33:05 +01:00
Ilyan321
b06780542b fix(code): unanchor PCRE patterns to allow matching real user-agent headers (#257) 2026-08-04 23:14:02 +05:00
girst
0beb4a2666 update test files to match new output 2026-08-04 19:36:25 +02:00
girst
a94b2c93e5 further minify regexps
- nginx and lighttpd allow single quoted strings, so use python's
  built-in methods to escape quotes
- only apache requires parentheses on the outside (and only for obscure
  reasons)
- caddy expects double quoted strings. at least escape inner quotes
  directly (re.escape does not do this since python 3.7), should any
  appear
2026-08-04 14:48:03 +02:00
girst
3bd200ba32 make nginx matches case-sensitive
fixes #225.
2026-08-04 14:18:17 +02:00
girst
c4b366740e do not needlessly escape hypens
partially fixes #225.
2026-08-04 14:13:52 +02:00
Glyn Normington
27389c0b3d
Merge pull request #256 from guest20/patch-1
robots.py: duplicate parser = argparse.ArgumentParser(...)
2026-08-04 12:05:31 +01:00
Glyn Normington
940bf7f7e4
Merge pull request #255 from INXPRNCD/data/fill-unclear-6-entries
Fill "Unclear at this time." from primary operator docs for 6 entries
2026-08-04 11:59:32 +01:00
Glyn Normington
1e031f41d8
Merge pull request #254 from INXPRNCD/fix/ci-commit-message-injection
Pass commit messages to bash via env, not template interpolation
2026-08-04 11:57:47 +01:00
guest20
265ea03066
robots.py: duplciate parser = argparse.ArgumentParser(...)
Two is just greedy
2026-08-04 10:24:30 +02:00
Özden und Julia
2eb9315743 Fill "Unclear at this time." from primary operator docs for 6 entries
Re-submission of #248, which was merged then reverted in 80c19fc. The revert was
caused by main.yml's commit-message handling, not by this data — that is fixed
separately in #254.

Six entries move from "Unclear at this time." to the operator's own documented
value, each citing the primary source inline:

  Applebot              Yes   support.apple.com/en-us/119829#retrieval
  Meta-ExternalAgent    Yes   developers.facebook.com/docs/sharing/webmasters/web-crawlers/
  Meta-ExternalFetcher  No    (same Meta page — user-initiated fetch, documented
  meta-externalfetcher  No     as not checking robots.txt)
  DuckAssistBot         Yes   duckduckgo.com/duckduckgo-help-pages/results/duckassistbot/
  Google-Agent          Yes   developers.google.com/search/docs/crawling-indexing/google-common-crawlers#google-agent

table-of-bot-metrics.md is regenerated and included, so `robots.py --convert` has
nothing left to write and the workflow's commit step is skipped entirely.

Verified: code/tests.py 13/13 · robots.py --convert exits 0 and is idempotent ·
robots.txt, .htaccess, the nginx/lighttpd/haproxy configs and the Caddyfile are
byte-identical · the JSON diff touches only the six `respect` fields, nothing else.
2026-08-04 09:11:42 +02:00
Özden und Julia
4021a10239 Pass commit messages to bash via env, not template interpolation
`git commit -m "${{ github.event.head_commit.message }}"` splices arbitrary text
straight into a double-quoted bash string. A message containing a double quote
closes the string early and the remainder is re-parsed as shell words.

This is what broke main after #248 merged. That PR's title contained
"Unclear at this time." (with quotes), so the merge commit message did too, and
the line bash actually ran was:

    git commit -m "Fill "Unclear at this time." from primary operator docs ..."

which git received as:

    -m "Fill Unclear"  at  this  "time. from primary operator docs ..."

Hence `error: pathspec 'at' did not match any file(s) known to git`, a failed
run, and the revert in 80c19fc. The data in that PR was fine — robots.py
--convert exits 0 against it and code/tests.py passes 13/13.

The same interpolation is also a script-injection vector, which is the more
important reason to change it: a PR title is attacker-controlled, and

    chore: tidy"; <any command>; echo "

executes that command on the runner with the workflow's token. `inputs.message`
has the same shape in the `if [ -n ... ]` test and its own `git commit -m`, so
all three are moved.

Passing through `env:` and quoting the shell variable is GitHub's documented
recommendation for untrusted values. The variable is expanded by bash after
parsing, so quotes, newlines and `$(...)` stay literal text.

Verified: code/tests.py 13/13 · python code/robots.py --convert exits 0 and
leaves robots.txt, table-of-bot-metrics.md and every server-config output
byte-identical · reproduced both the parse failure and the injection locally
against the old form, and confirmed the env form commits the same message
verbatim, quotes included.
2026-08-04 09:09:10 +02:00
ai.robots.txt
24c010e668 Merge pull request #251 from glyn/delete-IbouBot v1.49
Delete IbouBot
2026-07-31 15:01:58 +00:00
Glyn Normington
1be8fa6220
Merge pull request #251 from glyn/delete-IbouBot
Delete IbouBot
2026-07-31 16:01:41 +01:00
Glyn Normington
69a87566de Delete IbouBot
Fixes https://github.com/ai-robots-txt/ai.robots.txt/issues/250
2026-07-31 13:04:31 +01:00
Glyn Normington
042d00a5ab
Merge pull request #249 from ai-robots-txt/test-ci
Empty commit to test CI
2026-07-31 03:35:15 +01:00
Glyn Normington
c96a9916cc Empty commit to test CI 2026-07-31 03:34:01 +01:00
Glyn Normington
80c19fcad5 Revert "Fill operator and respect from primary docs for 6 entries"
This reverts commit e62a95bb8a.

Reverted because of CI failure noted in PR.
2026-07-31 03:30:04 +01:00
Glyn Normington
bbe0579a23
Merge pull request #248 from INXPRNCD/fill-unclear-operator-and-respect-from-primary-docs
Fill "Unclear at this time." from primary operator docs for 6 entries
2026-07-31 03:20:58 +01:00
Known Agents
2155906baa Update from knownagents.com 2026-07-31 01:57:31 +00:00
Erdinc Özden
e62a95bb8a Fill operator and respect from primary docs for 6 entries
Applebot, Meta-ExternalAgent, Meta-ExternalFetcher, meta-externalfetcher,
DuckAssistBot and Google-Agent carried 'Unclear at this time.' in both
operator and respect, but each operator documents the behaviour on its
own site. Values are linked to the primary source inline, matching the
style already used by Applebot-Extended and meta-externalagent.

robots.txt output is unchanged — no keys added or renamed.
2026-07-30 22:05:49 +02:00
Glyn Normington
3db35be22d
Merge pull request #241 from iamdhrv/fix/exact-spider-user-agent v1.48
Anchor generic Spider user-agent match
2026-07-30 12:15:55 +01:00
Dhruv Maniya
49669178ef fix: configure exact user-agent matching
Signed-off-by: Dhruv Maniya <dhruvmaniya1998@gmail.com>
2026-07-29 21:47:42 +05:30
Dhruv Maniya
af31418609 Anchor the generic Spider user agent
Signed-off-by: Dhruv Maniya <dhruvmaniya1998@gmail.com>
2026-07-15 13:04:57 +05:30
Known Agents
a0fed45f0e Update from knownagents.com 2026-07-10 02:03:20 +00:00
ai.robots.txt
2a83168bbb Merge pull request #240 from bobmatyas/add/tabstack
Add: Mozilla-Tabstack
2026-07-09 15:01:12 +00:00
Glyn Normington
51f7fd5e3a
Merge pull request #240 from bobmatyas/add/tabstack
Add: Mozilla-Tabstack
2026-07-09 16:00:59 +01:00
Known Agents
a71b27a232 Update from knownagents.com 2026-07-09 02:04:28 +00:00
bob
c793fa0a8c Add: Mozilla-Tabstack. Closes #226 2026-07-08 21:16:52 -04:00
Glyn Normington
f030cbe956
Merge pull request #238 from ghking/rename-dark-visitors-to-known-agents v1.47
Renaming Dark Visitors to Known Agents
2026-07-09 01:41:52 +01:00
Glyn Normington
12a15a3a28
Update code/robots.py
For consistency.
2026-07-09 01:40:00 +01:00
Glyn Normington
5065ca6055
Update .github/workflows/ai_robots_update.yml
For consistency.
2026-07-09 01:39:50 +01:00
Glyn Normington
0b021b9e40
Update code/robots.py
For consistency.
2026-07-09 01:39:39 +01:00
Gavin King
dad7db5168 Fixed broken URLs 2026-07-08 20:38:48 -04:00
Gavin King
e1bf273b16 Update robots.py 2026-07-08 20:26:48 -04:00