{"id":400853,"date":"2026-11-13T19:14:21","date_gmt":"2026-11-13T19:14:21","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/delonix-security-agent\/"},"modified":"2026-11-14T14:45:09","modified_gmt":"2026-11-14T14:45:09","slug":"delonix-security-agent","status":"publish","type":"plugin","link":"https:\/\/wordpress.org\/plugins\/delonix-security-agent\/","author":23594652,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.0.1","stable_tag":"1.0.1","tested":"7.1.4","requires":"6.0","requires_php":"7.4","requires_plugins":null,"header_name":"Delonix Security Agent","header_author":"Delonix","header_description":"Low-friction anti-bot shield for WordPress: silent proof-of-work browser verification against content scrapers, verified search\/AI crawler access, flood and login limits, comment\/form spam protection and evidence logging.","last_updated":"2026-11-14 14:45:09","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/delonix.biz\/products\/security-agent","header_author_uri":"https:\/\/delonix.biz","rating":0,"author_block_rating":0,"active_installs":0,"downloads":119,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","faq","changelog"],"tags":{"1.0.0":{"tag":"1.0.0","author":"delonixteam","date":"2026-11-13 19:13:58","revision":3801056},"1.0.1":{"tag":"1.0.1","author":"delonixteam","date":"2026-11-14 14:45:09","revision":3802113}},"upgrade_notice":[],"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3801056,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3801056,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3802113,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3802113,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.0.0","1.0.1"],"block_files":[],"assets_screenshots":[],"screenshots":[]},"plugin_section":[],"plugin_tags":[11324,171765,7677,600,599],"plugin_category":[54],"plugin_contributors":[292634],"plugin_business_model":[],"class_list":["post-400853","plugin","type-plugin","status-publish","hentry","plugin_tags-anti-bot","plugin_tags-rate-limit","plugin_tags-scraper","plugin_tags-security","plugin_tags-spam","plugin_category-security-and-spam-protection","plugin_contributors-delonixteam","plugin_committers-delonixteam"],"banners":{"banner":"https:\/\/ps.w.org\/delonix-security-agent\/assets\/banner-772x250.png?rev=3802113","banner_2x":"https:\/\/ps.w.org\/delonix-security-agent\/assets\/banner-1544x500.png?rev=3802113","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/delonix-security-agent\/assets\/icon-128x128.png?rev=3801056","icon_2x":"https:\/\/ps.w.org\/delonix-security-agent\/assets\/icon-256x256.png?rev=3801056","generated":false},"screenshots":[],"raw_content":"<!--section=description-->\n<p>Delonix Security Agent focuses on two things: catching scrapers that send realistic browser headers, and keeping real users and site processes untouched.<\/p>\n\n<p>How it works:\n* Silent verification: a ~3 KB deferred script solves a small SHA-256 proof-of-work in the background and receives a signed HttpOnly cookie. Visitors see nothing. Clients that do not run JavaScript (curl, python-requests, Scrapy and similar scrapers) are sent to an automatic check page after a few pages.\n* Verified crawlers: Google, Bing, Apple and DuckDuckGo are verified against their published IP lists (refreshed weekly). Other crawlers use capped reverse DNS. A fake \"Googlebot\" is challenged.\n* AI and other bots: AI crawlers such as GPTBot, ChatGPT-User, PerplexityBot and ClaudeBot are allowed by default so AI assistants can cite the site. Claims are checked against published IP lists where they exist. SEO tools and link-preview bots (Telegram, WhatsApp and others) each have their own on\/off switch. Bots whose IP cannot be verified get a per-IP rate budget.\n* Flood protection: a hard per-IP request budget (429) for clients without a verification cookie. Verified visitors on carrier-grade NAT are never affected.\n* Spam: guest comments and Contact Form 7 submissions are accepted only from verified browsers. Failed logins on wp-login.php and XML-RPC are limited per IP. XML-RPC can optionally be disabled.\n* Cache safety: challenge and block responses are never cached (DONOTCACHEPAGE plus LiteSpeed no-cache). The verification script is excluded from WP Rocket and LiteSpeed JS optimizations. An optional WP Rocket mandatory cookie serves cached pages only to verified browsers.\n* Low overhead: counters use a persistent object cache or APCu when available. Otherwise they use one atomic SQL statement, and transients are no longer used. Tokens are stateless HMAC. Logs are throttled per client. The gate runs while plugins load, before the theme.\n* Never touched: REST API, admin-ajax, wc-ajax, WooCommerce wc-api payment callbacks, feeds, sitemaps, robots.txt, cron and admin. Custom paths and User-Agents can be excluded.\n* Logged-in users are skipped by default; \"Check logged-in users\" applies the same checks to them.\n* Also included: Google Ads click-marker awareness (gclid\/gbraid\/wbraid), IP\/CIDR allow and block lists, trusted proxy support, evidence logging and CSV export.<\/p>\n\n<p>Limitations: a WordPress plugin only sees requests that reach PHP. Large volumetric DDoS attacks need edge protection (a CDN or WAF). Pages served straight from disk by WP Super Cache (expert mode) or W3TC (disk enhanced) bypass PHP, so they cannot be checked. Headless browsers that run JavaScript can pass proof-of-work. Use the rate limits against them.<\/p>\n\n<p>All features described here are included in this plugin, with no account or license, and nothing in it is locked.<\/p>\n\n<h4>Delonix Security Agent Pro<\/h4>\n\n<p>Delonix Security Agent is built by <a href=\"https:\/\/delonix.biz\">Delonix<\/a>. A separate Pro add-on with additional features is available at <a href=\"https:\/\/delonix.biz\/products\/security-agent\">delonix.biz<\/a>. It is a separate plugin, not hosted on WordPress.org, and this plugin works fully without it.<\/p>\n\n<h3>External services<\/h3>\n\n<p>The plugin works without any account or third-party service. It contacts the services below only in the cases described. No visitor data is sent to any of them.<\/p>\n\n<h4>Search engine and AI crawler IP lists<\/h4>\n\n<p>To confirm that a request claiming to be a known crawler really comes from it, the plugin downloads the IP ranges each operator publishes. This happens once a week by WP-Cron, and when an administrator clicks \"Refresh\" on the dashboard. Only a plain GET request is made; no site or visitor data is sent.<\/p>\n\n<ul>\n<li>Google (developers.google.com): <a href=\"https:\/\/policies.google.com\/terms\">Terms<\/a>, <a href=\"https:\/\/policies.google.com\/privacy\">Privacy<\/a><\/li>\n<li>Microsoft Bing (www.bing.com): <a href=\"https:\/\/www.microsoft.com\/servicesagreement\">Terms<\/a>, <a href=\"https:\/\/privacy.microsoft.com\/privacystatement\">Privacy<\/a><\/li>\n<li>Apple (search.developer.apple.com): <a href=\"https:\/\/www.apple.com\/legal\/internet-services\/terms\/site.html\">Terms<\/a>, <a href=\"https:\/\/www.apple.com\/legal\/privacy\/\">Privacy<\/a><\/li>\n<li>DuckDuckGo (duckduckgo.com): <a href=\"https:\/\/duckduckgo.com\/terms\">Terms<\/a>, <a href=\"https:\/\/duckduckgo.com\/privacy\">Privacy<\/a><\/li>\n<li>OpenAI (openai.com): <a href=\"https:\/\/openai.com\/policies\/terms-of-use\/\">Terms<\/a>, <a href=\"https:\/\/openai.com\/policies\/privacy-policy\/\">Privacy<\/a><\/li>\n<li>Perplexity (www.perplexity.com): <a href=\"https:\/\/www.perplexity.ai\/hub\/legal\/terms-of-service\">Terms<\/a>, <a href=\"https:\/\/www.perplexity.ai\/hub\/legal\/privacy-policy\">Privacy<\/a><\/li>\n<\/ul>\n\n<h4>DB-IP Lite GeoIP database<\/h4>\n\n<p>Optional. When an administrator clicks \"Download database\" in Integrations \u203a IP location, and then monthly while \"Monthly automatic update\" is on, the plugin downloads the free DB-IP Lite database from download.db-ip.com. Only a plain GET request is made; IP lookups run locally against the downloaded file and never contact DB-IP. The database is licensed under CC BY 4.0. <a href=\"https:\/\/db-ip.com\/db\/lite.php\">License<\/a>, <a href=\"https:\/\/db-ip.com\/privacy.php\">Privacy<\/a><\/p>\n\n<h3>Third-party code<\/h3>\n\n<ul>\n<li>flag-icons 7.6.0, https:\/\/github.com\/lipis\/flag-icons, MIT license (assets\/vendor\/flag-icons\/).<\/li>\n<li>MaxMind DB Reader 1.14.0, https:\/\/github.com\/maxmind\/MaxMind-DB-Reader-php, Apache 2.0 license (vendor\/maxmind-db-reader\/).<\/li>\n<\/ul>\n\n<h3>Languages<\/h3>\n\n<p>The plugin is fully translatable; translations are provided through translate.wordpress.org. It follows the WordPress language: wp-admin uses each user's profile language, and visitor pages use the site language. Template: languages\/delonix-security-agent.pot.<\/p>\n\n<!--section=faq-->\n<dl>\n<dt id=\"do%20i%20need%20an%20account%20or%20the%20pro%20add-on%3F\"><h3>Do I need an account or the Pro add-on?<\/h3><\/dt>\n<dd><p>No. Every feature listed above works without an account, a license key or the Pro add-on.<\/p><\/dd>\n<dt id=\"where%20can%20i%20get%20the%20pro%20add-on%20or%20support%3F\"><h3>Where can I get the Pro add-on or support?<\/h3><\/dt>\n<dd><p>See <a href=\"https:\/\/delonix.biz\/products\/security-agent\">delonix.biz\/products\/security-agent<\/a>. For questions about this free plugin, use the WordPress.org support forum.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.0.1<\/h4>\n\n<ul>\n<li>Security: a request with a Googlebot User-Agent from Google Cloud \/ App Engine addresses is no longer accepted as Google's crawler. Google's user-triggered fetchers (Site Verification, Feedfetcher, Read Aloud) from those addresses get the per-IP bot budget instead.<\/li>\n<li>Fix: an IP list entry with an empty or invalid prefix length (for example \"1.2.3.4\/\") no longer matches every address. Invalid entries are reported when settings are saved.<\/li>\n<li>Fix: IPv6 entries in the allow and block lists now match however the address is written (2001:db8::1 and 2001:db8:0:0::1).<\/li>\n<li>Fix: invalid prefix lengths in downloaded crawler IP lists are skipped.<\/li>\n<li>Fix: probe paths such as \/.env are checked in the URL path only, so a query string like ?q=\/.env is no longer blocked.<\/li>\n<li>Readme: links to the Delonix website and the Pro add-on, and a short FAQ.<\/li>\n<\/ul>\n\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>First public release. Silent proof-of-work browser verification, official search\/AI crawler IP verification, flood and login rate limits, comment and Contact Form 7 spam protection, evidence event log with CSV export, and GeoIP lookups.<\/li>\n<\/ul>","raw_excerpt":"Low-friction anti-bot shield for WordPress: stops content scrapers, form spam and request floods without bothering real visitors.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/400853","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=400853"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/delonixteam"}],"wp:attachment":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=400853"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=400853"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=400853"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=400853"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=400853"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=400853"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}