Fighting the Bot Invasion�Keeping Your Koha Catalog Online�
Brian Pichman (ByWater Solutions)
Galen Charlton (Equinox Open Library Initiative)
5 September 2025
The Impact of AI on Libraries
The problem
The avalanche of web crawlers and bots has become the number one technical barrier to keeping online resource available.
Nobody is exempt.
Library catalogs (probably) get no special treatment.
What is a crawler?
Crawlers are not new
Crawlers need to be managed
Management in the good old days
# do some indexing, but don't index search URLs
User-agent: *�Disallow: /cgi-bin/koha/opac-search.pl
The good old days
Public domain images
Today
Gemerated by ChatGPT
"AI"/LLM bots/crawlers
Breakdown of the rough social order
Impact
Overall impact to GLAM web resources
Mitigations
Public domain image
Polite requests - alas!
"Please, sir, could you not crawl my cataloging a hundred times a minute?"
"Sure... I shall crawl it a thousand times a minute!"
robots.txt does not work
Withdrawing the resource
Blocking
More precisely, why block?
Network/IP blocking
IP block whack-a-mole
Block a country... | ... bot requests start coming from U.S. IP addresses |
Block a range or some ASNs... | ... bot requests start coming from thousands of U.S. residential IP addresses, one or two requests per address |
Block common cloud providers (AWS, Alibaba, Google Cloud) | ... oops, you may have just blocked a service you're integrating with |
Your adversaries...
Blocking at the web server/load balancer
Inspecting the request
User Agents
Example of blocking by user agent
# Block some bots
RewriteEngine on
RewriteCond %{HTTP_USER_AGENT} "ahrefsbot|amazonbot|anybot|bytespider|claudeb
ot|dataforseobot|dotbot|facebookexternalhit|friendlycrawler|gptbot|meta-external
agent|mj12bot|petalbot|seekportbot|semrush|serpstatbot|yandexbot" [NC]
RewriteCond %{REQUEST_URI} "!403\.pl" [NC]
RewriteRule "^.*" "-" [F]
Blocking inhuman behavior
Request blocking whack-a-mole
Block a particular user agent | ... bot will make them up |
Block an old, outdated, out-of-support browser's user agent | ... oops, that's what the public access computers you don't have the budget to upgrade are using |
Block an inhuman pattern | ... eventually, the bot operators will adapt |
Increasing the cost to crawlers
How Easy It Is To Scrape Websites For Data
You can point tools (including ChatGPT Like tools) to a website and harvest content and data from it…no permission needed
Tools and strategies
Cloudflare
Anubis
Facing the onslaught
System tuning
Lifecycle of a request
Load balancer/proxy
Apache worker
Plack worker
Tuning parameters to look at
Monitoring
Log analysis
Catch things like this …
Perplexity is using stealth, undeclared crawlers to evade website no-crawl directives
https://blog.cloudflare.com/perplexity-is-using-stealth-undeclared-crawlers-to-evade-website-no-crawl-directives/
Staff interface vs. OPAC performance
Tactical mitigations
Other ideas
To sum up
Questions?
(and comments!)
Reading list
Thanks!
Galen Charlton�Implementation and IT Manager�Equinox Open Library Initiative�https://equinoxOLI.org/ �gmc@equinoxOLI.org �
Brian Pichman�Head of Systems�ByWater Solutions