kiwa / link-obfuscator
使用PHP和JavaScript进行强大的链接混淆。面向对象,使用Rot47算法。隐藏电子邮件、电话和短信链接,防止被垃圾邮件机器人爬取。
Requires
- php: >=7.4
- bitandblack/helpers: ^1.6 || ^2.0
- matthiasmullie/minify: ^1.3
- tedivm/jshrink: ^1.3
Requires (Dev)
- phpstan/phpstan: ^1.0
- phpunit/phpunit: ^10.0
- rector/rector: ^0
- symplify/easy-coding-standard: ^12.0
README
Kiwa Link Obfuscator
使用PHP和JavaScript进行强大的链接混淆。面向对象,使用Rot47算法。隐藏电子邮件、电话和短信链接,防止被垃圾邮件机器人爬取。
安装
此库专为与Composer一起使用而设计。通过运行$ composer require kiwa/link-obfuscator将其添加到您的项目中。
用法
提供了三个类:Mail、Phone和SMS。所有这些都可以以相同的方式使用
<?php
use \Kiwa\LinkObfuscator\Mail;
echo new Mail('hello@bitandblack.com');
// Basically equal to <a href="mailto:hello@bitandblack.com">hello@bitandblack.com</a>
输出将是:<a data-href="%3E2%3A%3DE%40i96%3D%3D%40o3%3AE2%3F53%3D24%3C%5D4%40%3E" data-id="_klo0">|||96%3D%3D%40o3%3AE2%3F53%3D24%3C%5D4%40%3E</a>,后面跟着一些JavaScript代码。
有一些可用的参数
- 第一个是链接的href
- 第二个是链接描述
- 第三个可以是任何附加部分,如类名
- 如果链接描述也应加密。
使用它们,上面的示例将看起来像
<?php
use \Kiwa\LinkObfuscator\Mail;
echo new Mail('hello@bitandblack.com', 'Mail us', 'class="btn"', false);
// Basically equal to <a href="mailto:hello@bitandblack.com" class="btn">Mail us</a>
现在输出是:<a data-href="%3E2%3A%3DE%40i96%3D%3D%40o3%3AE2%3F53%3D24%3C%5D4%40%3E" data-id="_klo0" class="btn">给我们发邮件</a>,后面也跟着一些JavaScript代码。
然后JavaScript将解密链接。但不是将原始数据附加到页面上,而是将链接href存储在某些事件监听器中。因此,即使页面使用活动JavaScript进行解析,链接看起来也将是<a href="javascript:void(0);">hello<span>@</span>bitandblack.com</a>。
选项
加密
Kiwa Link Obfuscator默认使用Rot47算法。您可以通过使用AbstractLink::setEncryption(new MyCustomEncryption())添加自定义算法来更改此设置。请注意,该算法还需要在JavaScript中可用。
UID
所有链接ID的默认前缀为_klo。此ID存储为data-id,以保持id可供您使用。要更改前缀,您可以调用AbstractLink::setUidPrefix('myCustomPrefix')。
JavaScript
每个HTML链接都将在其末尾有自己的JavaScript代码。第一个还具有创建功能链接所需的功能。如果您在一页中有很多链接,希望保持页面DRY,或任何其他原因,您可以禁用此功能并按自己的方式使用代码。
有三种JavaScript代码部分可以禁用
<?php
use \Kiwa\LinkObfuscator\AbstractLink;
AbstractLink::disableAddingActionJS();
AbstractLink::disableAddingBasicJS();
AbstractLink::disableAddingEncryptionJS();
现在您可以将该代码添加到您的JavaScript文件中,例如通过编写
import { handleLink } from "/vendor/kiwa/link-obfuscator/src/Basic";
import { encrypt } from "/vendor/kiwa/link-obfuscator/src/Encryption/Rot47";
global.encrypt = encrypt;
现在需要一个自定义代码作为Action.js的替代品。这可能包括
const links = document.querySelectorAll("a[data-id^='_klo']");
links.forEach((link) => handleLink(link));
帮助
如果您有任何问题,请随时通过hello@bitandblack.com联系我们。
有关Bit&Black的更多信息,请访问www.bitandblack.com。