A preserved archive of the Logical Gamers community forums, 2009-2025. The original threads and posts, served read-only. Registration, posting and private messages are gone for good.

Market Bot Question

2.1k views · started by Yetty ·
#1
Market Bot Question
Hey guys, so I'm using cyanide's release of the marketplace bot script for tampermonkey. It has been working great. I plan on using it for no more than 3 hours per day and at a minimum refresh rate of about 25 seconds for better safety. Also I only use it when I am online / semionline so that it is not the only page being used over and over, kind of to hide it in and mix it up. Anyways my question is, based on how I plan to use it how safe do you think it is? chances of getting banned? for those of you that have experience with bots (preferably marketplace bots) what worked best for you? and have you ever been banned? Thanks.
#2
Chances of getting banned could be pretty high if it doesn't have built-in timers or delays or anything like that. You also might want to be careful, though, because you could lose tons of money because of the fact that the program doesn't auto-update the prices.
#3
I took out almost everything out of the item list. So I'm not worried about the item part but the ban part.

As for the delay, It seems to only refresh at the same time set. so for example every 25 seconds. I stopped using it for now since I was wondering if there was a way to make it refresh at a random time between 2 set time frames. For example any random time between 20 - 60 seconds. I went ahead and asked the creator see what he had to say.

EDIT:
and for better security I plan to only use it WHILE browsing gaia etc, so that it's not the only page being used over time. I don't plan to leave it running over night and stuff like that.
#4
If you only have the 25 second on the second delay them your chances of getting banned are pretty high since no one sits there and refreshes the page every 25 seconds for 3 hours straight. I don't know about Gaia but when I used to autobuy on neopets I had it set up to AB for and hour then stop and go refresh around the website for about 20-30minutes then go back to abing in that cycle for about 5-6 hours. Using that method I only had one account get banned and it was my suicide account that ran for like 3 days straight (got about 800m profit to my main before it got iced)
#5
Well what I did is try to make it mimick my own vending patterns. Namely refreshing usually about twice a second, sometimes taking a few seconds to look at something more closely, sometimes taking half a minute to check facebook, sometimes taking a few minutes to talk to my roommate, etc. I tried to make it functionally indistinguishable from me sitting behind the keyboard.

I also used Adblock not only to speed things up, but also to block any outgoing AJAX requests because I'm paranoid like that (putting * on your block list will do that). I doubt Gaia will be putting anti-bot javascript into the marketplace any time soon but like I said, I'm paranoid. And even if they did, the bot dot doesn't do any of the easily detectable stuff like altering the DOM.

So assuming you can write delay code that reasonably mimicks a human being, and Gaia doesn't get ultra militant about marketplace bots, I think you should be ok. But botting is always risky of course. Personally I got to the point where I could afford almost anything I wanted and decided to stop because you never know when your time's up.

Oh also I'd definitely advise against browsing Gaia while running it. That would be some very fishy multitasking. Probably the safest thing to do if you're worried would be to run it for like half an hour, stop it, check your messages, sell some stuff, and start it up again.

