{"id":296814,"date":"2026-05-25T19:03:18","date_gmt":"2026-05-25T19:03:18","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/ipsentry-security\/"},"modified":"2026-05-25T19:03:02","modified_gmt":"2026-05-25T19:03:02","slug":"ipsentry-security","status":"publish","type":"plugin","link":"https:\/\/pap-aw.wordpress.org\/plugins\/ipsentry-security\/","author":23475053,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.9.4","stable_tag":"1.9.4","tested":"7.0","requires":"5.8","requires_php":"7.4","requires_plugins":null,"header_name":"Predax Security (formerly IPSentry)","header_author":"Predax","header_description":"Real-time IP threat detection and blocking powered by IPSentry API","assets_banners_color":"091c1e","last_updated":"2026-05-25 19:03:02","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/predax.io\/integrations\/wordpress","header_author_uri":"https:\/\/predax.io","rating":0,"author_block_rating":0,"active_installs":0,"downloads":43,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.9.4":{"tag":"1.9.4","author":"ipsentry","date":"2026-05-25 19:03:02"}},"upgrade_notice":{"1.9.4":"<p>WordPress 7.0 + PHP 8.2 compatibility tested. Setup wizard branding refreshed and a fix for an OAuth-redirect edge case that could show a blank &quot;0&quot; page. No settings changes. Safe to upgrade.<\/p>","1.9.1":"<p>Privacy + security polish. Fresh installs: visitor and login protection now default OFF (enabled by picking a Setup Wizard preset). Community Threat Network opt-in toggle. IP\/CIDR validation on blacklists. uninstall.php cleanup. Existing sites keep their settings. Safe to upgrade.<\/p>","1.9.0":"<p>Adds a full security dashboard as the plugin&#039;s landing page. Settings and setup wizard redesigned. No configuration changes required. Safe to upgrade.<\/p>","1.8.0":"<p>Major feature release \u2014 HTTP Security Headers, Google reCAPTCHA v3, Honeypot URL Traps, User-Agent Blocking, 404 Threshold Blocking, JavaScript Challenge, Browser Fingerprint Scoring, and more. All new features are off by default. Safe to upgrade.<\/p>","1.7.0":"<p>Adds one-click OAuth connect via the setup wizard \u2014 link your site to Predax without copying an API key. Manual key entry remains available as a fallback.<\/p>","1.6.0":"<p>Adds a 3-step setup wizard that runs on first activation. No configuration changes to existing installs. Safe to upgrade.<\/p>","1.5.5":"<p>Recommended update \u2014 VPN detection improved (NordVPN and other major providers now reliably detected). Block messages updated to always mention Predax.<\/p>","1.5.3":"<p>Recommended update \u2014 smarter login protection (hackers get permanently blocked, legitimate users get a temporary lockout). Test Connection button fixed.<\/p>","1.5.2":"<p>Bug fix: VPN\/proxy users in Monitor mode no longer get blocked by the risk threshold. Recommended update for anyone using VPN detection.<\/p>","1.5.1":"<p>Settings page UX improvements \u2014 tabbed layout, inline save\/test buttons, help tooltips. No configuration changes required.<\/p>","1.5.0":"<p>Adds the Web Application Firewall (WAF, on by default) and the opt-in Community Threat Network (off by default; enable in Settings \u2192 Predax Security \u2192 Advanced to contribute block events to the shared feed). Safe to upgrade \u2014 no configuration changes required.<\/p>","1.4.0":"<p>Adds custom block page, XML-RPC\/REST API protection, disposable email blocking, WP-CLI commands, and settings import\/export. All new features default to off \u2014 no behaviour changes on upgrade.<\/p>"},"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3548110,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3548110,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3548110,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3548110,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.9.4"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3548110,"resolution":"1","location":"assets","locale":"","width":1280,"height":900},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3548110,"resolution":"2","location":"assets","locale":"","width":1280,"height":900},"screenshot-3.png":{"filename":"screenshot-3.png","revision":3548110,"resolution":"3","location":"assets","locale":"","width":1265,"height":2466},"screenshot-4.png":{"filename":"screenshot-4.png","revision":3548110,"resolution":"4","location":"assets","locale":"","width":1280,"height":900},"screenshot-5.png":{"filename":"screenshot-5.png","revision":3548110,"resolution":"5","location":"assets","locale":"","width":1280,"height":900}},"screenshots":{"1":"Settings page \u2014 configure API key, risk threshold, and protection types","2":"Threat log \u2014 view all blocked events with IP, reason, risk score, and timestamp","3":"Dashboard widget \u2014 at-a-glance threat stats on the WordPress dashboard","4":"Custom block page \u2014 branded 403 page shown to blocked visitors","5":"Country blocking \u2014 select countries and regions to allow or deny"}},"plugin_section":[262246],"plugin_tags":[2439,1174,1192,600,48992],"plugin_category":[54],"plugin_contributors":[264383],"plugin_business_model":[],"class_list":["post-296814","plugin","type-plugin","status-publish","hentry","plugin_section-dashboard-widgets","plugin_tags-brute-force","plugin_tags-firewall","plugin_tags-ip-blocking","plugin_tags-security","plugin_tags-vpn","plugin_category-security-and-spam-protection","plugin_contributors-ipsentry","plugin_committers-ipsentry"],"banners":{"banner":"https:\/\/ps.w.org\/ipsentry-security\/assets\/banner-772x250.png?rev=3548110","banner_2x":"https:\/\/ps.w.org\/ipsentry-security\/assets\/banner-1544x500.png?rev=3548110","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/ipsentry-security\/assets\/icon-128x128.png?rev=3548110","icon_2x":"https:\/\/ps.w.org\/ipsentry-security\/assets\/icon-256x256.png?rev=3548110","generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/ipsentry-security\/assets\/screenshot-1.png?rev=3548110","caption":"Settings page \u2014 configure API key, risk threshold, and protection types"},{"src":"https:\/\/ps.w.org\/ipsentry-security\/assets\/screenshot-2.png?rev=3548110","caption":"Threat log \u2014 view all blocked events with IP, reason, risk score, and timestamp"},{"src":"https:\/\/ps.w.org\/ipsentry-security\/assets\/screenshot-3.png?rev=3548110","caption":"Dashboard widget \u2014 at-a-glance threat stats on the WordPress dashboard"},{"src":"https:\/\/ps.w.org\/ipsentry-security\/assets\/screenshot-4.png?rev=3548110","caption":"Custom block page \u2014 branded 403 page shown to blocked visitors"},{"src":"https:\/\/ps.w.org\/ipsentry-security\/assets\/screenshot-5.png?rev=3548110","caption":"Country blocking \u2014 select countries and regions to allow or deny"}],"raw_content":"<!--section=description-->\n<p><strong>Predax Security<\/strong> connects your WordPress site to the Predax threat intelligence API to detect and block malicious traffic in real time \u2014 once the site administrator has enabled a protection preset.<\/p>\n\n<p>After you complete setup and pick a protection preset (or enable individual protections from Settings), visitor IPs are checked against a continuously-updated database of known VPN providers, open proxies, Tor exit nodes, datacenter ranges, and web crawlers. High-risk IPs are blocked before they can log in, register, post comments, or browse your site.<\/p>\n\n<p>On a fresh install the plugin is <strong>off by default<\/strong> \u2014 no visitor data is sent anywhere until you explicitly enable a protection via the setup wizard or the Settings &rarr; Protection tab.<\/p>\n\n<h4>Key Features<\/h4>\n\n<ul>\n<li><strong>Security Dashboard<\/strong> \u2014 real-time overview with blocking activity chart, threat breakdown, top targeted paths, protection status, and country analysis<\/li>\n<li><strong>Real-time VPN\/Proxy\/Tor\/Datacenter detection<\/strong> \u2014 checks every visitor against live threat intelligence<\/li>\n<li><strong>Risk score thresholds<\/strong> \u2014 block IPs above a configurable risk score (0\u2013100)<\/li>\n<li><strong>Country geo-blocking<\/strong> \u2014 block or allow specific countries and regions<\/li>\n<li><strong>Login protection<\/strong> \u2014 block high-risk IPs from attempting to log in<\/li>\n<li><strong>Registration protection<\/strong> \u2014 stop fraudulent account creation<\/li>\n<li><strong>Comment protection<\/strong> \u2014 block spam and bot comments at source<\/li>\n<li><strong>Visitor protection<\/strong> \u2014 optionally check all page visitors (with 1-hour caching to minimise API calls)<\/li>\n<li><strong>XML-RPC &amp; REST API protection<\/strong> \u2014 extend blocking to XML-RPC calls and REST API requests<\/li>\n<li><strong>Disposable email blocking<\/strong> \u2014 reject registrations using throwaway email services<\/li>\n<li><strong>Custom block page<\/strong> \u2014 show a branded 403 page instead of the default WordPress error<\/li>\n<li><strong>Whitelist\/blacklist<\/strong> \u2014 override decisions for individual IPs or CIDR ranges<\/li>\n<li><strong>Threat log<\/strong> \u2014 view and export all blocked events with IP, reason, and timestamp<\/li>\n<li><strong>Event tracking<\/strong> \u2014 log successful checks for audit and analytics<\/li>\n<li><strong>Settings import\/export<\/strong> \u2014 back up and restore your configuration as a JSON file<\/li>\n<li><strong>WP-CLI commands<\/strong> \u2014 manage whitelists, blacklists, and run IP tests from the command line<\/li>\n<\/ul>\n\n<h4>Free Tier<\/h4>\n\n<p>Sign up at <a href=\"https:\/\/predax.io\">predax.io<\/a> for a free API key. The free plan includes:<\/p>\n\n<ul>\n<li>1,000 IP checks per day<\/li>\n<li>5,000 IP checks per month<\/li>\n<li>VPN, proxy, Tor, and datacenter detection<\/li>\n<li>Country and region data<\/li>\n<\/ul>\n\n<p>No credit card required.<\/p>\n\n<h4>How It Works<\/h4>\n\n<ol>\n<li>You install the plugin, enter an API key, and pick a protection preset during the Setup Wizard (or enable individual protections from Settings &rarr; Protection). This is the explicit opt-in \u2014 no data leaves the site until you do this.<\/li>\n<li>A visitor makes a request to your site.<\/li>\n<li>Predax checks their IP against the threat intelligence API (results cached for 1 hour per IP).<\/li>\n<li>If the risk score exceeds your threshold, the visitor is blocked with a configurable message.<\/li>\n<li>All block events are logged in the WordPress database for review.<\/li>\n<\/ol>\n\n<h4>WP-CLI Commands<\/h4>\n\n<pre><code>wp ipsentry status \u2014 show current configuration and threat counts\nwp ipsentry test-ip &lt;ip&gt; \u2014 run a live API check on any IP\nwp ipsentry whitelist add &lt;ip&gt; \u2014 add an IP or CIDR to the whitelist\nwp ipsentry whitelist remove &lt;ip&gt; \u2014 remove from whitelist\nwp ipsentry blacklist add &lt;ip&gt; \u2014 add an IP or CIDR to the blacklist\nwp ipsentry log --limit=20 \u2014 view recent threat log entries\n<\/code><\/pre>\n\n<h3>Third Party Services<\/h3>\n\n<p>This plugin connects to external services. By installing and activating this plugin you agree to the terms of each service you enable.<\/p>\n\n<h4>Predax API<\/h4>\n\n<p>This plugin transmits visitor IP addresses to the <strong>Predax API<\/strong> (https:\/\/predax.io) for real-time threat detection and risk scoring.<\/p>\n\n<p><strong>What is sent:<\/strong> The visitor's IP address, and optionally their timezone (when timezone mismatch detection is enabled and visitor protection is active).\n<strong>When it is sent:<\/strong> On each page load, login attempt, registration, or comment submission, subject to your configured protection settings. Results are cached for 1 hour so repeat visits by the same IP do not generate additional API calls.\n<strong>Who operates the service:<\/strong> Predax (predax.io)\n<strong>Terms of Service:<\/strong> https:\/\/predax.io\/terms\n<strong>Privacy Policy:<\/strong> https:\/\/predax.io\/privacy<\/p>\n\n<h4>Community Threat Network (opt-in, disabled by default)<\/h4>\n\n<p>The Community Threat Network is <strong>opt-in and disabled by default<\/strong>. No block or monitor events are sent to the community network unless you enable it yourself in <strong>Settings \u2192 Predax Security \u2192 Advanced<\/strong>.<\/p>\n\n<p>When \u2014 and only when \u2014 you explicitly enable it, anonymised block and monitor events (containing: IP address, action taken, block reason, country code, and risk score) are sent to the Predax API at predax.io. This data is used to build a shared threat database that improves detection accuracy for all sites in the network. You can turn community reporting back off at any time in the same settings screen.<\/p>\n\n<h4>Google reCAPTCHA<\/h4>\n\n<p>When reCAPTCHA v3 is enabled (Settings \u2192 Protection \u2192 reCAPTCHA), this plugin loads the reCAPTCHA script from <strong>google.com<\/strong> and sends form submission tokens to <strong>google.com\/recaptcha<\/strong> for verification. Google may collect data according to their privacy policy. You must provide your own reCAPTCHA site key and secret key.<\/p>\n\n<p><strong>Google Privacy Policy:<\/strong> https:\/\/policies.google.com\/privacy\n<strong>reCAPTCHA Terms:<\/strong> https:\/\/policies.google.com\/terms<\/p>\n\n<h4>Browser Fingerprinting<\/h4>\n\n<p>When browser fingerprint scoring is enabled (Settings \u2192 Protection \u2192 Fingerprint Scoring), this plugin collects screen resolution, timezone, platform string, WebGL renderer, and plugin count from the visitor's browser on the login page. Fingerprint data is used locally to score bot likelihood and is stored in WordPress only while the login form is being submitted, then discarded. The visitor's timezone may be included in the API request to detect timezone mismatch when that feature is enabled.<\/p>\n\n<h4>Cookies set by this plugin<\/h4>\n\n<p>All cookies set by this plugin are functional service cookies, not tracking cookies, and are only written when the relevant feature is explicitly enabled by the site administrator:<\/p>\n\n<ul>\n<li><code>ipsentry_tz<\/code> \u2014 carries the visitor's browser timezone to the Predax API when timezone-mismatch detection is active. Written from <code>ipsentry-tz.js<\/code> on the front-end. Expires after 24 hours. <code>SameSite=Lax<\/code>. Only set when an API key is configured AND visitor or login protection is enabled.<\/li>\n<li><code>ips_jsc<\/code> \u2014 JavaScript challenge solve token. Written from <code>js-challenge.js<\/code> when a visitor passes the challenge. Expires after 24 hours. <code>SameSite=Lax<\/code>. Only set when the JavaScript Challenge feature is enabled.<\/li>\n<\/ul>\n\n<p>No tracking or advertising cookies are written by this plugin.<\/p>\n\n<p>By activating this plugin and entering an API key, you agree to the Predax Terms of Service and Privacy Policy. You are responsible for ensuring your use of visitor IP data complies with applicable privacy laws (GDPR, CCPA, etc.) and your own site's privacy policy.<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Upload the <code>ipsentry-security<\/code> folder to <code>\/wp-content\/plugins\/<\/code><\/li>\n<li>Activate the plugin through the <strong>Plugins<\/strong> menu in WordPress<\/li>\n<li>The setup wizard will guide you through connecting your API key and choosing a protection level<\/li>\n<li>Go to <strong>Predax Security<\/strong> in the admin sidebar to view the security dashboard<\/li>\n<li>Click <strong>Settings<\/strong> to fine-tune protection types, risk thresholds, and advanced features<\/li>\n<li>Visit the <strong>Threat Log<\/strong> page to verify the plugin is detecting threats<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"will%20this%20slow%20down%20my%20site%3F\"><h3>Will this slow down my site?<\/h3><\/dt>\n<dd><p>No. API results are cached in the WordPress database for 1 hour per IP. After the first check, returning visitors are served from cache with no API call. The cache TTL is configurable.<\/p><\/dd>\n<dt id=\"does%20this%20block%20all%20vpn%20users%3F\"><h3>Does this block all VPN users?<\/h3><\/dt>\n<dd><p>Only if you enable VPN blocking. By default the plugin is set to <em>monitor<\/em> VPN traffic (log it but not block it). You control exactly which threat types trigger a block.<\/p><\/dd>\n<dt id=\"what%20happens%20to%20blocked%20visitors%3F\"><h3>What happens to blocked visitors?<\/h3><\/dt>\n<dd><p>By default they see a standard WordPress error page with a 403 status code. You can enable the <strong>Custom Block Page<\/strong> option to show a branded page with your own message and a support link.<\/p><\/dd>\n<dt id=\"does%20it%20work%20with%20cloudflare%3F\"><h3>Does it work with Cloudflare?<\/h3><\/dt>\n<dd><p>Yes. The plugin reads the <code>CF-Connecting-IP<\/code> header automatically when Cloudflare is detected, so the real visitor IP is used rather than the Cloudflare proxy IP.<\/p><\/dd>\n<dt id=\"is%20the%20free%20plan%20enough%20for%20a%20small%20site%3F\"><h3>Is the free plan enough for a small site?<\/h3><\/dt>\n<dd><p>For most small sites, yes. The free plan provides 1,000 checks per day. With 1-hour caching, this covers approximately 1,000 unique visitors per day. Returning visitors within the hour use cached results and don't count against your quota.<\/p><\/dd>\n<dt id=\"can%20i%20whitelist%20my%20own%20ip%3F\"><h3>Can I whitelist my own IP?<\/h3><\/dt>\n<dd><p>Yes. Go to <strong>Settings \u2192 Predax Security \u2192 Whitelist \/ Blacklist<\/strong> and add your IP or CIDR range. Whitelisted IPs bypass all checks.<\/p><\/dd>\n<dt id=\"does%20it%20protect%20the%20woocommerce%20checkout%3F\"><h3>Does it protect the WooCommerce checkout?<\/h3><\/dt>\n<dd><p>The base security plugin protects logins and registrations. For WooCommerce checkout protection (fraud scoring, country mismatch, order velocity, auto hold), use the companion <strong>Predax WooCommerce Fraud Guard<\/strong> plugin.<\/p><\/dd>\n<dt id=\"what%20data%20is%20sent%20to%20the%20api%3F\"><h3>What data is sent to the API?<\/h3><\/dt>\n<dd><p>The visitor's IP address, and optionally their timezone when timezone mismatch detection is enabled. A temporary cookie is used to pass the timezone from the browser to the server. No page content or personal user data is transmitted. See the Third Party Services section below for full details.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.9.4<\/h4>\n\n<ul>\n<li>Compatibility: tested with WordPress 7.0 and PHP 8.2. No deprecations or warnings under <code>WP_DEBUG<\/code>.<\/li>\n<li>Branding: setup wizard logo and wordmark refreshed to Predax (the \"(formerly IPSentry)\" suffix remains in the plugin name for clarity). API key field now shows the current <code>prdx_live_\u2026<\/code> placeholder. Existing <code>ipsent_*<\/code> keys continue to authenticate normally.<\/li>\n<li>Fix: setup wizard OAuth flow no longer fails with a blank \"0\" page on the redirect back from predax.io. The callback action is now passed explicitly so the flow is robust against future predax.io frontend changes.<\/li>\n<li>Internal: removed an unused legacy settings template that was shipping in the zip without being loaded anywhere.<\/li>\n<\/ul>\n\n<h4>1.9.3<\/h4>\n\n<ul>\n<li>Branding: IPSentry has been rebranded to <strong>Predax<\/strong>. The plugin name, description, and admin labels now use the Predax name. The plugin slug, internal class names, text domain, settings, and your existing API key all remain unchanged \u2014 the upgrade is purely cosmetic and 100% backwards compatible.<\/li>\n<li>Branding: external links from the admin pages now point to <code>predax.io<\/code> instead of <code>ipsentry.io<\/code>. The legacy <code>ipsentry.io<\/code> URL still redirects, so older bookmarks continue to work.<\/li>\n<li>Compatibility: legacy <code>ipsent_*<\/code> API keys created before the rebrand continue to authenticate normally. New keys generated at <code>https:\/\/predax.io\/dashboard\/api-keys<\/code> start with <code>prdx_<\/code>. Both work.<\/li>\n<li>No data changes. No setting resets. Nothing to reconfigure after the update.<\/li>\n<\/ul>\n\n<h4>1.9.1<\/h4>\n\n<ul>\n<li>Privacy &amp; compliance: Community Threat Network now has an explicit opt-in toggle in Settings \u2192 Advanced (disabled by default). Clarified documentation: no data is shared with the community network unless the site admin explicitly enables it.<\/li>\n<li>Privacy &amp; compliance: visitor protection and login protection are now <strong>off by default on fresh installs<\/strong>. They are enabled the moment a user completes the Setup Wizard and picks a protection preset (that click is the explicit opt-in). Existing sites upgrading from 1.9.0 are not affected \u2014 <code>add_option()<\/code> respects existing values, so if you already had these on, they stay on.<\/li>\n<li>Security: reordered nonce verification before capability check on the test-connection AJAX endpoint.<\/li>\n<li>Security: added IP\/CIDR validation on the blacklist and whitelist inputs \u2014 invalid entries are now silently dropped rather than stored.<\/li>\n<li>Security: added <code>uninstall.php<\/code> that cleans up all plugin options and drops both custom tables when the plugin is deleted.<\/li>\n<li>Privacy: added <code>wp_add_privacy_policy_content<\/code> integration so administrators can pull suggested Privacy Policy text from Tools \u2192 Privacy.<\/li>\n<li>Code quality: extracted inline styles from the OAuth callback page, front-end footer badge, and comment honeypot into external stylesheets. Removed an inline <code>onclick<\/code> handler from the <code>[ipsentry_lookup]<\/code> shortcode.<\/li>\n<li>Code quality: internationalised hard-coded English error messages in admin endpoints. Localised number formatting in event counts and threat badges.<\/li>\n<\/ul>\n\n<h4>1.9.0<\/h4>\n\n<ul>\n<li>New: Security Dashboard \u2014 a dedicated dashboard page with real-time threat statistics, blocking activity chart, protection status overview, firewall summary table, top targeted paths, threat type breakdown, and country analysis.<\/li>\n<li>Improved: Settings page redesigned with cleaner layout and better visual hierarchy.<\/li>\n<li>Improved: Setup wizard redesigned with modern dark theme and clearer protection preset cards.<\/li>\n<\/ul>\n\n<h4>1.8.0<\/h4>\n\n<ul>\n<li>New: HTTP Security Headers \u2014 enable HSTS, X-Frame-Options, X-Content-Type-Options, Referrer-Policy, and Permissions-Policy from the plugin settings. One toggle to harden your site's browser security.<\/li>\n<li>New: Google reCAPTCHA v3 \u2014 invisible bot protection for login and registration forms. No puzzles for visitors.<\/li>\n<li>New: Honeypot URL Traps \u2014 hidden decoy URLs that catch automated scanners instantly. Pre-configured with 8 common trap paths.<\/li>\n<li>New: User-Agent Blocking \u2014 block known malicious bots, scanners, and scrapers by their User-Agent string. Ships with 20 pre-configured patterns.<\/li>\n<li>New: 404 Threshold Blocking \u2014 automatically block IPs that trigger excessive 404 errors (scanner behavior). Configurable threshold and temporary or permanent blocking.<\/li>\n<li>New: Known Bot Verification \u2014 verify that visitors claiming to be Googlebot, Bingbot, and other search engines are legitimate using reverse DNS + forward DNS confirmation. Catches fake bot impersonators.<\/li>\n<li>New: JavaScript Challenge \u2014 invisible browser verification that blocks bots unable to execute JavaScript. Clean dark-themed challenge page.<\/li>\n<li>New: Comment Spam Honeypot \u2014 hidden form field that catches spam bots filling in invisible fields. Zero false positives.<\/li>\n<li>New: Browser Fingerprint Scoring \u2014 detects inconsistencies between User-Agent claims and actual browser capabilities on the login page. Logs suspicious fingerprints.<\/li>\n<li>New: Request Pattern Analysis \u2014 identifies bot-like request timing patterns (machine-precise intervals vs human browsing).<\/li>\n<li>New: WordPress Hardening \u2014 one-click toggles to disable XML-RPC, hide WordPress version, and disable file editing.<\/li>\n<li>New: IP Lookup Shortcode [ipsentry_lookup] \u2014 embed an IP threat check widget on any page. Dark and light themes available.<\/li>\n<li>New: Protected Badge Shortcode [ipsentry_badge] \u2014 display \"Protected by Predax \u2014 X threats blocked\" on your site.<\/li>\n<\/ul>\n\n<h4>1.7.0<\/h4>\n\n<ul>\n<li>New: One-Click Connect \u2014 click \"Connect with Predax\" in the setup wizard to link your site instantly. No API key to copy or paste. Just log in (or create a free account), approve, and you're protected.<\/li>\n<li>New: OAuth2 Authorization Code flow with PKCE for secure, industry-standard site authentication.<\/li>\n<li>Improved: Setup wizard now defaults to one-click connect with manual API key entry as a fallback option.<\/li>\n<\/ul>\n\n<h4>1.6.0<\/h4>\n\n<ul>\n<li>New: Setup Wizard \u2014 guided 3-step setup on first activation. Connect your API key, choose a protection level (Recommended, Strict, or Monitor Only), and you're done in under a minute.<\/li>\n<li>New: Protection presets \u2014 one-click configuration for common security profiles. Re-run anytime from Settings &gt; Developer &gt; Run Setup Wizard.<\/li>\n<\/ul>\n\n<h4>1.5.5<\/h4>\n\n<ul>\n<li>Improvement: All block messages now clearly state \"Predax has blocked your access\" \u2014 visitors always know who blocked them and why.<\/li>\n<li>Improvement: VPN detection now uses ASN-based matching for major VPN providers (NordVPN, Mullvad, ProtonVPN, Surfshark, ExpressVPN, and more). Previously, some VPN IPs were only flagged as \"datacenter\" if not in the feed list.<\/li>\n<\/ul>\n\n<h4>1.5.4<\/h4>\n\n<ul>\n<li>New: Reason-specific block pages \u2014 blocked visitors now see a clear, context-aware message explaining exactly why they were blocked (VPN detected, high-risk IP, Tor network, temporary lockout with countdown, etc.) instead of a generic error.<\/li>\n<li>New: Custom block page is now ON by default for all new installs. No configuration needed \u2014 blocked visitors immediately see a branded, professional page.<\/li>\n<li>New: Temporary lockout block message now shows the exact remaining wait time (e.g. \"Please wait 2 hours and 30 minutes before trying again\").<\/li>\n<li>New: All login, registration, and comment blocks now show reason-specific messages appropriate to the context.<\/li>\n<li>Improvement: Exponential backoff for clean IP lockouts \u2014 each repeated lockout doubles in duration (30min \u2192 60min \u2192 120min \u2192 ... \u2192 24hr max). Resets on successful login.<\/li>\n<li>Improvement: Residential proxy and timezone mismatch signals now treated as risky (trigger permanent blacklist path, not temporary lockout).<\/li>\n<\/ul>\n\n<h4>1.5.3<\/h4>\n\n<ul>\n<li>New: Risk-aware failed login protection \u2014 VPN\/proxy\/datacenter\/high-risk IPs are permanently blocked after 3 failed attempts. Clean\/residential IPs get a temporary lockout only (default 30 min), protecting legitimate users who forget their password. (If the Community Threat Network is enabled \u2014 it is off by default \u2014 these block events are also shared with the network.)<\/li>\n<li>Improvement: Lockout thresholds and duration are configurable in Settings \u2192 Protection.<\/li>\n<li>Fix: Test Connection button in Developer tab no longer submits the settings form, and now works reliably on slow\/local dev environments (LocalWP, etc.).<\/li>\n<\/ul>\n\n<h4>1.5.2<\/h4>\n\n<ul>\n<li>Fix: VPN\/proxy users set to \"Monitor\" mode were incorrectly blocked by the risk threshold. The risk score on VPN\/proxy IPs is elevated by the VPN\/proxy flag itself \u2014 so if you've chosen to monitor (not block) those users, the threshold no longer overrides that decision.<\/li>\n<\/ul>\n\n<h4>1.5.1<\/h4>\n\n<ul>\n<li>Improvement: Settings page redesigned with tabbed interface (Protection, Notifications, Advanced, Developer)<\/li>\n<li>Improvement: Save and Test Connection buttons now shown inline next to the API key field<\/li>\n<li>Improvement: Help tooltips added to every setting explaining what each option does<\/li>\n<li>Improvement: Visitor screening enabled by default for new installs<\/li>\n<li>Improvement: Custom block page now shows \"Protected by Predax\" footer branding<\/li>\n<li>Improvement: Developer tools (Test IP, Import\/Export) moved to dedicated Developer tab<\/li>\n<\/ul>\n\n<h4>1.5.0<\/h4>\n\n<ul>\n<li>New: Web Application Firewall \u2014 detects and blocks SQL injection, XSS, path traversal, file probes, known scanner tools, and command injection attempts<\/li>\n<li>New: Community Threat Network (opt-in, off by default) \u2014 when you enable it, IP blocks propagate to other opted-in sites in the network via the Predax community score<\/li>\n<li>New: WAF toggle in plugin settings (default on); independent of the risk score threshold<\/li>\n<\/ul>\n\n<h4>1.4.0<\/h4>\n\n<ul>\n<li>New: Custom block page \u2014 show a branded 403 page with configurable title, message, and support link<\/li>\n<li>New: XML-RPC protection \u2014 block high-risk IPs from XML-RPC calls<\/li>\n<li>New: REST API protection \u2014 block high-risk IPs from WP REST API requests<\/li>\n<li>New: Disposable email blocking \u2014 reject registrations using throwaway email services (30+ providers)<\/li>\n<li>New: Settings import\/export \u2014 back up and restore configuration as a JSON file<\/li>\n<li>New: WP-CLI commands \u2014 manage lists and run IP tests from the command line (<code>wp ipsentry<\/code>)<\/li>\n<li>New: Test IP override \u2014 set a fixed IP in settings for local\/staging testing<\/li>\n<li>Fix: Registration protection now correctly flags disposable email domains<\/li>\n<\/ul>\n\n<h4>1.3.0<\/h4>\n\n<ul>\n<li>New: General visitor protection \u2014 optionally check all site visitors (with transient caching)<\/li>\n<li>New: Country and region blocking with full ISO 3166-1 alpha-2 support (249 countries)<\/li>\n<li>New: Custom risk scoring weights \u2014 adjust how much each threat type contributes to the risk score<\/li>\n<li>New: Telemetry pipeline \u2014 anonymised threat signals can feed community intelligence when the Community Threat Network is enabled (off by default)<\/li>\n<li>Improvement: VPN\/proxy\/Tor options now have Off\/Monitor\/Block modes for finer control<\/li>\n<li>Fix: Transient cache key collisions on multisite installs<\/li>\n<\/ul>\n\n<h4>1.2.0<\/h4>\n\n<ul>\n<li>New: Event tracking log \u2014 view all API check events (not just blocks) for audit purposes<\/li>\n<li>New: Admin dashboard widget with 7-day threat chart<\/li>\n<li>New: CIDR range support for whitelist and blacklist entries<\/li>\n<li>Improvement: API client now retries once on timeout before failing open<\/li>\n<\/ul>\n\n<h4>1.1.0<\/h4>\n\n<ul>\n<li>New: Registration protection \u2014 block high-risk IPs from creating accounts<\/li>\n<li>New: Comment protection \u2014 block high-risk IPs from posting comments<\/li>\n<li>New: Configurable risk threshold (default 50)<\/li>\n<li>New: CSV export for the threat log<\/li>\n<li>Fix: Login protection now respects whitelist entries correctly<\/li>\n<\/ul>\n\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>Initial release<\/li>\n<li>Login protection with VPN, proxy, and Tor detection<\/li>\n<li>Whitelist\/blacklist management<\/li>\n<li>Threat log<\/li>\n<li>Dashboard widget<\/li>\n<\/ul>","raw_excerpt":"Real-time IP threat detection and blocking. Stop VPNs, proxies, Tor, bots, and high-risk IPs before they reach your site.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/pap-aw.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/296814","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/pap-aw.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/pap-aw.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/pap-aw.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=296814"}],"author":[{"embeddable":true,"href":"https:\/\/pap-aw.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/ipsentry"}],"wp:attachment":[{"href":"https:\/\/pap-aw.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=296814"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/pap-aw.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=296814"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/pap-aw.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=296814"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/pap-aw.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=296814"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/pap-aw.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=296814"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/pap-aw.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=296814"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}