{"id":384781,"date":"2026-10-14T18:03:22","date_gmt":"2026-10-14T18:03:22","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/ipscanner\/"},"modified":"2026-10-14T18:15:28","modified_gmt":"2026-10-14T18:15:28","slug":"ipscanner-bot-blocker","status":"publish","type":"plugin","link":"https:\/\/cn.wordpress.org\/plugins\/ipscanner-bot-blocker\/","author":23584150,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"0.1.3","stable_tag":"0.1.3","tested":"7.1.3","requires":"6.0","requires_php":"7.4","requires_plugins":null,"header_name":"IPScanner \u2013 Block Bots, VPNs & Proxies","header_author":"IPScanner","header_description":"Checks visitors with IPScanner and blocks bots, Tor, VPN and proxy traffic on your site, login, registration, comments and checkout.","assets_banners_color":"748076","last_updated":"2026-10-14 18:15:28","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/github.com\/ipscanner\/ipscanner-wordpress","header_author_uri":"https:\/\/ipscanner.io","rating":0,"author_block_rating":0,"active_installs":0,"downloads":45,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"0.1.3":{"tag":"0.1.3","author":"ipscanner","date":"2026-10-14 18:15:28","revision":3746915}},"upgrade_notice":[],"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3746892,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3746892,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256},"icon.svg":{"filename":"icon.svg","revision":3746892,"resolution":false,"location":"assets","locale":false}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3746915,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3746915,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["0.1.3"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3746892,"resolution":"1","location":"assets","locale":"","width":1280,"height":720},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3746892,"resolution":"2","location":"assets","locale":"","width":1280,"height":960},"screenshot-3.png":{"filename":"screenshot-3.png","revision":3746892,"resolution":"3","location":"assets","locale":"","width":1280,"height":1280},"screenshot-4.png":{"filename":"screenshot-4.png","revision":3746892,"resolution":"4","location":"assets","locale":"","width":1280,"height":720},"screenshot-5.png":{"filename":"screenshot-5.png","revision":3746892,"resolution":"5","location":"assets","locale":"","width":1280,"height":720}},"screenshots":{"1":"Getting started.","2":"Overview: connection, last 24 hours and recent decisions.","3":"Settings.","4":"The block page a blocked visitor sees.","5":"A blocked login attempt."}},"plugin_section":[262246],"plugin_tags":[2656,166108,362,212451,151081],"plugin_category":[54],"plugin_contributors":[286798],"plugin_business_model":[],"class_list":["post-384781","plugin","type-plugin","status-publish","hentry","plugin_section-dashboard-widgets","plugin_tags-anti-spam","plugin_tags-bot-protection","plugin_tags-captcha","plugin_tags-registration-spam","plugin_tags-vpn-blocker","plugin_category-security-and-spam-protection","plugin_contributors-ipscanner","plugin_committers-ipscanner"],"banners":{"banner":"https:\/\/ps.w.org\/ipscanner-bot-blocker\/assets\/banner-772x250.png?rev=3746915","banner_2x":"https:\/\/ps.w.org\/ipscanner-bot-blocker\/assets\/banner-1544x500.png?rev=3746915","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":"https:\/\/ps.w.org\/ipscanner-bot-blocker\/assets\/icon.svg?rev=3746892","icon":"https:\/\/ps.w.org\/ipscanner-bot-blocker\/assets\/icon.svg?rev=3746892","icon_2x":false,"generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/ipscanner-bot-blocker\/assets\/screenshot-1.png?rev=3746892","caption":"Getting started."},{"src":"https:\/\/ps.w.org\/ipscanner-bot-blocker\/assets\/screenshot-2.png?rev=3746892","caption":"Overview: connection, last 24 hours and recent decisions."},{"src":"https:\/\/ps.w.org\/ipscanner-bot-blocker\/assets\/screenshot-3.png?rev=3746892","caption":"Settings."},{"src":"https:\/\/ps.w.org\/ipscanner-bot-blocker\/assets\/screenshot-4.png?rev=3746892","caption":"The block page a blocked visitor sees."},{"src":"https:\/\/ps.w.org\/ipscanner-bot-blocker\/assets\/screenshot-5.png?rev=3746892","caption":"A blocked login attempt."}],"raw_content":"<!--section=description-->\n<p>A CAPTCHA alternative with no puzzle. IPScanner checks each visitor on the server and blocks bots before they reach your forms.<\/p>\n\n<p><strong>What it stops<\/strong><\/p>\n\n<ul>\n<li>Fake signups and spam registrations on WordPress and WooCommerce<\/li>\n<li>Comment spam and contact form spam<\/li>\n<li>Card-testing bots on WooCommerce checkout<\/li>\n<li>Login attacks from bots, Tor and proxies<\/li>\n<li>VPN and proxy traffic where you don't want it<\/li>\n<\/ul>\n\n<p>IPScanner checks each visitor with the IPScanner API and sorts them into one class: human, verified crawler, AI agent, malicious automation, Tor, VPN, proxy, hosting or privacy relay. You choose which classes to block and where.<\/p>\n\n<p><strong>Where it checks<\/strong><\/p>\n\n<ul>\n<li>Login, registration and password reset<\/li>\n<li>Comments<\/li>\n<li>WooCommerce checkout (classic and block checkout) and account registration<\/li>\n<li>Contact Form 7 and WPForms submissions<\/li>\n<li>The whole front end (optional, off by default)<\/li>\n<\/ul>\n\n<p>Forms get an error message. Pages get a short 403 page.<\/p>\n\n<p><strong>How it decides<\/strong><\/p>\n\n<ul>\n<li>Monitor mode records decisions and blocks nothing. Start here.<\/li>\n<li>Enforce mode blocks the classes you select. The default is malicious automation only.<\/li>\n<li>With a Site ID from the IPScanner dashboard, mode and per class policy (allow, flag, block) come from the dashboard, and changes apply within 30 seconds.<\/li>\n<li>Verified search engine and AI crawlers always pass.<\/li>\n<li>Administrators and the IP addresses or ranges you list are never blocked.<\/li>\n<\/ul>\n\n<p><strong>What it costs<\/strong><\/p>\n\n<p>Each new visitor check uses 2 requests from your IPScanner allowance. A visitor is checked at most once every 10 minutes. Static files, the admin area, AJAX, cron and REST requests are never checked.<\/p>\n\n<p><strong>Fail open<\/strong><\/p>\n\n<p>If the API is slow (1.5 second timeout by default), unreachable or out of allowance, visitors are allowed and checks pause for a short while.<\/p>\n\n<p><strong>Behind a proxy<\/strong><\/p>\n\n<p>Choose Cloudflare or X-Forwarded-For under Visitor IP. Proxy headers are only read from trusted proxy addresses (Cloudflare ranges are built in), so visitors cannot fake their address.<\/p>\n\n<h3>External services<\/h3>\n\n<p>This plugin connects to the IPScanner API at https:\/\/ipscanner.io, run by IPScanner. It is required for the plugin to work.<\/p>\n\n<ul>\n<li>When a protected form is submitted, or a page is viewed with whole site protection on, the plugin sends the visitor's IP address, user agent and these request headers: Accept, Accept-Language, Accept-Encoding, Sec-CH-UA and Sec-Fetch headers. It also sends a random request ID and your Site ID when one is set. Endpoint: <code>POST \/v1\/edge\/check<\/code>. Results are cached on your site for 10 minutes per visitor.<\/li>\n<li>With a Site ID set, the plugin reads the site's policy (no visitor data) at most every 30 seconds. Endpoint: <code>GET \/v1\/sites\/{site}\/policy<\/code>.<\/li>\n<li>When an administrator opens Settings &gt; IPScanner (at most every 5 minutes) or clicks Test connection, the plugin reads the plan and usage of the API key (no visitor data). Endpoint: <code>GET \/v1\/usage\/summary<\/code>.<\/li>\n<\/ul>\n\n<p>Nothing is sent before an API key is saved.<\/p>\n\n<p>Terms of service: https:\/\/ipscanner.io\/terms\nPrivacy policy: https:\/\/ipscanner.io\/privacy<\/p>\n\n<p>Source code: https:\/\/github.com\/ipscanner\/ipscanner-wordpress<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Install and activate the plugin.<\/li>\n<li>Create an API key at <a href=\"https:\/\/ipscanner.io\/dashboard\/apikeys\">ipscanner.io<\/a>.<\/li>\n<li>Go to Settings &gt; IPScanner, paste the key and choose what to protect.<\/li>\n<li>Optional: create a site in the <a href=\"https:\/\/ipscanner.io\/dashboard\/sites\">IPScanner dashboard<\/a> and paste its Site ID under Settings.<\/li>\n<li>Leave the mode on Monitor for a few days, check the Overview tab, then switch to Enforce.<\/li>\n<\/ol>\n\n<p>The key can also be set in wp-config.php with <code>define( 'IPSCANNER_API_KEY', 'pk_live_...' );<\/code>.<\/p>\n\n<!--section=faq-->\n<dl>\n<dt id=\"is%20it%20a%20captcha%3F\"><h3>Is it a CAPTCHA?<\/h3><\/dt>\n<dd><p>No. Visitors never solve a puzzle. The check runs on your server when a form is sent, and blocked visitors get an error message.<\/p><\/dd>\n<dt id=\"do%20i%20need%20an%20account%3F\"><h3>Do I need an account?<\/h3><\/dt>\n<dd><p>Yes. The plugin calls the IPScanner API with your API key. Any plan works. On the Free plan, sites managed from the dashboard run in monitor mode.<\/p><\/dd>\n<dt id=\"will%20it%20block%20google%20or%20bing%3F\"><h3>Will it block Google or Bing?<\/h3><\/dt>\n<dd><p>No. Verified search engine and AI crawlers always pass.<\/p><\/dd>\n<dt id=\"what%20happens%20if%20ipscanner%20is%20down%3F\"><h3>What happens if IPScanner is down?<\/h3><\/dt>\n<dd><p>Visitors are allowed. The plugin waits at most the configured timeout, then pauses checks for 30 seconds.<\/p><\/dd>\n<dt id=\"i%20locked%20myself%20out.\"><h3>I locked myself out.<\/h3><\/dt>\n<dd><p>Administrators who log in with the right password are let through while \"Always allow administrators\" is on. You can also add your IP to Always allow, or deactivate the plugin by renaming its folder.<\/p><\/dd>\n<dt id=\"does%20it%20work%20with%20page%20caching%3F\"><h3>Does it work with page caching?<\/h3><\/dt>\n<dd><p>Login, registration, comments, checkout and forms are not cached, so those checks always run. Whole site protection only runs for requests that reach WordPress, so pages served from a full page cache are not checked.<\/p><\/dd>\n<dt id=\"does%20it%20slow%20my%20site%20down%3F\"><h3>Does it slow my site down?<\/h3><\/dt>\n<dd><p>A first visit waits for one API call (usually well under a second). Repeat visits within 10 minutes use the cached result.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>0.1.3<\/h4>\n\n<ul>\n<li>Plugin renamed to \"IPScanner \u2013 Block Bots, VPNs &amp; Proxies\".<\/li>\n<\/ul>\n\n<h4>0.1.2<\/h4>\n\n<ul>\n<li>Overview tab with connection status, the last 24 hours and recent decisions.<\/li>\n<li>Getting started card for new sites.<\/li>\n<li>Settings grouped into sections.<\/li>\n<li>The \"Protected by IPScanner\" link on the block page is now off by default.<\/li>\n<\/ul>\n\n<h4>0.1.1<\/h4>\n\n<ul>\n<li>API key link opens the API keys page.<\/li>\n<\/ul>\n\n<h4>0.1.0<\/h4>\n\n<ul>\n<li>First release: visitor checks with monitor and enforce modes, dashboard site policy, login, registration, password reset, comment, WooCommerce, Contact Form 7 and WPForms protection, allowlist, trusted proxies, recent decisions.<\/li>\n<\/ul>","raw_excerpt":"Invisible CAPTCHA alternative. Stops fake signups, spam registrations, form spam and card-testing bots, plus VPN, proxy and Tor traffic.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/cn.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/384781","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/cn.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/cn.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/cn.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=384781"}],"author":[{"embeddable":true,"href":"https:\/\/cn.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/ipscanner"}],"wp:attachment":[{"href":"https:\/\/cn.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=384781"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/cn.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=384781"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/cn.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=384781"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/cn.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=384781"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/cn.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=384781"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/cn.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=384781"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}