Сделать ссылку полностью невидимой?

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

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

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

     

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

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

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

     
    

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

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

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

      trap  ->
    

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

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

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

Любые предложения, a = a.match (/ (^ \% \ w +) ([\. | \ #] \ w +) + /) m работает над некоторым кодом SocketChannel-to-SocketChannel, который лучше всего справится с прямым байтовым буфером - долгоживущим и большим (от десятков до сотен мегабайт на соединение). При хешировании точного ...

Я работаю на некотором коде SocketChannel -to- SocketChannel , который лучше всего работает с прямым байтовым буфером - долгоживущим и большим (от десятков до сотен мегабайт на соединение). структура цикла с FileChannel s, я провел несколько микро-тестов производительности ByteBuffer.allocate () по сравнению с ByteBuffer.allocateDirect () .

сюрприз в результатах, который я не могу объяснить. На приведенном ниже графике есть очень явный провал в 256 КБ и 512 КБ для ByteBuffer. allocate () реализация передачи - производительность упала на ~ 50%! Также кажется, что для ByteBuffer.allocateDirect () падение производительности должно быть меньше. (Серия% -gain помогает визуализировать эти изменения.)

Размер буфера (байты) в зависимости от времени (MS)

The Pony Gap

Почему нечетная разница в кривой производительности между ByteBuffer.allocate () и ] ByteBuffer.allocateDirect () ? Что именно происходит за кулисами?

Это очень хорошо, возможно, зависит от оборудования и ОС, поэтому вот эти подробности:

  • MacBook Pro с двухъядерным процессором Core 2 CPU
  • SSD-накопитель Intel X25M
  • OSX 10.6.4

Исходный код, по запросу: 7 в / Library / Frameworks . Я компилирую для Mac OS X 4, поэтому у меня также есть Python 2.3 в /Developer/SDKs/MacOSX10.4u.sdk/System/Library/Frameworks . Если я вызываю gcc с -F / Library / Frameworks и смотрю, что он делает с -v , я вижу следующее:

ignoring duplicate directory "/Library/Frameworks"
  as it is a non-system directory that duplicates a system directory

#include "..." search starts here:
#include <...> search starts here:
 
 /Developer/SDKs/MacOSX10.4u.sdk/System/Library/Frameworks (framework directory)
 /Developer/SDKs/MacOSX10.4u.sdk/Library/Frameworks (framework directory)

Т.е. он игнорирует my / Library / Frameworks , потому что он является дубликатом (последнего пути, который является символической ссылкой на / Library / Frameworks ), а затем находит собственный фреймворк Python 2.3 до моего 2.7.

Я понимаю, как это обойти (например, используйте -I с полным путем к подключаемому каталогу), но меня несколько озадачивает порядок поиска. Например, компоновщик ( ld ) , похоже, выполняет поиск в системе / библиотеке и библиотеке в другом порядке . Допустим, у меня есть два черных изображения с 50% прозрачностью (альфа = 0,5). если они накладываются друг на друга, ...

позволяет предположить, что альфа 1 означает полностью непрозрачный, а 0 означает полностью прозрачный. m в настоящее время использует devise для аутентификации ...

Мне нужна таблица User, а затем таблица UserInstance ... Таблица UserInstance будет выглядеть так:

ID | domain 
 1 | yahoo.com 
 2 | github.com 
 3 | abc.com

Я бы хотел, чтобы для каждой записи в таблице user иметь InstanceID с идентификатором из таблицы UserInstance. Во время регистрации UserInstance либо обнаруживается, либо назначается (уникальный) .... Тогда все записи в БД будут иметь InstanceID. Теперь, когда всем пользователям назначен instanceID ... Я бы хотел, чтобы все, что пользователь, вошедший в систему, видит на сайте, было только для их InstanceID, чтобы информация о компании была изолирована.

Вопрос: Я хотел бы, чтобы каждая запись в пользовательской таблице имела InstanceID, который имеет идентификатор из таблицы UserInstance. Во время регистрации UserInstance либо обнаруживается, либо назначается (уникальный) .... Тогда все записи в БД будут иметь InstanceID. Теперь, когда всем пользователям назначен instanceID ... Я бы хотел, чтобы все, что пользователь, вошедший в систему, видит на сайте, было только для их InstanceID, чтобы информация о компании была изолирована.

Вопрос: Я хотел бы, чтобы каждая запись в пользовательской таблице имела InstanceID, который имеет идентификатор из таблицы UserInstance. Во время регистрации UserInstance либо обнаруживается, либо назначается (уникальный) .... Тогда все записи в БД будут иметь InstanceID. Теперь, когда всем пользователям назначен instanceID ... Я бы хотел, чтобы все, что пользователь, вошедший в систему, видит на сайте, было только для их InstanceID, чтобы информация о компании была изолирована.

Вопрос: 1. Как изменить устройство для поддержки таблицы UserInstance, присвоить или создать, а затем присвоить instanceID при регистрации

Пока я здесь, /app/models/user.rb

class User < ActiveRecord::Base
  devise :database_authenticatable, :registerable,
         :recoverable, :rememberable, :trackable, :validatable
  attr_accessible :email, :password, :password_confirmation, :remember_me

    after_create :assign_user_to_instance

    def assign_user_to_instance
        logger.debug "Called after the account was created"
    end

end

Что я хотел бы увидеть в assign_user_to_instance происходит следующее:

def assign_user_to_instance
 Step 1, extract the user's domain from the email address they just registered with
 Step 2, does this domain from s1 exist in the UserInstance Table (domain)?
 Step 2b, if not create it and grab the UserInstance.ID
 Step 2c, if it does, grab the already available UserInstanceID
 Step 3, assign the UserInstanceID to the user's record in the user table
end

Мы будем очень признательны за любую помощь в реализации псевдокода.

Спасибо!

1
задан jigfox 7 September 2010 в 15:40
поделиться