Сделать ссылку совершенно невидимой? - PullRequest
9 голосов
/ 06 сентября 2010

Я уверен, что многие думали об этом, но по какой-то причине я не могу найти его с помощью поиска Google и StackOverflow.

Я хотел бы сделать невидимую ссылку (занесенную в черный список роботами).txt) на страницу CGI или PHP, которая будет «ловить» вредоносных ботов и пауков.До сих пор я пробовал:

  1. Пустые ссылки в теле:

    <a href='/trap'><!-- nothing --></a>
    

    Это работает довольно хорошо большую часть времени, с двумя незначительными проблемами:

    Проблема: Ссылка является частью основной части документа.Несмотря на то, что с помощью мыши она практически не щелкается, некоторые посетители по-прежнему непреднамеренно нажимают на нее во время навигации по сайту с помощью клавиш Tab и Enter .Кроме того, если они копируют и вставляют страницу, например, в текстовый процессор или почтовое программное обеспечение, ссылка ловушки копируется и иногда даже активируется (некоторые программы не любят пустые теги <a> и копируют href каксодержимое тега).

  2. Невидимые блоки в теле:

    <div style="display:none"><a href='/trap'><!-- nothing --></a></div>
    

    Это устраняет проблему с навигацией с помощью клавиатуры, по крайней мере в браузерах, которые я тестировал.Ссылка фактически недоступна при обычном отображении страницы, но все еще полностью видна большинству пауков-ботов с их текущим уровнем интеллекта.

    Проблема: Ссылка по-прежнему является частью DOM,Если пользователь копирует и вставляет содержимое страницы, оно появляется снова.

  3. Внутри блоков комментариев:

    <!-- <a href='/trap'>trap</a> -->
    

    Это эффективно удаляет ссылку из DOMстр.Технически, комментарий все еще является частью DOM, но он достигает желаемого эффекта, что совместимые пользовательские агенты не будут генерировать элемент A, поэтому это не фактическая ссылка.

    Проблема: В настоящее время большинство ботов-пауков достаточно умны, чтобы анализировать (X) HTML и игнорировать комментарии.Я лично видел ботов, которые используют объекты Internet Explorer COM / ActiveX для анализа (X) HTML и извлечения всех ссылок через XPath или Javascript.Эти типы ботов не попадают в ловушку гиперссылки ловушек.

Я использовал метод № 3 до прошлой ночи, когда меня поразил рой ботов, которые кажутся действительно избирательнымипо каким ссылкам они следуют.Теперь я вернулся к методу №2, но все еще ищу более эффективный способ.

Есть предложения или другое решение, которое я пропустил?

Ответы [ 2 ]

12 голосов
/ 06 сентября 2010

Добавьте это, как вы сказали:

<a id="trap" href='/trap'><!-- nothing --></a>

А затем удалите его с помощью javascript / jQuery:

$('#trap').remove();

Спам-боты не выполняют javascript и не видят элемент, почти любой браузер удаляет элемент, делая невозможным попадание с помощью вкладок к нему

Редактировать: Самый простой способ без jQuery:

<div id="trapParent"><a id="trap" href='/trap'><!-- nothing --></a></div>

А затем удалите его с помощью JavaScript:

var parent = document.getElementById('trapParent');
var child = document.getElementById('trap');
parent.removeChild(child);
2 голосов
/ 06 сентября 2010

мне кажется, что это решение хорошо работает, к счастью, я добавил его в закладки.Я надеюсь, что это также поможет вам.

вы можете создать подобную скрытую ссылку и поместить ее в самый верхний левый угол вашей страницы, чтобы обычные пользователи не могли получить к ней слишком легкий доступ, вы можете использовать css для созданияизображение логотипа над этим изображением.

<a href="/bottrap.php"><img src="images/pixel.gif" border="0" alt=" " width="1" height="1"></a> 

, если вы заинтересованы в настройке, как занести в черный список ботов, обратитесь к этой ссылке для подробного объяснения как.

http://www.webmasterworld.com/apache/3202976.htm

...