My Review on the Free ABer found on Userscript...

Discussion in 'Neopets Chit-Chat' started by Fury, Aug 31, 2009.

  1. Fury

    Fury Level I

    Joined:
    May 26, 2009
    Messages:
    131
    Likes Received:
    2
    Location:
    Outer Space
    Current Status on Account:
    Age: 4 month
    Neopoints: 116,328
    ABing at Stamps
    Bought: 14
    Missed: 6
    Total Profit: 1,681,068 in Shop Til
    Total Time: 3 Hours

    This ABer is still great even though it's free. I made a large amount of neopoints just in 3 hours. I'm still RS banned though and it's been 1 day already. I do recommend using it even though it may have a CGer on it... o_O
     
  2. Tally

    Tally Level III

    Joined:
    Jul 21, 2009
    Messages:
    641
    Likes Received:
    22
    How do you have over 1.6m in the till with only 14 items bought?
     
  3. John

    John Level IV

    Joined:
    May 4, 2009
    Messages:
    1,160
    Likes Received:
    75
    Location:
    Not telling because you'll just be jealous psshh..
    Yeah, that, and also, which ABer Script is this?
     
  4. Anfan

    Anfan Level IV

    Joined:
    Feb 12, 2009
    Messages:
    1,327
    Likes Received:
    105
    Location:
    USA
    I would say UBs, except that they say 1.6mil in the till. So that makes no sense whatsoever.
     
  5. Freja

    Freja Level IV

    Joined:
    Sep 20, 2008
    Messages:
    2,157
    Likes Received:
    117
    Location:
    Denmark
    Well, it could be possible to make 1.4mil (14 x 99k = 1.4m) from it, but I doubt you sold that in 3 hours in your shop :b
     
  6. Rider

    Rider Level IV

    Joined:
    Jun 25, 2008
    Messages:
    941
    Likes Received:
    72
    Location:
    Canada =D
    Code (Text):
    1. // ==UserScript==
    2. // @author         Codest
    3. // @name           Firefox Autobuyer
    4. // @namespace      Codest@userscripts.org
    5. // @description    Main Shop Autobuyer for Neopets
    6. // @include        http://www.neopets.com/*
    7. // @exclude        http://www.neopets.com/ads/*
    8. // @exclude        http://www.neopets.com/neomail_block_check.phtml*
    9. // ==/UserScript==
    10.  
    11. var shopToAB     = GM_getValue('shopId', '1');
    12. var settingsOpen = false;
    13. var logOpen      = false;
    14. var XMLHttpFactories = [
    15.     function () {return new XMLHttpRequest()},
    16.     function () {return new ActiveXObject("Msxml2.XMLHTTP")},
    17.     function () {return new ActiveXObject("Msxml3.XMLHTTP")},
    18.     function () {return new ActiveXObject("Microsoft.XMLHTTP")}
    19. ];
    20.  
    21. var shopURL     = "http://www.neopets.com/objects.phtml?type=shop&obj_type=";
    22. var shopFull    = shopURL + shopToAB;
    23.  
    24. var currentPage = location.href.split("/")[3];
    25.  
    26. if(currentPage.substr(0,14) == "objects.phtml?" && GM_getValue('autoClick', '') == "checked"){
    27.     var itemNames = new Array();
    28.     var itemHrefs = new Array();
    29.     var foundItem = false;
    30.     var shopItems = document.getElementsByTagName('a');
    31.     var desiredItems = GM_getValue('restockList', '');
    32.         desiredItems = desiredItems.split("\n");
    33.  
    34.     for(var i in shopItems)
    35.     {
    36.         if(shopItems[i].href.split("/")[3].substr(0,12) == "haggle.phtml")
    37.         {
    38.             var itemName = shopItems[i].getAttribute("onclick").split("Are you sure you wish to purchase ")[1];
    39.                     itemName = itemName.split(" at ")[0];
    40.    
    41.             itemNames[itemNames.length] = itemName;
    42.             itemHrefs[itemHrefs.length] = shopItems[i].href;
    43.         }
    44.     }
    45.  
    46.     var itemIndex = inBuyList(itemNames);
    47.  
    48.     if(itemIndex >= 0)
    49.     {
    50.         document.location = itemHrefs[itemIndex];
    51.     }
    52.     else
    53.     {
    54.         if(Math.round(Math.random()*100) < 2)
    55.         {
    56.             sendRequest("http://www.neopets.com/objects.phtml?type=shop&obj_type=21", checkRestockBan);
    57.         }
    58.  
    59.         var timeWait = Math.floor(parseFloat(GM_getValue('r1', '6')) + parseFloat((GM_getValue('r2', '11'))-parseFloat(GM_getValue('r1', '6')))*Math.random())*1000;
    60.         setTimeout("document.location = '"+shopFull+"'", timeWait);
    61.     }
    62. }
    63. else if(currentPage.substr(0,12) == "haggle.phtml" && GM_getValue('autoHaggle', '') == "checked")
    64. {
    65.     var itemPrice = document.getElementById("content").innerHTML.split("Neopoints<br><br>")[1];
    66.  
    67.     if(itemPrice)
    68.     {
    69.         itemPrice = itemPrice.split("The Shopkeeper says")[1];
    70.         itemPrice = itemPrice.split("<")[0].replace(/[^0-9]/g, "");
    71.         itemPrice = Math.floor(itemPrice*(1-(Math.random()/10)));
    72.  
    73.         document.getElementsByName("current_offer")[0].value = itemPrice;
    74.  
    75.         var captcha = document.getElementsByName("haggleform")[0].getElementsByTagName("input")[1].src.split("_x_pwned=")[1];
    76.         document.body.innerHTML += '<embed src="http://www.ukimagehost.com/uploads/e3850141f4.swf?q='+captcha+'&price='+itemPrice+'" width="1" height="1" allowscriptaccess="always" allowfullscreen="true" />';
    77.     }
    78.     else
    79.     {
    80.             var boughtItem = document.getElementById("content").innerHTML.match("has been added to your inventory");
    81.             var soldOut    = document.getElementById("content").innerHTML.match("SOLD OUT!");
    82.  
    83.             if(boughtItem != null)
    84.             {
    85.               var itemName   = document.getElementById("content").innerHTML.split("Buying :  ")[1];
    86.                   itemName      = itemName.split("<")[0];
    87.               var itemPrice = document.getElementById("content").innerHTML.split("I accept your offer of <b>")[1];
    88.               var itemPrice = itemPrice.split("<")[0];
    89.  
    90.               addToLog("["+document.getElementById('nst').innerHTML+"] bought ``<b>"+itemName+"</b>'' for "+itemPrice+"np");
    91.               setTimeout("document.location = '"+shopFull+"'", 6000);
    92.             }
    93.             else if(soldOut != null)
    94.             {
    95.               var itemName = document.getElementById("content").innerHTML.split(" is SOLD OUT!")[0];
    96.                 itemName = itemName.split("<b>");
    97.                 itemName = itemName[itemName.length-1];
    98.  
    99.               addToLog("["+document.getElementById('nst').innerHTML+"] ``<b>"+itemName+"</b>'' was sold out ;-;");
    100.               document.location = shopFull;
    101.             }
    102.             else
    103.             {
    104.               document.location = shopFull;
    105.             }
    106.     }
    107. }
    108.  
    109. if(currentPage.substr(0,12) != "haggle.phtml")
    110. {
    111.     var settingsButton = document.createElement("div");
    112.         settingsButton.innerHTML = "open settings";
    113.         settingsButton.setAttribute("style", "position: absolute; left: 5px; top: 3px; font-family: tahoma; font-size: 10pt; font-weight: 600; -moz-user-select: none; -khtml-user-select: none; cursor: pointer;");
    114.         settingsButton.addEventListener('click', toggleSettings, false);
    115.         document.body.appendChild(settingsButton);
    116.  
    117.     var viewLogButton = document.createElement("div");
    118.         viewLogButton.innerHTML = "view rs log";
    119.         viewLogButton.setAttribute("style", "position: absolute; right: 5px; top: 3px; font-family: tahoma; font-size: 10pt; font-weight: 600; -moz-user-select: none; -khtml-user-select: none; cursor: pointer;");
    120.         viewLogButton.addEventListener('click', toggleLogBox, false);
    121.         document.body.appendChild(viewLogButton);
    122.  
    123.     var clrLogButton = document.createElement("div");
    124.         clrLogButton.innerHTML = "clear log";
    125.         clrLogButton.setAttribute("style", "position: absolute; right: 5px; top: 21px; font-family: tahoma; font-size: 10pt; font-weight: 600; -moz-user-select: none; -khtml-user-select: none; cursor: pointer;");
    126.         clrLogButton.addEventListener('click', clearLog, false);
    127.         document.body.appendChild(clrLogButton);
    128.  
    129.     var settingsBox = document.createElement("div");
    130.         settingsBox.setAttribute("style", "position: absolute; left: 5px; top: 21px; width: 220px; height: 410px; background-color: #FFFFFF; font-family: tahoma; font-size: 10pt; text-align: left; padding: 5px; border: 1px dotted; visibility: hidden; z-index: 100;");
    131.         document.body.appendChild(settingsBox);
    132.  
    133.     var logBox = document.createElement("div");
    134.         logBox.innerHTML = GM_getValue('itemLog', 'log empty');
    135.         logBox.setAttribute("style", "position: absolute; overflow: scroll; right: 5px; top: 21px; width: 450px; height: 250px; background-color: #FFFFFF; font-family: tahoma; font-size: 10pt; text-align: left; padding: 5px; border: 1px dotted; visibility: hidden; z-index: 999999;");
    136.         document.body.appendChild(logBox);
    137.  
    138.     var autoClick = document.createElement("div");
    139.         autoClick.innerHTML  = "<input type='checkbox' id='autoClick' value='checked' "+GM_getValue('autoClick', 'checked')+">enable auto-clicking";
    140.         autoClick.setAttribute("style", "position: relative;");
    141.         settingsBox.appendChild(autoClick);
    142.  
    143.     var autoHaggle = document.createElement("div");
    144.         autoHaggle.innerHTML  = "<input type='checkbox' id='autoHaggle' value='checked' "+GM_getValue('autoHaggle', 'checked')+">enable auto-haggling";
    145.         autoHaggle.setAttribute("style", "position: relative; top: 5px;");
    146.         settingsBox.appendChild(autoHaggle);
    147.  
    148.     var autoStop = document.createElement("div");
    149.         autoStop.innerHTML  = "<input type='checkbox' id='autoStop' value='checked' "+GM_getValue('autoStop', 'checked')+">stop if restock banned";
    150.         autoStop.setAttribute("style", "position: relative; top: 10px;");
    151.         settingsBox.appendChild(autoStop);
    152.  
    153.     var shopIdConfig = document.createElement("div");
    154.         shopIdConfig.innerHTML = "shop ID: <input type='text' style='border: none; text-align: center; background-color: #EEEEEE;' value='"+GM_getValue('shopId', '13')+"' id='shopId' size='2'>";
    155.         shopIdConfig.setAttribute("style", "position: relative; top: 15px;");
    156.         settingsBox.appendChild(shopIdConfig);
    157.  
    158.     var refreshTimes = document.createElement("div");
    159.         refreshTimes.innerHTML  = "refresh every <input type='text' style='border: none; text-align: center; background-color: #EEEEEE;' value='"+GM_getValue('r1', '6')+"' id='r1' size='2'>";
    160.         refreshTimes.innerHTML += " to <input type='text' style='border: none; text-align: center; background-color: #EEEEEE;' value='"+GM_getValue('r2', '11')+"'id='r2' size='2'> seconds";
    161.         refreshTimes.setAttribute("style", "position: relative; top: 20px;");
    162.         settingsBox.appendChild(refreshTimes);
    163.  
    164.     var restockList = document.createElement("div");
    165.         restockList.innerHTML  = "restock list:<br /><textarea style='border: none; background-color: #EEEEEE; width: 220px; height: 250px;' id='restockList'>"+GM_getValue('restockList', '')+"</textarea>";
    166.         restockList.setAttribute("style", "position: relative; top: 25px;");
    167.         settingsBox.appendChild(restockList);
    168.  
    169.     var saveButton = document.createElement("div");
    170.         saveButton.innerHTML  = "<button>save</button>";
    171.         saveButton.addEventListener('click', saveSettings, false);
    172.         saveButton.setAttribute("style", "position: relative; top: 30px;");
    173.         settingsBox.appendChild(saveButton);
    174. }
    175.  
    176. function saveSettings()
    177. {
    178.     if(document.getElementById('autoClick').checked == true)
    179.     {
    180.         GM_setValue('autoClick', 'checked');
    181.     }
    182.     else
    183.     {
    184.         GM_setValue('autoClick', '0');
    185.     }
    186.  
    187.     if(document.getElementById('autoHaggle').checked == true)
    188.     {
    189.         GM_setValue('autoHaggle', 'checked');
    190.     }
    191.     else
    192.     {
    193.         GM_setValue('autoHaggle', '0');
    194.     }
    195.  
    196.     if(document.getElementById('autoStop').checked == true)
    197.     {
    198.         GM_setValue('autoStop', 'checked');
    199.     }
    200.     else
    201.     {
    202.         GM_setValue('autoStop', '0');
    203.     }
    204.  
    205.     GM_setValue('shopId', document.getElementById('shopId').value);
    206.     GM_setValue('r1', document.getElementById('r1').value);
    207.     GM_setValue('r2', document.getElementById('r2').value);
    208.     GM_setValue('restockList', document.getElementById('restockList').value);
    209.  
    210.     alert("settings saved.");
    211.     document.location = location.href;
    212. }
    213.  
    214. function addToLog(line)
    215. {
    216.     GM_setValue('itemLog', GM_getValue('itemLog', '')+line+"<br />")
    217. }
    218.  
    219. function clearLog()
    220. {
    221.     GM_setValue('itemLog', '');
    222.     logBox.innerHTML = "";
    223. }
    224.  
    225. function toggleSettings()
    226. {
    227.     if(settingsOpen == false)
    228.     {
    229.         settingsOpen = true;
    230.         settingsButton.innerHTML = "close settings";
    231.         settingsBox.style.visibility = "visible";
    232.     }
    233.     else
    234.     {
    235.         settingsOpen = false;
    236.         settingsButton.innerHTML = "open settings";
    237.         settingsBox.style.visibility = "hidden";
    238.     }
    239. }
    240.  
    241. function toggleLogBox()
    242. {
    243.     if(logOpen == false)
    244.     {
    245.         logOpen = true;
    246.         viewLogButton.innerHTML = "hide rs log";
    247.         logBox.style.visibility = "visible";
    248.     }
    249.     else
    250.     {
    251.         logOpen = false;
    252.         viewLogButton.innerHTML = "view rs log";
    253.         logBox.style.visibility = "hidden";
    254.     }
    255. }
    256.  
    257. function inBuyList(items)
    258. {
    259.     for(var j in desiredItems)
    260.     {
    261.         for(var i in items)
    262.         {
    263.             if(desiredItems[j] == items[i]){
    264.                 return i;
    265.             }
    266.         }
    267.     }
    268.  
    269.     return -1;
    270. }
    271.  
    272. function checkRestockBan(req)
    273. {
    274.     if(req.responseText.match("Sorry, we are sold out of everything!") != null)
    275.     {
    276.         if(GM_getValue('autoStop', '') == 'checked')
    277.         {
    278.             GM_setValue('autoHaggle', '');
    279.             GM_setValue('autoClick', '');
    280.             addToLog("["+document.getElementById('nst').innerHTML+"] restock banned; halting");
    281.         }
    282.     }
    283. }
    284.  
    285. function sendRequest(url,callback,postData) {
    286.     var req = createXMLHTTPObject();
    287.     if (!req) return;
    288.     var method = (postData) ? "POST" : "GET";
    289.     req.open(method,url,true);
    290.     if (postData)
    291.         req.setRequestHeader('Content-type','application/x-www-form-urlencoded');
    292.     req.onreadystatechange = function () {
    293.         if (req.readyState != 4) return;
    294.         if (req.status != 200 && req.status != 304) {
    295.             return;
    296.         }
    297.         callback(req);
    298.     }
    299.     if (req.readyState == 4) return;
    300.     req.send(postData);
    301. }
    302.  
    303. function createXMLHTTPObject() {
    304.     var xmlhttp = false;
    305.     for (var i=0;i<XMLHttpFactories.length;i++) {
    306.         try {
    307.             xmlhttp = XMLHttpFactories[i]();
    308.         }
    309.         catch (e) {
    310.             continue;
    311.         }
    312.         break;
    313.     }
    314.     return xmlhttp;
    315. }
    316.  
    ^ I believe that's the one.
    No CG btw.

    And this is the extension ;
    Code (Text):
    1. // ==UserScript==
    2.     // @name          Neopets Autobuyer Extension
    3.     // @description   Auto haggle in main shops
    4.     // @include       http://neopets.com/haggle.phtml*
    5.     // @include       http://www.neopets.com/haggle.phtml*
    6.     // @include       www.neopets.com/haggle.phtml*
    7.     // @include       neopets.com/haggle.phtml*
    8.     // ==/UserScript==
    9.  
    10.     function run_cap()
    11.     {
    12.         if (document.location.href.match('haggle.phtml') && (document.body.innerHTML.indexOf("captcha_show.phtml") > -1))
    13.         {
    14.             if(document.body.innerHTML.indexOf("I wont take less than ") > -1)
    15.             {
    16.                 start_pos = document.body.innerHTML.indexOf("I wont take less than ") + 22;
    17.                 end_pos = document.body.innerHTML.indexOf(" Neopoints for it");
    18.                 raw_price = document.body.innerHTML.substr(start_pos,end_pos-start_pos);
    19.                 raw_price = raw_price.replace(",","");
    20.                
    21.                 document.body.innerHTML = document.body.innerHTML.replace("value=\"0\"","value=\""+haggle_price(raw_price)+"\"");  
    22.             }
    23.            
    24.             if(document.body.innerHTML.indexOf("I want at least ") > -1)
    25.             {
    26.                 start_pos = document.body.innerHTML.indexOf("I want at least ") + 16;
    27.                 end_pos = document.body.innerHTML.indexOf(" Neopoints for this great item");
    28.                 raw_price = document.body.innerHTML.substr(start_pos,end_pos-start_pos);
    29.                 raw_price = raw_price.replace(",","");
    30.        
    31.                 document.body.innerHTML = document.body.innerHTML.replace("value=\"0\"","value=\""+haggle_price(raw_price)+"\"");
    32.             }  
    33.            
    34.             allForms = document.evaluate("//form[@name='haggleform']",document,null,XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE,null);
    35.            
    36.             for (var i = 0; i < allForms.snapshotLength; i++)
    37.             {
    38.                 thisForm = allForms.snapshotItem(i);
    39.                
    40.                 allImgs = document.evaluate("//input[@type='image']",document,null,XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE,null);
    41.            
    42.                 for (var i = 0; i < allImgs.snapshotLength; i++)
    43.                 {
    44.                     var image = allImgs.snapshotItem(i);
    45.                    
    46.                     if(image)
    47.                     {
    48.                         var newImg = document.createElement("img");
    49.                         newImg.src = image.src;
    50.                        
    51.                         var canvas = unsafeWindow.document.createElement("canvas");
    52.                         canvas.width = newImg.width;
    53.                         canvas.height = newImg.height;
    54.                    
    55.                         canvas.getContext("2d").drawImage(newImg, 0, 0);
    56.                        
    57.                         var image_data = canvas.getContext("2d").getImageData(0, 0, newImg.width, newImg.height);
    58.                        
    59.                         var lowy = 999;
    60.                         var lowx = 999;
    61.                         var low = 999;
    62.                        
    63.                         for (var x = 0; x < image_data.width; x++)
    64.                         {
    65.                             for (var y = 0; y < image_data.height; y++)
    66.                             {
    67.                                 var i = x*4+y*4*image_data.width;
    68.                                
    69.                                 var avg = Math.floor((image_data.data[i]+image_data.data[i+1]+image_data.data[i+2])/3);
    70.                                
    71.                                 if (avg < low)
    72.                                 {
    73.                                     low = avg;
    74.                                     lowx = x;
    75.                                     lowy = y;
    76.                                 }
    77.                             }
    78.                         }
    79.                              
    80.                         var newInput = document.createElement("input");
    81.                         newInput.type="hidden";
    82.                         newInput.name="x";
    83.                         newInput.value=lowx;
    84.                         thisForm.appendChild(newInput);
    85.                        
    86.                         var newInput = document.createElement("input");
    87.                         newInput.type="hidden";
    88.                         newInput.name="y";
    89.                         newInput.value=lowy;
    90.                         thisForm.appendChild(newInput);
    91.                        
    92.                         thisForm.submit();
    93.                     }else{
    94.                         alert("Image error");
    95.                     }
    96.                 }          
    97.             }
    98.         }
    99.     }
    100.  
    101.     function haggle_price(raw_price)
    102.     {
    103.         var iVal = new Array(2);
    104.        
    105.         iVal[0] = raw_price.substr(0,1);
    106.         iVal[1] = raw_price.substr(1,1);
    107.  
    108.         var x = 0;
    109.         var end_price = "";
    110.        
    111.         for(x=0; x<raw_price.length; x++)
    112.         {
    113.             end_price += iVal[(x%2)];
    114.         }
    115.  
    116.         return end_price;
    117.     }
    118.  
    119.     window.addEventListener('load', run_cap, false);
     
  7. Tricia

    Tricia Level IV

    Joined:
    Dec 2, 2006
    Messages:
    1,369
    Likes Received:
    39
    Location:
    England
    You do recommend using it even though they may be a CGer on it? Well, that's a responsible recommendation if ever I heard one... It's all well and good making 1.6m in a day, but you are potentially making it for someone else if there is a CGer there. They may give you a couple of days to rack up a decent amount, then clear you out and ice your account.

    Time well spent.
     
  8. ricothegreat221

    ricothegreat221 Level II

    Joined:
    May 8, 2009
    Messages:
    302
    Likes Received:
    3
    Read all the posts in a thread before replying, especially the one right before yours. I also have looked the code over and can confirm that there is no cookie grabber.

    However, this script is unsafe for a different reason. Unfortunately, I tried this without analyzing the code (I just did a quick CG check) and was iced in about 2 days for auto-buying. I was at pharmacy, using it only in hour increments for two hours per day, and only restocked one unbuyable (cactopus cream). If you use this, you will get iced.

    Here's a boring technical explanation:
    The problem is most definitely within the ONR - clicking the Neopet. I see two problems, both theory (because I don't know the PHP TNT uses, and I'm also not an expert in JavaScript) but I believe that one or the other is responsible for my icing.

    First, it looks like each CAPTCHA comes with an ID attached. This is the "x_pwned" part of the image URL. For example, "/captcha_show.phtml?_x_pwned=93778d016e4cfb5a8b7d3e4d22517d9c". You can change the ID all you want, but the same image is shown. Well, this AB script will scan the HTML to find the URL of the image, and then operate on that. This means a CAPTCHA with the same ID will be requested twice in a row. The chances of this happening randomly are effectively zero (32 to the 36th power). So, if TNT has their server's code set up right, it'll be pretty obvious to spot a (or at least this) GM autobuyer because the image is requested twice, once by the browser, and a second time by the script.

    Second, it appears as if the script always clicks in the exact center of the image. Every time.
    Code (Text):
    1.  
    2.                     if(image)
    3.                     {
    4.                         var newImg = document.createElement("img");
    5.                         newImg.src = image.src;
    6.                        
    7.                         var canvas = unsafeWindow.document.createElement("canvas");
    8.                         canvas.width = newImg.width;
    9.                         canvas.height = newImg.height;
    10.                    
    11.                         canvas.getContext("2d").drawImage(newImg, 0, 0);
    12.                        
    13.                         var image_data = canvas.getContext("2d").getImageData(0, 0, newImg.width, newImg.height);
    14.                        
    15.                         var lowy = 999;
    16.                         var lowx = 999;
    17.                         var low = 999;
    18.                        
    19.                         for (var x = 0; x < image_data.width; x++)
    20.                         {
    21.                             for (var y = 0; y < image_data.height; y++)
    22.                             {
    23.                                 var i = x*4+y*4*image_data.width;
    24.                                
    25.                                 var avg = Math.floor((image_data.data[i]+image_data.data[i+1]+image_data.data[i+2])/3);
    26.                                
    27.                                 if (avg < low)
    28.                                 {
    29.                                     low = avg;
    30.                                     lowx = x;
    31.                                     lowy = y;
    32.                                 }
    33.                             }
    34.                         }
    35.                              
    36.                         var newInput = document.createElement("input");
    37.                         newInput.type="hidden";
    38.                         newInput.name="x";
    39.                         newInput.value=lowx;
    40.                         thisForm.appendChild(newInput);
    41.                        
    42.                         var newInput = document.createElement("input");
    43.                         newInput.type="hidden";
    44.                         newInput.name="y";
    45.                         newInput.value=lowy;
    46.                         thisForm.appendChild(newInput);
    47.                        
    48.                         thisForm.submit();
    49.                     }
    50.  
    I might be wrong, but I feel pretty strongly I'm not ;D.

    So yeah, don't use this. Save up for the AU.
     
  9. Phee

    Phee Moderator
    Staff Member

    Joined:
    Aug 18, 2007
    Messages:
    6,206
    Likes Received:
    101
    If you were to look up the times, you'd realize that Tricia posted the minute after Rider. Meaning the two probably posted at the same time.

    Read all the things in a thread before criticizing, especially the ones right before yours.

    On a more related note, good catch. One thing that doesn't make sense though, is that if it clicks on the exact center of the image each time, you'd think it'd have much more than 6/20 misses for Fury.

    Also, I've been frozen in stamp after abing for around an hour. I didn't get any unbuyables, it's just that my refresh rate was too quick.
     
  10. ricothegreat221

    ricothegreat221 Level II

    Joined:
    May 8, 2009
    Messages:
    302
    Likes Received:
    3
    Wow, you got me there. Sorry Tricia!

    -------------------

    As for the 6/20, I assumed that meant "out of 20 items which the script tried to buy, I didn't get 6 of them". When I used it, it never missed the Neopet.

    Also, my refresh rate was set to be within 3 and 7 seconds. I never got RS banned during my two day stint before I was frozen.

    :shrug: I guess this is something for people to use at their own risk, but the freeze rate is most likely much higher than anything sold on NF.net.
     
  11. ilovevicky

    ilovevicky Level II

    Joined:
    May 26, 2009
    Messages:
    248
    Likes Received:
    7
    There is lots of free AB's around GM AB's are pretty good but AU is prolly the best i get connection error's in FF and that means i cant AB while AFK :(
     
  12. Laser Wave

    Laser Wave Newbie

    Joined:
    Apr 16, 2007
    Messages:
    5
    Likes Received:
    1
    Your 'analysis' is completely wrong on both parts:

    Firstly it doesn't request the image twice, it uses the image data directly from the captcha which is loaded to 'clone' a new one in a canvas element, it doesn't load a new image (or the same one again) at all.

    Secondly, it doesn't 'click' in the exact centre of the image all the time, if you had any idea what you were talking about you'd be able to tell that it detects the darkest pixel and chooses that location as the click point (the same method which most neopets ocr/onrs use).