Home > Articles > Programming > Java

  • Print
  • + Share This
This chapter is from the book

This chapter is from the book

Some Light Relief—Using Java to Stuff an Online Poll

The email to me was brief. It just read:

From billg@Central Mon May 4 11:57:41 PDT 
Subject: Hank the Angry Dwarf
To: jokes@Sun.COM

Hey everyone. If you've got five seconds to spare, 
go to the following url:
   http://www.pathfinder.com/people/50most/1998/vote/index.html

and vote for:
   Hank the Angry, Drunken Dwarf 

This is a huge joke. We want to try to get Hank way up 
there on the People Magazine 50 most beautiful people of 
the year list. As of 2:00AM, he's already up to number 5!

Well, I can recognize a high priority when I see one. I put down the critical bug fix I was working on, went right to the website, and checked what this was all about.

Every year the celebrity gossip magazine People prints a list of "the 50 most beautiful people in the world," and this year they were soliciting votes on their web site. People had started the ball rolling with nominations for actors like Kate Winslet and Leonardo DiCaprio, who were in the public eye because of their roles in the Titanic movie.

People magazine gave web surfers the opportunity to write in names of people for whom they wanted to vote. A fan of the Howard Stern radio show nominated "Hank the angry, drunken dwarf" for People's list. When Stern heard about Hank's nomination as one of the most beautiful people in the world, he started plugging the candidacy on the radio. A similar phenomenon took place on the Internet, and many people received email like I did. Another write-in stealth candidate widely favored by netizens was flamboyant, blond-haired, veteran pro-wrestler Ric Flair.

Hank, the angry, drunken dwarf, is an occasional guest on Stern's syndicated radio program. Hank is a 36-year old dwarf who lives in Boston with his mother and has made a name for himself as a belligerent, if diminutive, devotee of beer, tequila, and Pamela Anderson.

The People website soon crashed under the strain of incoming votes for Hank. When the People poll closed, the results were as follows:

230,169 votes

Hank the dwarf

Angry, drunken dwarf and Stern radio guest

17,145 votes

Ric Flair

25-year pro-wrestling performer

14,471 votes

Leonardo DiCaprio

High school dropout

7,057 votes

Gillian Anderson

Actress

5,941 votes

Kate Winslet

High school dropout


Hank Nassif, the angry, drunken dwarf, was officially the most beautiful person in the world, by a margin of more than 10-to-1 over the runner-up! Unhappily, People magazine showed their true colors at this point, ignored the clear mandate from the website, and went ahead with a cover story naming the guy who came in third as the official "most beautiful person in the world" for 1998. What a rip-off.

The Java Votebot

There were dark allegations here of automated voting programs, or votebots. I was shocked. But not too shocked to show you how to write a votebot using your new-found Java networking skills.

First, find any online poll. Lots of sites run them because they are a lot cheaper than having actual meaningful content. Let's pick on, I don't know, say, CNN.com. The goofballs in the media are always running some kind of "scientific" poll in an attempt to seem "with it" and "hip" to the latest trends and "cool slang." In October 2001, they were running a poll asking, "Is al Qaeda sending coded messages to followers via video statements?" You could answer "yes" or "no." There wasn't a box for people to respond, "This kind of inane question only trivializes serious matters, and distracts attention from the real issues".

Do a "view source" on a poll web page in your browser to see how they are submitting the results. You're probably going to want to reread the chapter on servlets to get the most out of this. The part of the HTML page that deals with the poll will probably look something like this:

<FORM METHOD=POST ACTION="http://poll.cnn.com/poll?1682781" TARGET="popuppoll">
<INPUT TYPE=HIDDEN NAME="Poll" VALUE="168278">
<!-- Question 1 --><INPUT TYPE=HIDDEN NAME="Question" VALUE="1">
<SPAN class="BoxStory">
Is al Qaeda sending coded messages to followers via video statements?
<BR><BR></SPAN>
</TD> </TR>

<!-- Answer 1 -->
<TR> <TD>
<SPAN class="BoxStory"> Yes </SPAN>
</TD>
<TD align=center><INPUT TYPE=RADIO NAME="Answer168279" VALUE=1>
</TD> </TR> <!-- /end Answer 1 -->

<!-- Answer 2 -->
<TR> <TD>
<SPAN class="BoxStory"> No </SPAN>
</TD>
<TD align=center><INPUT TYPE=RADIO NAME="Answer168279" VALUE=2>
</TD> </TR>

So that tells us this is a simple form which is posted to URL "http://poll.cnn.com/," the script is called "poll," its argument is called "1682781," and the name/value posted is "Answer168279=1" for yes, and "Answer168279=2" for no. There is a hidden attribute giving the question number, too.

It doesn't matter which way you stuff this poll, the point is that a news organization needs to decide if it is in the news business or the entertainment business. Here's the program to do it:

// implements a votebot to stuff Internet polls
import java.io.*;
import java.net.*;
public class votebot {
  public static void main (String args[]) {
    try {
      for (int i=0; i<1000; i++) {
        URL u = new URL("http://poll.cnn.com");
        URLConnection uc = u.openConnection();
        uc.setDoOutput(true);
        OutputStream os = uc.getOutputStream();
        PrintStream ps = new PrintStream(os);
        ps.print("GET /poll?1682781p\r\n");
        ps.print("Question=1&Answer168279=2\r\n");
        System.out.print(".");
      }
     } catch (Exception ex) {
      System.out.println("Excpn: "+ex.getMessage());
     }
  }
}

If this doesn't work for you, there are several possible reasons. There could be a bug in the code. Or the polling site may be employing "electronic countermeasures," such as discarding multiple inputs from one IP address. Or the "poll" may in fact be completely fake and discard all input from anyone at all times.

After writing several more test programs, I reached the conclusion that the "results" of the CNN online polling are completely unrelated to the web votes cast!

  • + Share This
  • 🔖 Save To Your Account