Jump to content

I'm attempting a bot detector using data gathered from llGetObjectDetails


Rainbow Fox
 Share

You are about to reply to a thread that has been inactive for 545 days.

Please take a moment to consider if this thread is worth bumping.

Recommended Posts

I'm sure you've all heard of those survey bots that pop into sims randomly. Some people see them as harmless, others see them as an intrusion. Especially if they pop into your skybox every 2 hours... I started to look for an LSL way to detect them. Sadly, there is no direct way. So I started observing the bots, and I noticed none of them have filled out profiles, All account ages are 13+ years or over 1, and none of them are in groups. Based off of that information, I started toying around with an avatar detector script I made, using llGetObjectDetails.

Using this command, I collected data on 3 bots today. Each had an OBJECT_TOTAL_SCRIPT_COUNT of 4, an OBJECT_SCRIPT_MEMORY of less than 262200, an OBJECT_SCRIPT_TIME of less than 0.000200, a blank OBJECT_GROUP_TAG (meaning no active group title), and an OBJECT_ATTACHED_SLOTS_AVAILABLE of over 30. Until LL gives us a proper way to detect a scripted agent, this is all I can come up with. But even this might misfire. A newbie may meet that criteria if they haven't acquired attachments or an avatar yet. Then again, I could also check account age. That will disregard newbs. I'm sure nobody will wait 13 years to finally get an avatar lol.

I will have to leave my bot detector running before I see pure commonality between bots. After all, that was just 3 bots... I also tried llGetAttachedList, but some of the bots have different clothes. So that was probably useless... If it detected something they all wore in common, or at the very least detected nothing, I would have had something to go on. Hopefully some of this was helpful to someone else, and maybe someone has a better way?

Why do I want to detect bots? To boot them off my land, of course. Just not anyone else... They seem to always choose my parcel. And I have no idea who runs these bots, so I can't contact them to ask them to stop. Automated trackers and data collectors are creepy. I know we live in an age where every social media platform is collecting data on us to share with advertisers and governments, but if I have a way to prevent it, I'm going to try. I have browser plugins to block such things. And not everyone can afford a private sim. Privacy shouldn't just be for the wealthy.

Edited by Rainbow Fox
  • Like 4
  • Haha 1
  • Confused 1
Link to comment
Share on other sites

4 hours ago, Rainbow Fox said:

So I started observing the bots, and I noticed none of them have filled out profiles, All account ages are 13+ years or over 1, and none of them are in groups

Just to point put that in the ones I am seeing, the opposite is the case regarding age, none of them are older than a few months. But your other observations about empty profiles is correct, and no picks either.

 

 

Link to comment
Share on other sites

Progress report;

I had a couple bots today with the same llGetObjectDetails results as yesterday. There is definitely commonality.

I also started messing with what I could do with llHTTPRequest. I can check if someone has a profile pic or description using this. The only issue is it can get throttled. The more I find, the more I'll share.

Also, to the question "why not ask them?", because they all behave exactly the same way. They pop into the same spots, then poof 1 second later. It's very obvious they're bots. They also seem to have multiple uses of the same name, like Brenden. That name must have been favored in their random name generator lol.

Edited by Rainbow Fox
  • Like 1
  • Haha 1
Link to comment
Share on other sites

6 hours ago, Extrude Ragu said:

What we really need is some sort of networked bot-security orb

It could work on a simple if enough land owners flag it as a bot.. Or pattern recognition.. ie an account that keeps being seen in totally unrelated sims moving around constantly is a safe bet is a bot

Indeed. Decades ago, we used to have something called Banlink, which allowed parcels and regions to share a ban list. I don't know if it's still around, or if anything similar exists today. I could see something like that being made to allow landowners to flag certain accounts as bots.

  • Haha 1
Link to comment
Share on other sites

The problem with networked ban lists for bots where people flag the accounts is that real people will inevitably get flagged for one reason or another and then start getting denied from places that the owners aren't really wanting to deny them access to.   All this without any proper way to appeal it and get removed.  We've already had enough drama around this, let's not make it worse.

  • Like 5
  • Thanks 1
Link to comment
Share on other sites

I was a part of a sandbox group that used Banlink before this account even existed.

It was a mess. Many groups banned over petty issues. Others, over hearsay/suspicions alone.

It got to a point where the land owner pretty much had to regularly choose to ignore new Banlink user's banlists and regularly had to deal with complaints from those banned in other places, many who never attended the place they were banned.

I think the lesson learned from it all was "Keep your banlists to yourself.".

Edited by Lucia Nightfire
  • Like 1
  • Thanks 2
Link to comment
Share on other sites

i dont see the fear, abhorence, or misunderstanding for not abiding an automated bot. of course, there's evil wherever we humans populate our worlds, so paranoids can justify their existence/behaviour. can we not all just get along? would you chase away Tyche Shepherd's gridsurvey bots? come on man, there's gotta be some good left in us.

Link to comment
Share on other sites

On 9/24/2022 at 1:29 PM, Lucia Nightfire said:

Maybe one day, we'll get OBJECT_SCRIPTED_AGENT and people won't have to resort to overhead that yields false negatives/positives.

This sure sounds like the most obvious solution! (I'm surprised it's not an option.)

