XF Bot Guard

XF Bot Guard 1.4.1

No permission to download
as at present time, it would seem it would provide only marginal benefit at best.
Absolutely. Cloudflared Bot Directory (that only seems to list "official" bots) currently lists 612 bots in total, 559 of them "verified" and 53 "signed". I'd assume the directory and within it the latter category is what we are talking about.


Given that the "Known Bots" add on by @Sim currently is listing 1892 bots, is far from being comprehensive and leaves out the illegal nasty scraper-bots the CF directroy is rather a joke than anything else and the signed bots are not terribly relevant to check. But something like that will emerge and gain traction, possibly in not too distant future, as the problem has become so huge for both: Website owners as well as companies that use honest and legal bots.
 
For anyone who had the update polling issue with XenForo main, it seems like it may have been a temporary issue on XenForo side.

Yes there may have been a temporary issue with us receiving some API requests. and likely unrelated to the Bot Guard add-on you are running. Can you please go to Admin > Tools > Check for upgrades > Check now... and see if the issue is resolved?
 
Got one error in the server log:

Code:
XF\Db\Exception: XF Bot Guard failed open: MySQL query error [1366]: Incorrect string value: '\xC3t-1.h...' for column `database`.`xf_zee_botguard_event`.`route` at row 1
src/XF/Db/AbstractStatement.php:225
Generated by: Unknown account
Jun 11, 2026 at 11:51 AM

Stack trace

INSERT  INTO `xf_zee_botguard_event` (`event_date`, `user_id`, `content_type`, `content_id`, `route`, `controller`, `action`, `request_method`, `request_path`, `event_type`, `decision`, `risk_score`, `visitor_hash`, `ip_hash`, `session_hash`, `request_uri_hash`, `referrer_hash`) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
------------

#0 src/XF/Db/Mysqli/Statement.php(207): XF\Db\AbstractStatement->getException('MySQL query err...', 1366, '22007')
#1 src/XF/Db/Mysqli/Statement.php(83): XF\Db\Mysqli\Statement->getException('MySQL query err...', 1366, '22007')
#2 src/XF/Db/AbstractAdapter.php(96): XF\Db\Mysqli\Statement->execute()
#3 src/XF/Db/AbstractAdapter.php(219): XF\Db\AbstractAdapter->query('INSERT  INTO `x...', Array)
#4 src/addons/Zee/BotGuard/Service/EventAuditWriter.php(38): XF\Db\AbstractAdapter->insert('xf_zee_botguard...', Array)
#5 src/addons/Zee/BotGuard/Repository/EventLog.php(216): Zee\BotGuard\Service\EventAuditWriter->insertEventRow(Array)
#6 src/addons/Zee/BotGuard/Repository/EventLog.php(47): Zee\BotGuard\Repository\EventLog->insertEventRow(Array)
#7 src/addons/Zee/BotGuard/Service/ChallengeDecider.php(355): Zee\BotGuard\Repository\EventLog->log(Array, 'verified_crawle...', 'allow', 0, Array, Array)
#8 src/addons/Zee/BotGuard/Service/ChallengeDecider.php(126): Zee\BotGuard\Service\ChallengeDecider->verifiedCrawlerAllow(Array, 1.78117E+9, Array)
#9 src/addons/Zee/BotGuard/Service/ChallengeDecider.php(93): Zee\BotGuard\Service\ChallengeDecider->evaluateInteractiveDocumentRequest(Array, 1.78117E+9)
#10 src/addons/Zee/BotGuard/Listener.php(50): Zee\BotGuard\Service\ChallengeDecider->evaluate(Array)
#11 src/XF/Extension.php(86): Zee\BotGuard\Listener::dispatcherPreDispatch(Object(XF\Mvc\Dispatcher), Object(XF\Mvc\RouteMatch))
#12 src/XF/App.php(3366): XF\Extension->fire('dispatcher_pre_...', Array, NULL)
#13 src/XF/Mvc/Dispatcher.php(96): XF\App->fire('dispatcher_pre_...', Array)
#14 src/XF/Mvc/Dispatcher.php(57): XF\Mvc\Dispatcher->beforeDispatch(Object(XF\Mvc\RouteMatch))
#15 src/XF/App.php(2824): XF\Mvc\Dispatcher->run()
#16 src/XF.php(814): XF\App->run()
#17 index.php(23): XF::runApp('XF\\Pub\\App')
#18 {main}

Request state

array(4) {
  ["url"] => string(55) "/forum/list_messages/33302/Is-dit-humor-of-w%C3t-1.html"
  ["referrer"] => bool(false)
  ["_GET"] => array(1) {
    [""] => string(0) ""
  }
  ["_POST"] => array(0) {
  }
}

Looks like the add-on has some trouble with special characters in topic titles.
 
Got one error in the server log:

Code:
XF\Db\Exception: XF Bot Guard failed open: MySQL query error [1366]: Incorrect string value: '\xC3t-1.h...' for column `database`.`xf_zee_botguard_event`.`route` at row 1
src/XF/Db/AbstractStatement.php:225
Generated by: Unknown account
Jun 11, 2026 at 11:51 AM

Stack trace

INSERT  INTO `xf_zee_botguard_event` (`event_date`, `user_id`, `content_type`, `content_id`, `route`, `controller`, `action`, `request_method`, `request_path`, `event_type`, `decision`, `risk_score`, `visitor_hash`, `ip_hash`, `session_hash`, `request_uri_hash`, `referrer_hash`) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
------------

