Commit graph

721 commits

Author SHA1 Message Date
Glyn Normington
7cd4c92343
Merge pull request #272 from peppe1337/de-access-index v1.51
Add KI-Zugangsindex to Related resources
2026-08-26 23:51:59 +01:00
Ideenschmiede CEO
5e73986001 Apply maintainer's suggestion: trim entry to avoid stale figures 2026-08-26 16:02:12 +00:00
Ideenschmiede CEO
3b67c9c54e Add KI-Zugangsindex to Related resources 2026-08-25 12:15:02 +00:00
Known Agents
0037a9e2c5 Update from knownagents.com 2026-08-25 00:43:16 +00:00
ai.robots.txt
5692a202f0 Merge pull request #271 from lyrenth/correct-aiwebindex-metadata
Correct AIWebIndex metadata
2026-08-24 14:38:04 +00:00
Glyn Normington
d8e26238a7
Merge pull request #271 from lyrenth/correct-aiwebindex-metadata
Correct AIWebIndex metadata
2026-08-24 15:37:53 +01:00
Lyrenth
763f194129 Correct AIWebIndex metadata 2026-08-24 18:27:59 +04:00
ai.robots.txt
738c80df21 Merge pull request #269 from henriquejsza/add/reflectionbot
Add Reflectionbot to robots.json
2026-08-22 09:33:25 +00:00
Glyn Normington
0a871b9e62
Merge pull request #269 from henriquejsza/add/reflectionbot
Add Reflectionbot to robots.json
2026-08-22 10:33:13 +01:00
henriquejsza
cfd62dbc3b
Add Reflectionbot to robots.json 2026-08-22 03:58:31 -03:00
Glyn Normington
2d1d8972c9
Merge pull request #267 from jamiusaliu/test/slcc-real-world-false-positives
test: pin the SLCC1/SLCC2 false positive from #208, and document whole-word matching
2026-08-20 16:05:40 +01:00
Saliu Jamiu Olamilekan
66a8329a61 docs: trim the FAQ entry per review
Applies @glyn's suggestions: less emphatic phrasing, and the SLCC1 detail
replaced by a link to issue 208 rather than restated here.

Co-authored-by: glyn <glyn@users.noreply.github.com>
2026-08-18 21:13:10 -07:00
Saliu Jamiu Olamilekan
bcc4e408e2 test: pin the SLCC1/SLCC2 false positive from #208
The non-AI user agent list covers synthetic prefix/suffix variants
(NotCursor, CursorNot). It had no real-world agent that embeds a listed
name mid-string, which is what #208 actually reported: SLCC1 and SLCC2 in
older Internet Explorer and Trident agents span the listed agent LCC.

Verified the case is load-bearing: removing the word boundaries from
list_to_pcre fails this test with
  AssertionError: <re.Match object; span=(65, 68), match='LCC'> is not None

Also document in the FAQ that agent names are matched as whole words, for
anyone consuming robots.json directly and writing their own matcher.
2026-08-18 20:28:19 -07:00
Known Agents
6a20f8dbc4 Update from knownagents.com 2026-08-18 00:41:50 +00:00
ai.robots.txt
ff88a7fcb6 Merge pull request #266 from MLuc24/add-exasearchbot
Add ExaSearchBot to robots.json
2026-08-17 16:39:01 +00:00
Glyn Normington
8e366f564b
Merge pull request #266 from MLuc24/add-exasearchbot
Add ExaSearchBot to robots.json
2026-08-17 17:38:50 +01:00
MLuc24
024c9c2d6b Add ExaSearchBot to robots.json 2026-08-17 10:30:41 +07:00
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