WP Manifestindependent plugin directory
manifest / security / scrapelock

ScrapeLock – Content & AI Bot Protection

ScrapeLock – Content & AI Bot Protection for WordPress: blocks scrapers, AI training bots and fake Googlebots, rate limits, token-protected XML feeds.

★ 4stars
v2.5.0latest · 1d ago

Install

Download scrapelock.zip From the v2.5.0 release on GitHub, Oct 18, 2026

Upload it under Plugins → Add New Plugin → Upload Plugin, then activate.

Install straight from GitHub with WP-CLI:

wp plugin install https://github.com/george-tsoukakis/scrapelock/releases/download/v2.5.0/scrapelock.zip
No built-in updater. New versions won't appear under Dashboard → Updates. Install new releases yourself, or let Git Updater track the repository.

Server-side anti-scraping for WordPress and WooCommerce, by CodeBunny. Formerly Content Protect.

Most content protection plugins disable right click in the browser. Scrapers and AI crawlers never use a browser, so they are not affected. ScrapeLock works on the server:

  • Real search engines vs. fakes: Googlebot, Bingbot, Applebot and Yandex are verified against their official IP lists and with reverse + forward DNS.
  • AI training vs. AI search: training crawlers are blocked; AI search assistants can be allowed with one option.
  • Per-IP limits and temporary blocks for pages, searches and REST / GraphQL, plus an invisible bot trap.
  • Private XML feeds with a token (header or URL, only the hash is stored, rotation with a grace period).
  • Text hidden from the REST API, WPGraphQL and full-text RSS for visitors.
  • Ready-made Nginx, Apache and Cloudflare rules for your own site.
  • Emergency Mode, watermarks, copy-with-source, a block log and a TDM rights reservation.

The full description for the WordPress.org directory is in readme.txt. A user guide in Greek is in docs/user-guide-el.md.

Repository layout

Path Contents
scrapelock.php, includes/, assets/, languages/, uninstall.php, readme.txt The plugin, as installed in wp-content/plugins/scrapelock/
tests/ Tests on a real WordPress (HTTP, watermark, admin) and in Chromium
translations/ Greek translation (.po), for translate.wordpress.org
wporg-assets/ Icon, banner and screenshots for the WordPress.org page
docs/ User guide in Greek
CHANGELOG.md Changes per version

Download

Free, GPL-2.0-or-later. Get scrapelock.zip from the latest release and install it in WordPress with Plugins → Add New → Upload Plugin.

GitHub's Download ZIP also contains only the plugin (.gitattributes leaves the rest out), but its folder must be renamed to scrapelock before installing.

To publish a release: Actions → Release → Run workflow (on main), or push a version tag such as v2.2.2. .github/workflows/release.yml checks that the tag matches Version, PNCP_VERSION and Stable tag, builds the zip and attaches it.

Build and checks

mkdir -p dist
git archive --format=zip --prefix=scrapelock/ -o dist/scrapelock-$(sed -n 's/^ \* Version: *//p' scrapelock.php).zip HEAD
phpcs                 # WordPress Coding Standards (phpcs.xml.dist)
cd tests && WP_DIR=/path/to/wordpress BASE=http://127.0.0.1:8099 ./run-all.sh

The same checks run on GitHub Actions for every pull request (.github/workflows/ci.yml). The plugin zip is kept as an artifact for 3 days, then deleted automatically.

Upgrading from Content Protect

Deactivate Content Protect (folder content-protect) and activate ScrapeLock. Settings, feed tokens and the block log are kept. If you pasted the old Apache rules, replace the # BEGIN Content Protect block with the new # BEGIN ScrapeLock block from the "Server rules" tab.

License

GPLv2 or later.

Releases

1 release. Each count is every asset in that release; expand a row for the breakdown.

Tag
Published
Assets
Downloads
v2.5.0 latest
Oct 18, 2026 1d ago
scrapelock.zip +1 asset
0
scrapelock.zip0
scrapelock-2.5.0.zip0