#0 src/XF/Db/Mysqli/Statement.php(207): XF\Db\AbstractStatement->getException('MySQL query err...', 1366, '22007')
#1 src/XF/Db/Mysqli/Statement.php(83): XF\Db\Mysqli\Statement->getException('MySQL query err...', 1366, '22007')
#2 src/XF/Db/AbstractAdapter.php(96): XF\Db\Mysqli\Statement->execute()
#3 src/XF/Db/AbstractAdapter.php(219): XF\Db\AbstractAdapter->query('INSERT  INTO `x...', Array)
#4 src/addons/Zee/BotGuard/Service/EventAuditWriter.php(38): XF\Db\AbstractAdapter->insert('xf_zee_botguard...', Array)
#5 src/addons/Zee/BotGuard/Repository/EventLog.php(216): Zee\BotGuard\Service\EventAuditWriter->insertEventRow(Array)
#6 src/addons/Zee/BotGuard/Repository/EventLog.php(47): Zee\BotGuard\Repository\EventLog->insertEventRow(Array)
#7 src/addons/Zee/BotGuard/Service/ChallengeDecider.php(355): Zee\BotGuard\Repository\EventLog->log(Array, 'verified_crawle...', 'allow', 0, Array, Array)
#8 src/addons/Zee/BotGuard/Service/ChallengeDecider.php(126): Zee\BotGuard\Service\ChallengeDecider->verifiedCrawlerAllow(Array, 1.78117E+9, Array)
#9 src/addons/Zee/BotGuard/Service/ChallengeDecider.php(93): Zee\BotGuard\Service\ChallengeDecider->evaluateInteractiveDocumentRequest(Array, 1.78117E+9)
#10 src/addons/Zee/BotGuard/Listener.php(50): Zee\BotGuard\Service\ChallengeDecider->evaluate(Array)
#11 src/XF/Extension.php(86): Zee\BotGuard\Listener::dispatcherPreDispatch(Object(XF\Mvc\Dispatcher), Object(XF\Mvc\RouteMatch))
#12 src/XF/App.php(3366): XF\Extension->fire('dispatcher_pre_...', Array, NULL)
#13 src/XF/Mvc/Dispatcher.php(96): XF\App->fire('dispatcher_pre_...', Array)
#14 src/XF/Mvc/Dispatcher.php(57): XF\Mvc\Dispatcher->beforeDispatch(Object(XF\Mvc\RouteMatch))
#15 src/XF/App.php(2824): XF\Mvc\Dispatcher->run()
#16 src/XF.php(814): XF\App->run()
#17 index.php(23): XF::runApp('XF\\Pub\\App')
#18 {main}

Request state

array(4) {
  ["url"] => string(55) "/forum/list_messages/33302/Is-dit-humor-of-w%C3t-1.html"
  ["referrer"] => bool(false)
  ["_GET"] => array(1) {
    [""] => string(0) ""
  }
  ["_POST"] => array(0) {
  }
}

Looks like the add-on has some trouble with special characters in topic titles.

Thanks for the report! I'll get this bug fixed for next release.
 
@zeeb0t Unfurling for internal links still doesn't work on my server. Already added the ip of the webserver but still the "being valideted" links...
 
zeeb0t updated XF Bot Guard with a new update entry:

Minor Release: v1.2.7

XF Bot Guard 1.2.7

Important upgrade notes for existing customers:


  • Social media URL previews: This release adds optional, default-off metadata-only URL preview handling for selected social media and messaging preview agents, including WhatsApp. If link previews for protected public pages matter on your site, review the new light valid response options after upgrading.
  • Expanded network controls: IP/CIDR exclusions now support decimal ASNs...

Read the rest of this update entry...
 
@zeeb0t Unfurling for internal links still doesn't work on my server. Already added the ip of the webserver but still the "being valideted" links...

So, with the new update - you can go and enable the light valid response feature, and add to the list of user agents:

Code:
XenForo/2.*

Then, whatever your IP - it should work.
 
Hello, thank you for your work on the plugin!
Add support for Redis Cache.
Also, if the forum has a default black theme, xf-contentBg causes everything in the admin panel to turn black, making everything unreadable.
Updating the plugin resets all statistics.
 
I believe it already supports Redis cache, your stats are prob fine and just awaiting the CRON to run to regenerate them after a conversion, black theme thing is legit issue for some. I'm using memcached on mine, in addition to selective settings at cloudflare..
 
Hello, thank you for your work on the plugin!
Add support for Redis Cache.
Also, if the forum has a default black theme, xf-contentBg causes everything in the admin panel to turn black, making everything unreadable.
Updating the plugin resets all statistics.

You're welcome, and thank you for the feedback.

Redis cache is already supported. XF Bot Guard uses XenForo’s cache system, so whatever cache backend you have configured for XenForo, including Redis, will automatically be used by the add-on.

Regarding the black theme issue, could you please send me a screenshot and let me know which theme/style you are using? XF Bot Guard already supports XenForo’s native light and dark modes, so if this is happening with a third-party or custom admin style, I’ll need to take a closer look to understand what is being applied.

Updating the add-on should not permanently reset statistics. There were some updates where the data schema was improved, and during the upgrade process some dashboard snapshot data may be regenerated later, by the hourly dashboard snapshot cron. This can make it look like the statistics have reset temporarily, but once the dashboard snapshot cron runs again, the dashboard should rebuild in full.
 
Back
Top Bottom