All those bots are probably just trying to contact the OP about their car's extended warranty.

Link to comment
Share on other sites

On 9/25/2022 at 12:36 AM, Rainbow Fox said:

They pop into the same spots, then poof 1 second later.

What does your script solve, exactly?

It's very unlikely that the same bot will visit your parcel/sim again, more likely it's going to be a different account. So even if you could ban every visiting bot, you couldn't stop new ones from arriving.

  • Like 1
Link to comment
Share on other sites

10 hours ago, EnCore Mayne said:

i dont see the fear, abhorence, or misunderstanding for not abiding an automated bot. of course, there's evil wherever we humans populate our worlds, so paranoids can justify their existence/behaviour. can we not all just get along? would you chase away Tyche Shepherd's gridsurvey bots? come on man, there's gotta be some good left in us.

Are you really defending a bot???

It's not a living thing... It's lines of code, meant to carry out a function by a programmer. Nothing more. They don't respond / communicate in any way. That will ONLY change once someone creates a living example of Star Fleet's Commander Data or something...

Edited by Rainbow Fox
Link to comment
Share on other sites

6 hours ago, Wulfie Reanimator said:

What does your script solve, exactly?

It's very unlikely that the same bot will visit your parcel/sim again, more likely it's going to be a different account. So even if you could ban every visiting bot, you couldn't stop new ones from arriving.

Well, if the script detects commonality between bots, it will immediately eject and ban them on sight. I had my script running the past 2 days. Looks like the bots took sunday night off. No results.

Link to comment
Share on other sites

I'm releasing what code I've assembled in case anyone is interested in it. I didn't include llEjectFromLand(Target); since this is merely a detector script. You can add that if you want. Paste it above or below the "Bot Detected" line. I've been running the script most of a week. It has detected several presumed bots. However, I found it simpler to just deny parcel access for no payment on file, and add any friends who have no payment on file to the parcel access list to bypass that. However, people with Linden Homes can't do that.

Quote

float event_timer=1; // seconds
string desc_prefix = "<meta name=\"description\" content=\"";
string pic_prefix = "<meta name=\"imageid\" content=\"";
integer desc_prefix_length;
integer pic_prefix_length;
string url_prefix = "http://world.secondlife.com/resident/";
integer UserHasPic;
integer UserHasDesc;
default
{
    state_entry()
    {
        llSetTimerEvent(event_timer);
    }
    timer()
    {
        list avatarsInRegion=llGetAgentList(AGENT_LIST_PARCEL,[]);
        integer numOfAvatars=llGetListLength(avatarsInRegion);
        integer index;
        if (index < numOfAvatars)
        {
            integer number = index;
            key Target = llList2Key(avatarsInRegion, number);
            string name = llKey2Name(Target);
            string displayname = llGetDisplayName(Target);
            list TempScr = llGetObjectDetails(Target,[OBJECT_TOTAL_SCRIPT_COUNT]);
            list TempMem = llGetObjectDetails(Target,[OBJECT_SCRIPT_MEMORY]);
            list TempCPU = llGetObjectDetails(Target,[OBJECT_SCRIPT_TIME]);
            list TempGrp = llGetObjectDetails(Target,[OBJECT_GROUP_TAG]);
            list TempSlt = llGetObjectDetails(Target,[OBJECT_ATTACHED_SLOTS_AVAILABLE]);
            integer Scr=llList2Integer(TempScr,0);
            integer Mem=llList2Integer(TempMem,0);
            float CPU=llList2Float(TempCPU,0);
            string Grp=llList2String(TempGrp,0);
            integer Slt=llList2Integer(TempSlt,0);
            desc_prefix_length = llStringLength(desc_prefix);
            pic_prefix_length = llStringLength(pic_prefix);
            llHTTPRequest(url_prefix+(string)Target,[HTTP_METHOD,"GET"],"");
            if(Scr<=4&&Mem<=262200&&CPU<=0.000200&&Grp==""&&Slt>=30&&UserHasPic==0&&UserHasDesc==0)
            {
                llOwnerSay("Bot Detected");
            }
            else
            {
                //llOwnerSay("User Detected");
            }
        }
    }
    http_response(key req,integer stat, list met, string body)
    {
        integer s1 = llSubStringIndex(body,pic_prefix);
        integer s1l = pic_prefix_length;
        s1 += s1l;
        key UUID=llGetSubString(body, s1, s1 + 35);
        if(UUID==NULL_KEY)
        {
            UserHasPic=FALSE;
        }
        if(UUID!=NULL_KEY)
        {
            UserHasPic=TRUE;
        }
        integer d1 = llSubStringIndex(body,desc_prefix);
        string d11 = (string)llGetSubString(body, d1 + 34, d1 + 34);
        if(d11=="\"")
        {
            UserHasDesc=FALSE;
        }
        if(d11!="\"")
        {
            UserHasDesc=TRUE;
        }
    }
}

 

Link to comment
Share on other sites

  • 4 weeks later...
You are about to reply to a thread that has been inactive for 545 days.

Please take a moment to consider if this thread is worth bumping.

Please sign in to comment

You will be able to leave a comment after signing in



Sign In Now
 Share

×
×
  • Create New...