Jump to content


nole99

Members
  • Posts

    2
  • Joined

  • Last visited

Posts posted by nole99

  1. The poll results did update momentarily before the poll page was changed to include the 'technical difficulties' paragraph. There were just under 83M votes, and FSU was up 61-39%. But, as you said, this can be attributed to Noles continuing to run. We didn't distribute until shortly after 11pm EST so the bulk of our DL's came in the morning after the results had stalled. Since we weren't sure if the entire poll was truly broken or if it was just the flash-based results graph that broke we encouraged everyone to press on. Apparently the vote collection server continued to function. After the announcment, it finally quit responding to GET requests. Obviously, some number of Michigan fans and allies also continued as they added another 21M to the 11M they had at the stall.

     

    I would agree that our two bots were probably about the same in performance and it boiled down to the number of instances running for each side. I have no idea what Michigan had but I think you guys would have easily caught them if you'd gotten your windows version out earlier (although I'm don't fully understand why they stopped and gave you time for a comeback) and I'd like to think we would've handled them easily without you helping them. But who knows. I know when I went to bed about an hour after our distribution, the voting rate was about 1000/sec which was significantly more than I saw in any earlier matchups.

     

    Also, you alluded to someone giving out an FSU bot. I know it wasn't mine at the time you posted that statement, so I am curious as to what you saw. I am not aware of any other bots on our side.

  2. the source code, since no doubt a few would like to see it.

     

    Nothing spectacular at all, my script basically trimmed down a tad, with no features/options, delays, or proxies and re-written in c++ in haste to combat Michigan's (hell of a) script.

     

    For the windows version, it was a strait cross-compile using minGW... Native windows code might speed that up a bit.

     

    #include <string>
    #include <iostream>
    #include <ctime>
    #include "curl/curl.h"
    
    using namespace std;
    
    // Write any errors in here
    static char errorBuffer[CURL_ERROR_SIZE];
    
    // Write all expected data in here
    static string buffer;
    
    // This is the writer call back function used by curl
    static int writer(char *data, size_t size, size_t nmemb,
                     std::string *buffer)
    {
     // What we will return
     int result = 0;
    
     // Is there anything in the buffer?
     if (buffer != NULL)
     {
       // Append the data to the buffer
       buffer->append(data, size * nmemb);
    
       // How much did we write?
       result = size * nmemb;
     }
    
     return result;
    }
    
    int main(int argc, char* argv[])
    {
    
       //curl objects
       CURL *curl1;
    
       CURLcode result1;
    
       curl1 = curl_easy_init();
    
       char ua[] = "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:5.0) Gecko/20100101 Firefox/5.0";
       char url[] = "http://espn.go.com/crossdomain.xml";
       char vurl1[] = "http://poll.espn.go.com/cgi/sz/poll.dll?goTo=http://espn.go.com/poll&domain=.go.com&questions=1&id=116468&qid=116379&service=SZ&count_0=2&expected_0=1&vote_0=404528";
       char vurl2[] = "http://espn.go.com/poll/?POLL454=8000000000000000000000000000000000000000000000000000000000000";
       string pcookie = " POLL454=8000000000000000000000000000000000000000000000000000000000000";
       string cookie;
       string swid;
       string userAB;
       size_t pos;
       long start, end, totalsec;
       int count;
       start = time(NULL);
    
       // Now set up all of the curl options
       curl_easy_setopt(curl1, CURLOPT_ERRORBUFFER, errorBuffer);
       curl_easy_setopt(curl1, CURLOPT_HEADER, 1);
       curl_easy_setopt(curl1, CURLOPT_FOLLOWLOCATION, 0);
       curl_easy_setopt(curl1, CURLOPT_WRITEFUNCTION, writer);
       curl_easy_setopt(curl1, CURLOPT_WRITEDATA, &buffer);
       curl_easy_setopt(curl1, CURLOPT_USERAGENT, ua);
    
       cout << "Constructicon forming Devastator!" << endl;
    
       for (int x = 0; x < 1000000; x++)
       {
    //Clear buffer for new session cookie
    buffer.clear();
    //we have to clear cookies here because it messes substr
    curl_easy_setopt(curl1, CURLOPT_COOKIE, "\0");
    //prepare to get a session
    curl_easy_setopt(curl1, CURLOPT_URL, url);
    
    //get a session id so we can pull the cookie off the buffer.
    result1 = curl_easy_perform(curl1);
    
    //cout << "buffer = " << result1 << " " << buffer;
    if (result1 == CURLE_OK)
    {
    	//calculate the two cookies we need.
    	pos = buffer.find("SWID=");
    
    	swid = buffer.substr(pos, 42);
    
    	userAB = " userAB=";
    	userAB.append(swid.substr(40,2));
    	swid.append(userAB);
    
    	//setup our session to hit the vote page
    	curl_easy_setopt(curl1, CURLOPT_COOKIE, swid.c_str());
    	curl_easy_setopt(curl1, CURLOPT_URL, vurl1);
    	result1 = curl_easy_perform(curl1);
    	//setup second vote url cookie
    	swid.append(pcookie);
    	curl_easy_setopt(curl1, CURLOPT_COOKIE, swid.c_str());
    	curl_easy_setopt(curl1, CURLOPT_URL, vurl2);
    	//send second vote url
    	result1 = curl_easy_perform(curl1);
    }
    
    count = x+1;
    
           if (count % 100 == 0)
           {
                cout << count << " votes cast..." << endl;
           }
       }
       curl_easy_cleanup(curl1);
    
       end = time(NULL);
       totalsec = (end - start);
    
       if(totalsec > 0)
       {
            cout << "votes cast in: " << totalsec << " seconds." << endl;
       	 cout << "At the rate of: " << count / totalsec << " votes a second" << endl;
       }
    }
    

     

    I officially retire from the bot wars.

     

    You did not need the 3rd GET. Still, very effective.

×
×
  • Create New...