| 开发者 | brokensmile.2103 |
|---|---|
| 更新时间 | 2026年7月20日 02:48 |
| PHP版本: | 7.4 及以上 |
| WordPress版本: | 7.0 |
| 版权: | GPLv2 or later |
| 版权网址: | 版权信息 |
<script>, <style>, <pre>, <select>, <svg>, and similar elements; injection rate is configurable (1–50%)/wp-content/plugins/init-content-protector directory, or install via the WordPress plugin screen.If you enable full content encryption, search engines will not be able to see the content. Only use this option if SEO visibility is not required.
Yes. You can choose which post types are protected in the settings page.
Yes. You can set a custom key per site for added security.
Inline embeds the decryption key directly in page HTML — simple and works everywhere, but readable via view-source. Enhanced fetches the key from a REST API endpoint after page load instead, keeping it out of cached/static HTML and working cleanly with full-page cache plugins. Neither mode makes content truly secret from a visitor running the page's own JavaScript — both are meant to raise the bar for casual scrapers, not stop a determined human.
No, intentionally. Rate-limiting by visitor IP would mean storing one database row per unique IP with no automatic cleanup — on a busy or bot-scanned site that bloats the database worse than the scraping it aims to prevent. If you need rate limiting, apply it at your server, CDN, or WAF layer.
The plugin automatically detects AMP endpoints and skips all protection there (JS injection, encryption, noise), since AMP doesn't allow the custom scripts these features rely on.
Yes, via the "Noise Injection Rate" setting (1–50% per word, default 7%). Noise is only ever inserted into plain text — never inside HTML tags or inside elements like <script>, <style>, <select>, or <svg> — so it can't corrupt markup.
<img and src="..."), corrupting markup and breaking layout. Noise is now only ever injected into plain text runs between tags, never inside a tag itself.<script>, <style>, <pre>, <textarea>, <code>, <select>, <option>, <title>, and <svg> elements, since injecting spans there is invalid markup (breaks dropdowns, SVG rendering) or would corrupt whitespace-sensitive/non-visual content.aria-hidden="true" to noise spans as defense-in-depth (display:none already hides them from screen readers, this guards against the CSS failing to load).includes/rest-api.php): fetches the key via a REST API endpoint after page load instead of embedding it directly in page HTML. Keeps the key out of cached/static HTML and plays nicely with full-page cache plugins. Default "Inline" mode is unchanged for backward compatibility. Deliberately not rate-limited via per-IP transients — that pattern creates one wp_options row per unique visitor/bot IP with no active garbage collection, which would bloat the database far worse than the scraping it aims to prevent. Use server/CDN/WAF-level rate limiting if needed.wp_json_encode(false) producing a non-empty string.<code> tags in two settings descriptions were rendered as literal text instead of formatted code.devtools variable in content-protector.js..pot and Vietnamese .po/.mo translations for all new strings introduced in this release.decrypt.js and content-protector.js)crypto-js.min.js) strictly to encrypt mode