Auf einigen Websites sind Honeypot-Fallen eingerichtet. Diese Mechanismen sollen Bots in Fallen locken, ohne dass dies von echten Nutzern bemerkt wird.
Links, die im HTML-Code einer Website enthalten sind, für Menschen jedoch unsichtbar sind, gehören zu den grundlegendsten Honeypot-Fallen. Um festzustellen, ob ein Link für echte Nutzer sichtbar ist oder nicht, sollten Sie dessen berechneten Stil überprüfen.
Hier ist ein Code-Beispiel mit zwei Funktionen, die eine Liste aller sichtbaren Links auf der Webseite zurückgeben. Die Funktion prüft für jeden Link, ob die Hintergrundfarbe mit der Textfarbe übereinstimmt. Sie verfügt außerdem über einen Parameter namens „strict“. Dieser weist die Funktion an, zu prüfen, ob der Link angezeigt wird oder ob er sichtbar ist, da nicht alle nicht angezeigten Links Honeypot-Fallen sind.
function getComputedBackgroundColor(elem) {
let isTransparent
do {
const bgColor = window.getComputedStyle(elem).backgroundColor
isTransparent = !/rgb\(|[1-9]{1,3}\)'$/.test(bgColor) // you can test this regex on regex101.com
if (isTransparent) {
elem = elem.parentElement
}
} while (isTransparent)
return window.getComputedStyle(elem).backgroundColor
}
function filterLinks(strict) {
let allLinksArray = Array.from(document.querySelectorAll('a[href]'));
console.log('There are ' + allLinksArray.length + ' total links');
let filteredLinks = allLinksArray.filter(link => {
let linkCss = window.getComputedStyle(link);
let isDisplayed = linkCss.getPropertyValue('display') != 'none';
let isVisible = linkCss.getPropertyValue('visibility') != 'hidden';
let computedBgColor = window.getComputedBackgroundColor(link)
let textColor = linkCss.textColor
if (strict) {
if (isDisplayed && isVisible && computedBgColor !== textColor) return link;
} else {
if (computedBgColor !== textColor) return link;
}
});
console.log('There are ' + filteredLinks.length + ' visible links');
}
In der Regel werden Honeypot-Fallen in Kombination mit Tracking-Systemen eingesetzt, die automatisierte Anfragen identifizieren können. Auf diese Weise kann die Website solche Anfragen auch dann als ähnlich erkennen, wenn zukünftige Anfragen nicht von derselben IP-Adresse stammen.