odi1n / LowadiApi

Lowadi Bot
1 stars 0 forks source link

You're not simulating offsetX/offsetY #1

Open CrimsonVex opened 1 year ago

CrimsonVex commented 1 year ago

Care buttons have listeners:

execWhenReady(function(){$("#boutonBoire").on("click", function(event){$('#boutonBoire').css('position','absolute').fadeOut(500);$('#boutonBoire-inactive').css('position','relative').fadeIn(500);$('#form-do-drink472665eecf').val(event.offsetX);$('#form-do-drinkF8dab1062c').val(event.offsetY);$('#form-do-drink').submit();})});

These lines specifically: $('#form-do-....').val(event.offsetX); $('#form-do-....').val(event.offsetY);

This records the players X/Y mouse coordinate when button is clicked in browser. These values are collected to form spatial signatures to detect bots. This paper explains the method they're using.

Your bot isn't sending those integer values along with the Task requests in your PostAsync function.

Howrse expects values within the size of the button. You cannot fail to provide these numbers or generate these numbers pseudorandomly - this will result in detection.

For Howrse bots to successfully evade detection via spatial game signatures, it is not enough to use generic distributions, or in the case of the Random() function, a uniform distribution. This is VERY obvious and looks VERY different to the distributions of clicks on buttons from a true player.

I suggest you look into creating a custom Random() function that creates weighted random numbers that are customised to each button, based on the position on the screen. You can approximate this if you utilise Fitt's law, but I'd recommend using machine learning to generate numbers based on a database of mouse recordings from true player behaviour.

odi1n commented 1 year ago

As time will be, I will try to deal with it. If you have time, you can contribute to the project.