Форум Pawn.Wiki - Воплоти мечту в реальность!: Killer Captcha - Форум Pawn.Wiki - Воплоти мечту в реальность!

Перейти к содержимому

  • (2 Страниц) +
  • 1
  • 2
  • Вы не можете создать новую тему
  • Тема закрыта

Killer Captcha Оценка: -----

#1
Пользователь офлайн   M I S T E V 

  • Вставить ник
  • Раскрыть информацию
Killer Captcha создана, чтобы лучше защищать игру от ботов. Подключать необходимо после стандартных библиотек.

#include <captcha>

TogglePlayerCaptcha(playerid, bool:toggle)

  • playerid - ID игрока
  • toggle - включить (true) / отключить (false) капчу

Особенности:

  • Очень просто и не требует от игрока каких-либо трудоёмких действий. Достаточно просто потянуть за одну из стрелочек.
  • Настраиваемая чувствительность передвижения. CAPTCHA_MIN_OFFSET по умолчанию равняется 5.0, при увеличение необходимо дальше тянуть за стрелочку.

В скрипте реализованы автовызываемые функции:

OnPlayerCaptcha(playerid, response) // вызывается при использовании

  • CAPTCHA_RESPONSE_ON - когда игрок начал проверку
  • CAPTCHA_RESPONSE_OFF - когда игрок успешно закончил проверку
  • CAPTCHA_RESPONSE_ESCAPE - когда игрок нажал ESC или Save (не выводит из режима проверки)

Видео: [Показать]

Скачать:
captcha.inc [5,59К]


Больше не поддерживается.

Сообщение отредактировал M I S T E V: 12 сентября 2022 - 05:58

3

#2
Пользователь офлайн   M I S T E V 

  • Вставить ник
  • Раскрыть информацию
Использовать можно например так:

forward KickPlayer(playerid);

new playerTimer[MAX_PLAYERS];
new playerLastCheck[MAX_PLAYERS];

public OnPlayerCaptcha(playerid, response)
{
    switch(response)
    {
        case CAPTCHA_RESPONSE_ON: // когда игрок начал проверку
        {
            return playerTimer[playerid] = SetTimerEx("KickPlayer", false, 1000 * 15, "i", playerid); // запускаем таймер на 15 сек для проверки игрока 
        }

        case CAPTCHA_RESPONSE_OFF: // когда игрок закончил проверку
        {
            playerLastCheck[playerid] = gettime(); // сохраняем время последней проверки
            return KillTimer(playerTimer[playerid]); // отключаем таймер
        }
    }

    return 1;
}

public KickPlayer(playerid)
{
    return Kick(playerid);
}

// при проверки игрока делать так:
if(gettime() - playerLastCheck[playerid] > 3600)
    return TogglePlayerCaptcha(playerid, true); // проверяем, что если проверки не было час и более - запустим проверку

Сообщение отредактировал M I S T E V: 15 августа 2022 - 10:16

1

#3
Пользователь офлайн   DeimoS 

  • Evil Scripter
  • Вставить ник
  • Раскрыть информацию
Такую капчу обойти будет ещё проще, чем капчу на текстдравах :)
0

#4
Пользователь офлайн   M I S T E V 

  • Вставить ник
  • Раскрыть информацию

Просмотр сообщенияDeimoS (15 августа 2022 - 10:47) писал:

Такую капчу обойти будет ещё проще, чем капчу на текстдравах :)

Подожду пример этого, если это так, тогда удалю тему
0

#5
Пользователь офлайн   DeimoS 

  • Evil Scripter
  • Вставить ник
  • Раскрыть информацию
Так а какой пример? Этот редактор объектов целиком работает на стороне клиента. Клиент просто отсылает новую позицию объекта в момент, когда игрок отпускает одну из кнопок смены положения. Собственно, со стороны бота весь обход будет заключаться в том, чтоб отловить пакет EditPlayerObject, а после отправлять серверу пакеты с изменением координат по любой из осей, пока не сработает окончание редактирования объекта.

На капчу больше походил бы вариант, при котором создавалось бы несколько объектов на разном расстоянии и игроку нужно было бы передвигать объект так, чтоб из объектов получился какой-то определённый узор. Но и для обхода этой капчи (собственно, как и любой другой) достаточно будет записать данные, приходящие от сервера и уходящие к нему в момент, когда капча успешно решается, а после определить алгоритм, который был реализован со стороны сервера, чтоб просто подсовывать ему правильные данные.

