CaptchaTheFlag - Protect your game from bots

What if a literal baby is playing the game?

I don’t think i’m going too far here but maybe the best way of doing this is by adding images of stuff like buses, or books, or any children related object, and asking to click on a specific one.

3 Likes

Yes, and No.

If implemented intelligently it would be hard for the bot to bypass it, ie

What is Two plus Five?

Either way Information should be sent as a string not numbers,


What color is an Apple?

What is the Capital of Japan?

What when is Christmas?

What is your Username?

So on and so on, these are easy question that a bot wouldn’t be able to bypass easily.


I am concern about how the Captcha actually works tho, not that I would know but if I wrote these bots, they wouldn’t be using the TextBox, they’d just be spamming Chat RemoteEvents.

4 Likes

It’s a good creation. Helps developers keep their game clean from bots, but as FKAGamingDeOne said, it is easily bypassable. I recommend looping the action, that prevents bots from chatting, so if they enable the chat, it would un-enable it again, until captcha is solved.
Hope that helps.
I hope, that i didn’t do a mess.
Have a nice day.

1 Like

Yes something like that would be a bit effective

1 Like

Or maybe a fill in the blank. For example:

Appl_
Banan_
Orang_

That would be harder to bypass.

3 Likes

No, some kids don’t know how to spell, and not everyone speaks English.

Giving them multiple choice options would be better in this cause, we do not want to challenge the players intelligence.

Those are just ideas of simple question, I think using images might be your best bet.

What is this :poop:

  • Chocolate?
  • A monkey?
  • Ice cream?
  • Poop?

That is a bad example but you know what I mean.

11 Likes

Does custom chat systems not already protect a game from most bots?
Most are programmed to spam in the default Roblox chat, but what if you have that default chat disabled and have a custom one with a different keybind to chatting as well?

1 Like

I noticed you said that the failed attempts are recorded in version 2, I have a cool idea for that.

Step 0 : Create a ban script thingy in the section of the script. A table for the people who get loop kicked (aka banned).

Step 1 : Set game.ServerScriptService.Captcha.Deploy[player.Name].FailedAttempts.Value to a variable (“FailedAttemptVal” for this example)

Step 2 : Check if FailedAttemptVal is equal to or higher then 3, if it is then insert the player into the table that would put them to the list that would loop-kick.

I think this shoud be in the CaptchaTheFlag by default.

(Definetly not doing this right now.)

1 Like

This is for BOTS not EXPLOITERS.

2 Likes

@Ruben_Zanzus How would that work? Wouldn’t the filter be either the same or worse as the default one?

@airsoft561 That’s actually what I originally had in mind lol, I didn’t include it because I wanted the developer implementing the script to have the freedom to control what happens to the players themselves

Oh lol. Also, is it alright if I slap a script that would do what I had in mind in a reply to the topic?

Absolutely, I’m sure people would like to use it

Custom chats also need to use the Roblox filter so they’re technically the same filter wise.

But the name and location of the gui, chatboxes, etc might be entirely different and maybe you have the keybind to chatting set to “enter” instead of “/”
or maybe you have the chatbox on a entirely different location in which case a bot’s code would need to be adjusted in order to work.

1 Like

That would set the bots back, but they could just change their code. Its similar to this captcha in a way

1 Like

The two main types of colorblindness is red/green (usually males) and blue/yellow. I have yellow/blue so I find it hard to tell the difference between blue and green and the difference between yellow and pink. Generally blue and red are distinguishable by most colorblind people.

Those two options work well, or maybe a “click the apple” and it shows three different fruits.

5 Likes

Yes and no, they could change their code, but there are easy ways around this though.

It’s unlikely that bot code will be changed since only a few games may have this custom chat system, wouldn’t be worth the time, besides, if a bot tries to put messages in a chatbox, I think they do this with lua code too? Having a script change the name of the message box would help I assume there?

1 Like

You’re right, if only a minority of Roblox games use the chat then it won’t be worthwhile to add it into their code. I don’t think renaming would help because you can get Gui objects with functions like FindFirstChildOfClass

2 Likes

Simply have multiple chat boxes if the bot is lua code based, also assuming FindFirstChildOfClass() works by getting the object by name, alphabetically/in order, naming the textbox “A” or “12345” should cause said function to always return the fake textbox.

(Sorry for getting off-topic here OP, we shouldn’t discuss this here probs.)

2 Likes

I don’t think it’s the best idea for game developers to implement captchas. This is mostly because the bots’ code can easily bypass this.

There are several ways to do this. One would be to simply inject code into the client which will just get all the RGB colors of the frames, and determine which is more green by analyzing the RGB value or converting it to HSV and then analyzing it. The other way would be to simply implement a color detection algorithm, which is not too hard either.
Both ways will work very well, and I don’t know how well your captcha will be able to prevent this.

Even if you implement images, as Google’s reCAPTCHA, the bot can easily just get a database and store the asset-IDs of the images.

At the end of the day, it is the bots’ computers that are running your captcha’s code, and they will unfortunately always have the upper edge.

Edit: I just realized that your captcha won’t work on color blind people. I’m not talking necessarily about fully color blind people, but partially color blind people may struggle in passing your captcha.

3 Likes

Hey so, I got this and can you tell me where to put the script and how you made it work in your test game?