kiwa/link-obfuscator

使用PHP和JavaScript进行强大的链接混淆。面向对象,使用Rot47算法。隐藏电子邮件、电话和短信链接,防止被垃圾邮件机器人爬取。

1.1.0 2023-12-18 12:06 UTC

This package is auto-updated.

Last update: 2024-09-18 13:51:07 UTC


README

PHP from Packagist Codacy Badge Latest Stable Version Total Downloads License

Kiwa Link Obfuscator

使用PHP和JavaScript进行强大的链接混淆。面向对象,使用Rot47算法。隐藏电子邮件、电话和短信链接,防止被垃圾邮件机器人爬取。

安装

此库专为与Composer一起使用而设计。通过运行$ composer require kiwa/link-obfuscator将其添加到您的项目中。

用法

提供了三个类:MailPhoneSMS。所有这些都可以以相同的方式使用

<?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代码。

有一些可用的参数

  1. 第一个是链接的href
  2. 第二个是链接描述
  3. 第三个可以是任何附加部分,如类名
  4. 如果链接描述也应加密。

使用它们,上面的示例将看起来像

<?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