В общем, как можно понять - в реалиях SAMP не получится создать надёжную капчу (если ты, конечно, не готов тысячи вариаций делать для своей капчи на старте и периодически столько же добавлять, чтоб нельзя было составить готовый алгоритм для всех вариаций твоей капчи). Максимум - подключать CEF и подгружать гугловскую капчу (ReCAPTCHA).
Хотя, к слову, и её уже умеют обходить и при помощи нейросеток, и при помощи ботов, в которые просто загрузили готовые решения для разных вариантов капч, предлагаемых этой системой :)

Сообщение отредактировал DeimoS: 15 августа 2022 - 11:19

0

#6
Пользователь офлайн   Pa4enka 

  • Профессионал
  • Вставить ник
  • Раскрыть информацию
А если предлагать игроку вписать ответы на общеизвестные вопросы? По типу викторины. Да, обойти тоже можно сформировав всю базу вопросов и ответов, но для этого разработчику бота придётся посидеть и покумекать несколько дней. А если ещё каждый месяц обновлять вопросы, то, возможно, шансы на успех такой капчи будут на порядок выше.
1

#7
Пользователь офлайн   Nexius 

  • Эксперт
  • Вставить ник
  • Раскрыть информацию

Просмотр сообщенияPa4enka (15 августа 2022 - 13:20) писал:

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

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

Имхо, в сампе капча как решение бесполезно. Есть острая нужда детектить ракботов и прочую автоматизированную пародию на реального игрока - ищите другие методы её прямого или косвенного обнаружения.

Сообщение отредактировал Nexius: 15 августа 2022 - 14:02

0

#8
Пользователь офлайн   DeimoS 

  • Evil Scripter
  • Вставить ник
  • Раскрыть информацию

Просмотр сообщенияPa4enka (15 августа 2022 - 13:20) писал:

Нажмите сюда, чтобы прочитать это сообщение. [Показать]


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

В общем, как ни крути, но наиболее надёжный вариант - подключать CEF и дёргать из интернета готовый вариант капч из какого-либо сервиса. Там и готовая база гораздо вариативнее будет, и рядовой SAMP-хацкер вряд ли сможет её обойти, ибо одних знаний какого-нибудь LUA и API moonloader тут явно будет недостаточно.

Другой вопрос - стоит ли оно того? Ибо если не показывать капчу достаточно часто, то и борьба с ботами будет достаточно посредственная. Если же показывать её часто - это будет сильно напрягать честных игроков.
1

#9
Пользователь офлайн   Pa4enka 

  • Профессионал
  • Вставить ник
  • Раскрыть информацию

Просмотр сообщенияDeimoS (15 августа 2022 - 14:06) писал:

Нажмите сюда, чтобы прочитать это сообщение. [Показать]

При всем уважении к тебе, но теории на грани фантастики :)

Как будет реализовано "вытаскивания ответов с гугла"?)) Имхо, вещь, крайне неблагодарная и сложна в реализации. В данном случаи, как ты выразился, рядовой SAMP-хацкер, тоже вряд ли сможет написать подобный софт, ведь, как минимум, нужно будет выбрать одно правильное слово с сотен других, но уже мусорных слов. А что касается, сбора статистики, то обновления базы вопросов и предлагалось мной как панацея.

По поводу твоего последнего абзаца - соглашусь. Как и с аналогичным утверждением Nexius'a.

Просмотр сообщенияNexius (15 августа 2022 - 13:57) писал:

Нажмите сюда, чтобы прочитать это сообщение. [Показать]

Да, к сожалению, придумать идеально простой и безопасный вариант в сампе невозможно. И, наверное, действительно, не целесообразно. Мой вариант хоть и утруждает игрока, но и исключает возможность простиллить правильный ответ несколькими проверками в LUA скрипте :)
0

#10
Пользователь офлайн   DeimoS 

  • Evil Scripter
  • Вставить ник
  • Раскрыть информацию

Просмотр сообщенияPa4enka (15 августа 2022 - 15:34) писал:

Как будет реализовано "вытаскивания ответов с гугла"?)) Имхо, вещь, крайне неблагодарная и сложна в реализации. В данном случаи, как ты выразился, рядовой SAMP-хацкер, тоже вряд ли сможет написать подобный софт, ведь, как минимум, нужно будет выбрать одно правильное слово с сотен других, но уже мусорных слов.


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

Просмотр сообщенияPa4enka (15 августа 2022 - 15:34) писал:

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


Панацея, которая будет спасать буквально день-два после выхода обновления в свет :)

Просмотр сообщенияPa4enka (15 августа 2022 - 15:34) писал:

идеально простой и безопасный вариант


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

Сообщение отредактировал DeimoS: 15 августа 2022 - 15:44

0

Поделиться темой:


  • (2 Страниц) +
  • 1
  • 2
  • Вы не можете создать новую тему
  • Тема закрыта

1 человек читают эту тему
0 пользователей, 1 гостей, 0 скрытых пользователей


Яндекс.Метрика