And yes you definitely shouldn't have it refresh with a set time with no variation. The code that's in there by default is fairly similar to the code I used, and that has a ton of variation. If you want to do your own (which I would advise if you're able to), quick lesson:

wait_time = 700 + (Math.random()*2-1)*400;

That waits a random time between 300 and 1100 milliseconds. The 700 is your average wait time in milliseconds, and the 400 is the range. Math.random()*2-1 generates a uniform random number between -1 and 1.

Even better:

wait_time = 1500 + (Math.random()*2-1 + Math.random()*2-1 + Math.random()*2-1)*400;

This creates a normal distribution which is more natural and human than a uniform distribution (above). That should create a normal distribution with a standard deviation of 400 and a maximum deviation of 1200 (think bell-curve).
#6
Yea I use it for a max of 3 hours but not continuous xD. Total in a day. And since I'm also browsing the site on a separate tab (posting etc) it makes it look more legit. It's also why I want to know how to make the refresh be random times between a set of given time delays, so its not at an exact amount of time. Thanks for the feedback though, I wont be using it much for the moment until I can find a way to make the times be random.
#7
cyanide wrote:
Well what I did is try to make it mimick my own vending patterns. Namely refreshing usually about twice a second, sometimes taking a few seconds to look at something more closely, sometimes taking half a minute to check facebook, sometimes taking a few minutes to talk to my roommate, etc. I tried to make it functionally indistinguishable from me sitting behind the keyboard.

I also used Adblock not only to speed things up, but also to block any outgoing AJAX requests because I'm paranoid like that (putting * on your block list will do that). I doubt Gaia will be putting anti-bot javascript into the marketplace any time soon but like I said, I'm paranoid. And even if they did, the bot dot doesn't do any of the easily detectable stuff like altering the DOM.

So assuming you can write delay code that reasonably mimicks a human being, and Gaia doesn't get ultra militant about marketplace bots, I think you should be ok. But botting is always risky of course. Personally I got to the point where I could afford almost anything I wanted and decided to stop because you never know when your time's up.

Oh also I'd definitely advise against browsing Gaia while running it. That would be some very fishy multitasking. Probably the safest thing to do if you're worried would be to run it for like half an hour, stop it, check your messages, sell some stuff, and start it up again.

And yes you definitely shouldn't have it refresh with a set time with no variation. The code that's in there by default is fairly similar to the code I used, and that has a ton of variation. If you want to do your own (which I would advise if you're able to), quick lesson:

wait_time = 700 + (Math.random()*2-1)*400;

That waits a random time between 300 and 1100 milliseconds. The 700 is your average wait time in milliseconds, and the 400 is the range. Math.random()*2-1 generates a uniform random number between -1 and 1.

Even better:

wait_time = 1500 + (Math.random()*2-1 + Math.random()*2-1 + Math.random()*2-1)*400;

This creates a normal distribution which is more natural and human than a uniform distribution (above). That should create a normal distribution with a standard deviation of 400 and a maximum deviation of 1200 (think bell-curve).


Yea the max I would run it at once was 30 mins. And I'm not like camping gaia when I'm on also. I just post and then switch to something else (watch t.v, study, hw etc) since I use it on my laptop. I also made sure to setup AdBlock as mentioned. I don't really know coding and all, just a few basics, anyways here is how I currently have it set at:

    else
{
while (wait_time < 230)
{
wait_time = (Math.random()*2-1 + Math.random()*2-1 + Math.random()*2-1)*300/3 + 21400;
}
}


So I know that it only refreshed at about 22 seconds due to the last part I got there in miliseconds, just not sure how to edit it to make the delays have a bigger range (for example minimum 25 seconds maximum 1 minute)
Thanks again.
#8
Yetty wrote:
Yea the max I would run it at once was 30 mins. And I'm not like camping gaia when I'm on also. I just post and then switch to something else (watch t.v, study, hw etc) since I use it on my laptop. I also made sure to setup AdBlock as mentioned. I don't really know coding and all, just a few basics, anyways here is how I currently have it set at:

    else
{
while (wait_time < 230)
{
wait_time = (Math.random()*2-1 + Math.random()*2-1 + Math.random()*2-1)*300/3 + 21400;
}
}


So I know that it only refreshed at about 22 seconds due to the last part I got there in miliseconds, just not sure how to edit it to make the delays have a bigger range (for example minimum 25 seconds maximum 1 minute)
Thanks again.


Ah yeah ok. The 300 is the range in this case. But if you're using such a big time interval, I would recommend using a uniform distribution instead of a Guassian distribution. So it would just be:

wait_time = (Math.random()*2-1)*17500 + 42500;

The average wait time is 42500, but it can go 17500 higher or lower than that (aka between 25 and 60 seconds)

If you want to use a Gaussian distribution (with maximum of 3 standard deviations) it would be:

wait_time = (Math.random()*2-1 + Math.random()*2-1 + Math.random()*2-1)*17500/3 + 42500;

But Guassian IMO is not suited for bigger wait times, only small sub-second wait times. Idk that's getting psychology a little lol but that's my gut instinct.
#9
cyanide wrote:
Ah yeah ok. The 300 is the range in this case. But if you're using such a big time interval, I would recommend using a uniform distribution instead of a Guassian distribution. So it would just be:

wait_time = (Math.random()*2-1)*17500 + 42500;

The average wait time is 42500, but it can go 17500 higher or lower than that (aka between 25 and 60 seconds)

If you want to use a Gaussian distribution (with maximum of 3 standard deviations) it would be:

wait_time = (Math.random()*2-1 + Math.random()*2-1 + Math.random()*2-1)*17500/3 + 42500;

But Guassian IMO is not suited for bigger wait times, only small sub-second wait times. Idk that's getting psychology a little lol but that's my gut instinct.

Yeah that's what I though on the 300.

So replacing it with this one will be just fine correct? -
wait_time = (Math.random()*2-1)*17500 + 42500;

I don't plan to get rich asap, just to slightly boost my sales and profits to avoid the ban hammer lol. Thanks again for writing this and the additional help. I will post some feedback on how I manage with this. Will only use now and then for no more than an hour at a time and with these semi - high delays.
#10
Yetty wrote:
Yeah that's what I though on the 300.

So replacing it with this one will be just fine correct? -
wait_time = (Math.random()*2-1)*17500 + 42500;

I don't plan to get rich asap, just to slightly boost my sales and profits to avoid the ban hammer lol. Which is why I plan to use it pretty much for the new Rig bundles since they go up and down all the time. I had it set to buy them at 810k and under and sold them for 850k. Little profit but when I ran it for about 2 hours total in a day i was able to buy and sell 17 bundles and make at least 300k in profits, which is fine for me. Thanks again for writing this and the additional help. I will post some feedback on how I manage with this. Will only use now and then for no more than an hour at a time and with these semi - high delays.


Yes that's right. Well, actually, what's above the else? Did you take out the rest of the delay code? So the bottom of your script should just be:

if (!link_opened)
{
var wait_time = 0;
var rand = Math.random();

wait_time = (Math.random()*2-1)*17500 + 42500;

setTimeout("location.reload(true);",wait_time);
}


That will do what you described.

EDIT: Leaving in the while loop around wait_time = (Math.random()*2-1)*17500 + 42500; like you did above won't hurt either.

Personally I wouldn't be too public about how you're using it xD
#11
cyanide wrote:
Yes that's right. Well, actually, what's above the else? Did you take out the rest of the delay code? So the bottom of your script should just be:

if (!link_opened)
{
var wait_time = 0;
var rand = Math.random();

wait_time = (Math.random()*2-1)*17500 + 42500;

setTimeout("location.reload(true);",wait_time);
}


That will do what you described.

EDIT: Leaving in the while loop around wait_time = (Math.random()*2-1)*17500 + 42500; like you did above won't hurt either.

Personally I wouldn't be too public about how you're using it xD

I only replaced that line, and it works fine. And don't worry about the public thing, I plan to change the time range every time I use it. As I said I don't plan to rely on this to be my main income / get rich out of it super fast. Just mainly for a few bundle sales and the occasional miss price xD. Will probably use it about 5-7 hours a week total on and off. Thanks again for your support.
#12
removed
#13
Seems to be only on your end.
#14
cyanide wrote:
Np but if you just changed that one line it won't work quite like you want I will explain. While on first glance it might look like it's refreshing about every 25-60 seconds if you watch it for a bit you will see it sometimes refresh in less than one second and sometimes more than 100. In the default:

    var wait_time = 0;
var rand = Math.random();

if (rand < 0.01)
{
wait_time = 700 + (Math.random()*2-1)*400;
}
else if (rand < 0.02)
{
wait_time = 1500 + (Math.random()*2-1)*600;
}
if (rand < 0.03)
{
wait_time = 5000 + (Math.random()*2-1)*3500;
}
else if (rand < 0.0335)
{
wait_time = 10000 + (Math.random()*2-1)*5000;
}
else if (rand < 0.0355)
{
wait_time = 50000 + (Math.random()*2-1)*40000;
}
else if (rand < 0.0365)
{
wait_time = 100000 + (Math.random()*2-1)*40000;
}
else if (rand < 0.0370)
{
wait_time = 200000 + (Math.random()*2-1)*80000;
}
else if (rand < 0.012)
{
wait_time = (Math.random()*2-1 + Math.random()*2-1 + Math.random()*2-1)*250/3 + 600;
}
else if (rand < 0.28)
{
wait_time = (Math.random()*2-1 + Math.random()*2-1 + Math.random()*2-1)*200/3 + 500;
}
else
{
while (wait_time < 230)
{
wait_time = (Math.random()*2-1 + Math.random()*2-1 + Math.random()*2-1)*300/3 + 400;
}
}


What it does is it first generates a random number between 0 and 1. If that number happens to be less than .01 (line 4) it delays for somewhere around 700 ms. If it's not less than .01 but it is less than .02 (line 8) it delays for around 1500ms. And so on. And all the way at the bottom, at this part:

    else
{
while (wait_time < 230)
{
wait_time = (Math.random()*2-1 + Math.random()*2-1 + Math.random()*2-1)*300/3 + 400;
}
}


That code only triggers if none of the above cases have trigged. So only if the random number is greater than or equal to .28. So 72% of the time your code will delay between 25 and 60 seconds, but the other 28% of the time, the above code executes instead.


Yea I had changed those previously at above 20 seconds for all of them. Working good now ^^

ya bish wrote:
Seems to be only on your end.

What does?
#15
Oh what does VOL mean?
#16
Oh what does VOL mean?


VOL?
#17
Yetty wrote:
VOL?



"Demonic Anklets" : 99000, //VOL
#18
Oh what does VOL mean?


Those are just some outdated tags I put on items that looked like they had more price VOLatility than others and which I thought I should update more often than others. But then I stopped doing that and wasn't very consistent about it. So you can pretty much ignore them.
#19
nice
#20
cyanide wrote:
Those are just some outdated tags I put on items that looked like they had more price VOLatility than others and which I thought I should update more often than others. But then I stopped doing that and wasn't very consistent about it. So you can pretty much ignore them.


Thanks, I figured that's what it meant