Trong hoax.tech, nhiều kiểu hành động với Black Page được hỗ trợ.
Loại hành động Set Cookie không dùng để tự động chuyển hướng sang Black Page; nó được sử dụng để đặt cookie chứa hash của flow cho các visitor hợp lệ (không phải bot), và kích hoạt một hành động được thiết lập sau đó.
Ví dụ về sự kiện:
Bot và moderator không có cookie khi thực hiện cùng hành động:
Ví dụ sau minh họa việc dùng Set Cookie để chuyển hướng visitor mục tiêu sau khi họ bấm nút.
Trong trường hợp này, user hợp lệ (không phải bot) sẽ được chuyển sang Black Page, còn bot và moderator sẽ chuyển sang white page thứ hai.
Bước 1. Tạo và cấu hình flow.
Bạn có thể nhập bất kỳ URL nào vào mục Black Page vì với hành động Set Cookie, sẽ không có chuyển hướng tự động sang Black Page.
Bước 2. Trong phần cấu hình tích hợp, chọn hành động Set Cookie.

Bước 3. Tích hợp script cloaking vào white page (https://setcookie.hoax.tech) theo cách PHP Integration tiêu chuẩn:
index.phpindex.php thành index2.php (nếu file chính là .html, đổi thành index2.php và đổi phần mở rộng thành .php)index.php đã tải từ flow vào thư mục gốc của websiteSau khi gửi traffic vào white page, bot và user thật đều ở lại trên cùng một trang — nhưng user thật sẽ nhận cookie chứa hash của flow.
Bước 4. Chèn đoạn script sau vào nút To Rent trên white page.
Script sau đây sẽ được tích hợp vào nút "To Rent":

Script sẽ kiểm tra cookie của người bấm nút và chuyển hướng:
document.querySelector("#BUTTON").addEventListener("click", function() {
function getCookie(name) {
const matches = document.cookie.match(new RegExp(
"(?:^|; )" + name.replace(/([.$?*|{}()[]\/+^])/g, '\\$1') + "=([^;]*)"
));
return matches ? decodeURIComponent(matches[1]) : null;
}
if (getCookie("FLOW_HASH")) {
window.location.href = atob("BASE64_BLACK_PAGE");
} else {
window.location.href = atob("BASE64_WHITE_PAGE");
}
});
Các biến:
BUTTON — ID của nút kích hoạt sự kiện.
FLOW_HASH — hash của flow tích hợp trong white page. Có thể copy trong mục Flows (https://hoax.tech/flows) hoặc ngay trên URL trình duyệt khi chỉnh sửa flow.
BASE64_BLACK_PAGE — URL Black Page mã hóa dạng Base64.
BASE64_WHITE_PAGE — URL White Page mã hóa dạng Base64.
Bước 5. Tìm ID của nút trong mã HTML của white page và copy.
Nếu nút không có ID, hãy đặt ID tùy ý — ví dụ: goldbutton.

Bước 6. Để bảo mật hơn, mã hóa các URL sang Base64.
Bạn có thể dùng công cụ như base64decode.org.

Bước 7. Thêm tất cả biến vào đoạn code.
Kết quả sẽ trông như sau:
document.querySelector("#goldbutton").addEventListener("click", function() {
function getCookie(name) {
const matches = document.cookie.match(new RegExp(
"(?:^|; )" + name.replace(/([.$?*|{}()[]\/+^])/g, '\\$1') + "=([^;]*)"
));
return matches ? decodeURIComponent(matches[1]) : null;
}
if (getCookie("4126123ffb74b745e81c70f3bfb686df")) {
window.location.href = atob("aHR0cHM6Ly9ibGFjay5ob2F4LnRlY2g=");
} else {
window.location.href = atob("aHR0cHM6Ly9zZXRjb29raWUuaG9heC50ZWNoL2NvbnRhY3QtdXM=");
}
});
Bước 8. Thêm đoạn script vào cuối file thực thi của white page (index2.php), đặt giữa thẻ <script> và </script>:

Bước 9. Lưu file.
Bạn cũng có thể làm rối mã (obfuscate) script JS để tránh bị crawler quảng cáo phát hiện.
Công cụ khuyến nghị: https://obfuscator.io/
Kết quả ví dụ:
function _0x44c4(){const _0xe4c0fc=['403347WWuKVP','8fEDpfp','27072aUCRWv','aHR0cHM6Ly9ibGFjay5ob2F4LnRlY2g=','addEventListener','9391824hodZYU','3726506YANKlF','4126123ffb74b745e81c70f3bfb686df','aHR0cHM6Ly9zZXRjb29raWUuaG9heC50ZWNoL2NvbnRhY3QtdXM=','768945BCWBCp','#goldbutton','1460530wQGfLy','8pIPjbO','href','click','(?:^|;\x20)','3695868Lymavf','location','replace','querySelector'];_0x44c4=function(){return _0xe4c0fc;};return _0x44c4();}function _0x21a8(_0x3ae868,_0x451a7c){const _0x44c499=_0x44c4();return _0x21a8=function(_0x21a859,_0xadcba8){_0x21a859=_0x21a859-0x18e;let _0x236e1f=_0x44c499[_0x21a859];return _0x236e1f;},_0x21a8(_0x3ae868,_0x451a7c);}const _0xed30a5=_0x21a8;(function(_0x37da8d,_0x52157d){const _0x4c2e78=_0x21a8,_0x43e449=_0x37da8d();while(!![]){try{const _0xda49f9=-parseInt(_0x4c2e78(0x19b))/0x1+parseInt(_0x4c2e78(0x19d))/0x2+parseInt(_0x4c2e78(0x190))/0x3*(parseInt(_0x4c2e78(0x193))/0x4)+parseInt(_0x4c2e78(0x192))/0x5+-parseInt(_0x4c2e78(0x197))/0x6+parseInt(_0x4c2e78(0x1a1))/0x7*(-parseInt(_0x4c2e78(0x19c))/0x8)+parseInt(_0x4c2e78(0x1a0))/0x9;if(_0xda49f9===_0x52157d)break;else _0x43e449['push'](_0x43e449['shift']());}catch(_0x107c00){_0x43e449['push'](_0x43e449['shift']());}}}(_0x44c4,0x4bb6d),document[_0xed30a5(0x19a)](_0xed30a5(0x191))[_0xed30a5(0x19f)](_0xed30a5(0x195),function(){const _0x8a7688=_0xed30a5;function _0x4d91d4(_0x1cc909){const _0x113a72=_0x21a8,_0x31c119=document['cookie']['match'](new RegExp(_0x113a72(0x196)+_0x1cc909[_0x113a72(0x199)](/([.$?*|{}()[]\/+^])/g,'\x5c$1')+'=([^;]*)'));return _0x31c119?decodeURIComponent(_0x31c119[0x1]):null;}_0x4d91d4(_0x8a7688(0x18e))?window[_0x8a7688(0x198)][_0x8a7688(0x194)]=atob(_0x8a7688(0x19e)):window[_0x8a7688(0x198)][_0x8a7688(0x194)]=atob(_0x8a7688(0x18f));}));
Cài đặt hoàn tất.
Dưới đây là ví dụ khác, trong đó visitor mục tiêu được chuyển sang Black Page, còn bot và moderator thì nút sẽ không hoạt động, và không cần white page thứ hai:
document.querySelector("#BUTTON").addEventListener("click", function() {
function getCookie(name) {
const matches = document.cookie.match(new RegExp(
"(?:^|; )" + name.replace(/([.$?*|{}()[]\/+^])/g, '\\$1') + "=([^;]*)"
));
return matches ? decodeURIComponent(matches[1]) : null;
}
if (getCookie("FLOW_HASH")) {
window.location.href = atob("BASE64_BLACK_PAGE");
}
});
Dưới đây là giải pháp có sẵn — popup Cookie Consent, một trong những cách phổ biến nhất để người dùng tương tác với website.
Sau khi nhấp vào bất kỳ nút nào, người dùng mục tiêu sẽ được chuyển hướng đến black page:

Đối với bot hoặc moderator, popup sẽ chỉ đơn giản đóng lại:


Tích hợp cloaking bằng tích hợp PHP cổ điển: tải file tích hợp index.php từ flow, đổi tên file index chính của White Page thành index2.php, và tải file index.php đã tải xuống lên thư mục White Page của bạn.
Tải template popup và đặt nó trên White Page.
Tải xuống template popup Cookie Consent
Thêm đoạn code tích hợp popup sau vào White Page ngay sau thẻ <body>:
<div id="cookieConsentBackdrop" class="cookieConsentBackdrop" aria-hidden="true" style="display: none;"></div>
<div id="cookieConsentPopup" class="cookieConsentPopup" data-hash="FLOW_HASH" data-key="BLACK_PAGE_BASE64_URL" role="dialog" aria-labelledby="cookieConsentHeading" aria-describedby="cookieConsentDescription" style="display: none;">
<p id="cookieConsentHeading" class="sr-only">Cookie Consent Popup</p>
<div id="cookieConsentDescription">
<p>
We value your privacy.
</p>
<p>
We use cookies to enhance your browsing experience and analyze our traffic. By clicking "Accept All", you consent to our use of cookies.
</p>
</div>
<div class="cookieConsentPopup-actions">
<button id="rejectBtn" class="cookieConsentPopup-btn cookieConsentPopup-btn--reject">Reject</button>
<button id="acceptBtn" class="cookieConsentPopup-btn cookieConsentPopup-btn--accept">Accept</button>
</div>
</div>
<script src="/script.js"></script>
Các tham số sau phải được chỉ định trong code:
FLOW_HASH - hash của flow được tích hợp trên White Page, có thể sao chép trong mục Flows (https://hoax.tech/flows), hoặc từ thanh địa chỉ khi chỉnh sửa flow.
BLACK_PAGE_BASE64_URL - link black page ở định dạng Base64.
Để mã hóa link black page sang Base64, bạn có thể sử dụng dịch vụ base64decode.org.

Chỉ định đúng đường dẫn đến template popup script.js. Nếu bạn đặt nó ở thư mục gốc của site, bạn không cần thay đổi đường dẫn.
Nếu cần, bạn có thể thay đổi nội dung popup và các nút.
Sau khi thêm code vào White Page, hãy kiểm tra cấu hình bằng các cách tiêu chuẩn.
Với loại hành động này, khả năng bảo vệ khỏi bot cao hơn, và bạn có thể gặp tỷ lệ mất traffic cao hơn. Tuy nhiên, nhóm người dùng không nhấp vào bất kỳ nút nào sẽ là nhóm ít quan tâm nhất đến sản phẩm hoặc dịch vụ của bạn.