Программное обнаружение бота

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

list1 = [1,1,1,1,1,1,5,1,1,1]

def single_difference(lst):
    most_common = max(set(lst), key=lst.count)
    diff_idx = None
    diff_val = None
    for idx, i in enumerate(lst):
        if i != most_common:
            if diff_val is not None:
                return "No unique single difference"
            diff_idx = idx
            diff_val = i
    return (most_common, diff_val, diff_idx)

print(single_difference(list1))
16
задан JJJ 20 July 2012 в 08:48
поделиться

9 ответов

Разъясните, почему Вы хотите исключить ботов, и насколько терпимый Вы имеете неправильную классификацию.

Таким образом, необходимо ли исключить каждого бота за счет обработки реальных пользователей как боты? Или это хорошо, если боты проверяют Ваш сайт, пока они не оказывают влияние производительности?

Единственный способ исключить всех ботов состоит в том, чтобы закрыть Ваш веб-сайт. Злонамеренный пользователь может распределить их бота достаточному количеству машин, что Вы не смогли бы отличить их трафик от реальных пользователей. Приемы как JavaScript и CSS не остановят решительного взломщика.

Если "золотая середина" является удовлетворительной, один прием, который мог бы быть полезным, должен скрыть ссылки с CSS так, чтобы они не были видимы пользователям в браузере, но были все еще в HTML. Любой агент, который следует за одним из этих "яд", связывается, бот.

8
ответ дан 30 November 2019 в 21:46
поделиться

Агенты пользователя могут фальсифицироваться. Капчи были взломаны. Допустимые cookie можно передать обратно Вашему серверу с запросами страницы. Законные программы, такие как Adobe Acrobat Pro могут войти и загрузить Ваш веб-сайт на одной сессии. Пользователи могут отключить JavaScript. С тех пор нет никакой стандартной меры "нормального" пользовательского поведения, оно не может дифференцироваться от бота.

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

8
ответ дан 30 November 2019 в 21:46
поделиться

Простым тестом является JavaScript:

<script type="text/javascript">
document.write('<img src="/not-a-bot.' + 'php" style="display: none;">');
</script>

Не-bot.php может добавить что-то в сессию для установки флага этого, пользователь не является ботом, затем возвратите единственный пиксель gif.

URL разбит для маскировки его от бота.

2
ответ дан 30 November 2019 в 21:46
поделиться

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

Большинство ботов не запускает JavaScript. Используйте JavaScript, чтобы сделать Ajax как вызов к серверу, который идентифицирует этот IP-адрес как NonBot. Хранилище это в течение промежутка времени набора, чтобы определить будущие соединения от этого IP как хорошие клиенты и предотвратить далее расточительные вызовы JavaScript.

2
ответ дан 30 November 2019 в 21:46
поделиться

Для каждой сессии на сервере можно определить, был ли пользователь при каком-либо нажатии точки или вводе слишком быстро. После данного количества повторений набор "isRobot" отмечают к истинному и сохраняют ресурсы в рамках той сессии. Обычно Вы не говорите пользователю, что он был обнаружен роботом, так как он только запустит новую сессию в этом случае.

1
ответ дан 30 November 2019 в 21:46
поделиться

Ну, это действительно для конкретной страницы сайта. Мы не хотим бота, отправляющего форму b/c, она портит отслеживание. Честно, дружественные боты, Google, Yahoo, и т.д. не являются проблемой, поскольку они обычно не заполняют форму для начала. Если бы мы подозревали кого-то в том, что он бот, то мы могли бы показать им капчу или что-то как этот... Если они передали, они не бот, и форма отправляет...

Я услышал вещи как помещение формы во флэш-памяти или создания отправлять JavaScript, но я предпочел бы не препятствовать тому, чтобы реальные пользователи использовали сайт, пока я не подозревал, что они были ботом...

0
ответ дан 30 November 2019 в 21:46
поделиться

Я думаю Ваша идея с проверкой, что идентификатор сессии уже будет довольно полезен.

Другая идея: Вы могли проверить, загружаются ли встроенные ресурсы также.

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

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

0
ответ дан 30 November 2019 в 21:46
поделиться

Эй, спасибо за все ответы. Я думаю, что комбинация нескольких предложений будет работать хорошо. Главным образом, скрытый элемент формы, что времена, как быстро форма была заполнена, и возможно "ядовитая идея" ссылки. Я думаю, что это покроет большую часть основания. Когда Вы говорите о ботах, Вы не собираетесь находить их всех, таким образом, нет никакого смысла, думая, что Вы будете... Глупые боты.

0
ответ дан 30 November 2019 в 21:46
поделиться

Вот идея:

Большинство ботов не загружают CSS, JavaScript и изображения. Они просто разбирают HTML.

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

3
ответ дан 30 November 2019 в 21:46
поделиться
Другие вопросы по тегам:

Похожие вопросы: