<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>CrapFlingingMonkey.com &#187; python</title>
	<atom:link href="http://crapflingingmonkey.com/wp/tag/python/feed/" rel="self" type="application/rss+xml" />
	<link>http://crapflingingmonkey.com/wp</link>
	<description>A voice for all developers</description>
	<lastBuildDate>Thu, 01 Apr 2010 17:04:43 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.1-alpha</generator>
		<item>
		<title>Python Script For Automated Voting</title>
		<link>http://crapflingingmonkey.com/wp/2008/07/python-script-for-automated-voting/</link>
		<comments>http://crapflingingmonkey.com/wp/2008/07/python-script-for-automated-voting/#comments</comments>
		<pubDate>Wed, 23 Jul 2008 03:07:13 +0000</pubDate>
		<dc:creator>josh</dc:creator>
				<category><![CDATA[Code]]></category>
		<category><![CDATA[automated voting]]></category>
		<category><![CDATA[automation]]></category>
		<category><![CDATA[python]]></category>

		<guid isPermaLink="false">http://crapflingingmonkey.com/wp/?p=6</guid>
		<description><![CDATA[This was a python script created by me a while ago to automate voting for a particular user. It may not work anymore, as this script was written quite a while ago. It&#8217;s not commented or anything. Here is the original post: I created a small script to do the clearing of the cookies for [...]]]></description>
			<content:encoded><![CDATA[<p>This was a python script created by me a while ago to automate voting for a particular user.  It may not work anymore, as this script was written quite a while ago.  It&#8217;s not commented or anything. Here is the original post:</p>
<p>I created a small script to do the clearing of the cookies for you and everything. I tried to have it solve the captcha for you automagically, but it just wasn&#8217;t happening (I used ocrad and tesseract, and cleaning the image using imagemagick first). Anyways, you can sit there all day and enter the captchas to keep voting.</p>
<p>A few requirements:<br />
* I wrote it using python 2.5.1. Not sure what other version it will work on.<br />
* PIL required<br />
* mechanize required</p>
<p>both of the required modules are available in the ubuntu repositories. I think that&#8217;s all you need, let me know if you run into any troubles.</p>

<div class="wp_syntax"><div class="code"><pre class="python python" style="font-family:monospace;">sudo apt-get install python-imaging python-mechanize</pre></div></div>

<p>A couple notes about it:<br />
* You don&#8217;t have to hit &#8220;submit&#8221;, you can just press enter<br />
* check the console for updates on whether it was submitted ok or not</p>
<p>Let me know if you want help learning how to set it up.</p>

<div class="wp_syntax"><div class="code"><pre class="python python" style="font-family:monospace;"><span style="color: #808080; font-style: italic;">#!/usr/bin/python</span>
&nbsp;
<span style="color: #808080; font-style: italic;"># Displays the Captcha from http://basketball.seniorclassaward.com/public/men/vote.aspx?usr=public&amp;amp;gen=M</span>
<span style="color: #808080; font-style: italic;"># so that you can enter it so that Jacee Carroll will win. It automagically keeps track/clears cookies (via mechanize)</span>
<span style="color: #808080; font-style: italic;"># so you can submit more than once every 24 hours</span>
&nbsp;
<span style="color: #808080; font-style: italic;"># Written by Josh</span>
&nbsp;
<span style="color: #ff7700;font-weight:bold;">import</span> pygtk, gtk
<span style="color: #ff7700;font-weight:bold;">import</span> <span style="color: #dc143c;">StringIO</span>
<span style="color: #ff7700;font-weight:bold;">import</span> ImageFile
<span style="color: #ff7700;font-weight:bold;">import</span> <span style="color: #dc143c;">re</span>
<span style="color: #ff7700;font-weight:bold;">from</span> mechanize <span style="color: #ff7700;font-weight:bold;">import</span> Browser
pygtk.<span style="color: black;">require</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">'2.0'</span><span style="color: black;">&#41;</span>
&nbsp;
<span style="color: #808080; font-style: italic;"># taken from http://www.daa.com.au/pipermail/pygtk/2003-June/005268.html</span>
<span style="color: #ff7700;font-weight:bold;">def</span> image_to_gtkpixbuf<span style="color: black;">&#40;</span>image<span style="color: black;">&#41;</span>:
    <span style="color: #008000;">file</span> = <span style="color: #dc143c;">StringIO</span>.<span style="color: #dc143c;">StringIO</span> <span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>
    image.<span style="color: black;">save</span> <span style="color: black;">&#40;</span><span style="color: #008000;">file</span>, <span style="color: #483d8b;">'ppm'</span><span style="color: black;">&#41;</span>
    contents = <span style="color: #008000;">file</span>.<span style="color: black;">getvalue</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>
    <span style="color: #008000;">file</span>.<span style="color: black;">close</span> <span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>
    loader = gtk.<span style="color: black;">gdk</span>.<span style="color: black;">PixbufLoader</span> <span style="color: black;">&#40;</span><span style="color: #483d8b;">'pnm'</span><span style="color: black;">&#41;</span>
    loader.<span style="color: black;">write</span> <span style="color: black;">&#40;</span>contents, <span style="color: #008000;">len</span> <span style="color: black;">&#40;</span>contents<span style="color: black;">&#41;</span><span style="color: black;">&#41;</span>
    pixbuf = loader.<span style="color: black;">get_pixbuf</span> <span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>
    loader.<span style="color: black;">close</span> <span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>
    <span style="color: #ff7700;font-weight:bold;">return</span> pixbuf
&nbsp;
<span style="color: #ff7700;font-weight:bold;">class</span> Submitter:
&nbsp;
    <span style="color: #ff7700;font-weight:bold;">def</span> get_image<span style="color: black;">&#40;</span><span style="color: #008000;">self</span><span style="color: black;">&#41;</span>:
        <span style="color: #808080; font-style: italic;"># Get the image</span>
        image_url = <span style="color: #483d8b;">'http://basketball.seniorclassaward.com/Captcha.aspx'</span>
&nbsp;
        image_response = <span style="color: #008000;">self</span>.<span style="color: black;">br</span>.<span style="color: black;">open_novisit</span><span style="color: black;">&#40;</span>image_url<span style="color: black;">&#41;</span>
&nbsp;
        p = ImageFile.<span style="color: black;">Parser</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>
        <span style="color: #ff7700;font-weight:bold;">while</span> <span style="color: #ff4500;">1</span>:
            data = image_response.<span style="color: black;">read</span><span style="color: black;">&#40;</span><span style="color: #ff4500;">1024</span><span style="color: black;">&#41;</span>
            <span style="color: #ff7700;font-weight:bold;">if</span> <span style="color: #ff7700;font-weight:bold;">not</span> data:
                <span style="color: #ff7700;font-weight:bold;">break</span>
            p.<span style="color: black;">feed</span><span style="color: black;">&#40;</span>data<span style="color: black;">&#41;</span>
        image_response.<span style="color: black;">close</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>
        <span style="color: #ff7700;font-weight:bold;">return</span> p.<span style="color: black;">image</span>
&nbsp;
    <span style="color: #ff7700;font-weight:bold;">def</span> <span style="color: #0000cd;">__init__</span><span style="color: black;">&#40;</span><span style="color: #008000;">self</span><span style="color: black;">&#41;</span>:
        <span style="color: #008000;">self</span>.<span style="color: black;">br</span> = Browser<span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>
        <span style="color: #008000;">self</span>.<span style="color: black;">br</span>.<span style="color: black;">set_handle_robots</span><span style="color: black;">&#40;</span><span style="color: #008000;">False</span><span style="color: black;">&#41;</span>
        <span style="color: #008000;">self</span>.<span style="color: black;">url</span> = <span style="color: #483d8b;">'http://basketball.seniorclassaward.com/public/men/vote.aspx?usr=public&amp;amp;gen=M'</span>
        <span style="color: #008000;">self</span>.<span style="color: black;">br</span>.<span style="color: #008000;">open</span><span style="color: black;">&#40;</span><span style="color: #008000;">self</span>.<span style="color: black;">url</span><span style="color: black;">&#41;</span>
&nbsp;
        <span style="color: #008000;">self</span>.<span style="color: black;">captcha</span> = <span style="color: #008000;">self</span>.<span style="color: black;">get_image</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>
&nbsp;
    <span style="color: #ff7700;font-weight:bold;">def</span> submit<span style="color: black;">&#40;</span><span style="color: #008000;">self</span>, captcha_text<span style="color: black;">&#41;</span>:
        captcha_textbox = <span style="color: #483d8b;">'ctl00$DefaultContentPlaceholder$PublicBallot$CaptchaTextBox'</span>
        jaycee_checkbox = <span style="color: #483d8b;">'ctl00$DefaultContentPlaceholder$PublicBallot$BallotCheckBoxList$0'</span>
&nbsp;
        br = <span style="color: #008000;">self</span>.<span style="color: black;">br</span>
        br.<span style="color: black;">select_form</span><span style="color: black;">&#40;</span> name=<span style="color: #483d8b;">'aspnetForm'</span> <span style="color: black;">&#41;</span>
        br<span style="color: black;">&#91;</span>captcha_textbox<span style="color: black;">&#93;</span> = captcha_text
        br<span style="color: black;">&#91;</span>jaycee_checkbox<span style="color: black;">&#93;</span> = <span style="color: black;">&#91;</span><span style="color: #483d8b;">'on'</span><span style="color: black;">&#93;</span>
&nbsp;
        response = br.<span style="color: black;">submit</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>
&nbsp;
        r = response.<span style="color: black;">read</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>
        <span style="color: #ff7700;font-weight:bold;">if</span> <span style="color: #dc143c;">re</span>.<span style="color: black;">search</span><span style="color: black;">&#40;</span>r<span style="color: #483d8b;">&quot;ATTENTION:<span style="color: #000099; font-weight: bold;">\\</span>n([^']+)'&quot;</span>, r<span style="color: black;">&#41;</span>:
            res = <span style="color: #dc143c;">re</span>.<span style="color: black;">search</span><span style="color: black;">&#40;</span>r<span style="color: #483d8b;">&quot;ATTENTION:<span style="color: #000099; font-weight: bold;">\\</span>n([^']+)'&quot;</span>, r<span style="color: black;">&#41;</span>
            <span style="color: #ff7700;font-weight:bold;">print</span> <span style="color: #483d8b;">&quot;Error submitting: &quot;</span> + res.<span style="color: black;">groups</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span><span style="color: black;">&#91;</span>0<span style="color: black;">&#93;</span>
            <span style="color: #ff7700;font-weight:bold;">return</span> <span style="color: #008000;">False</span>
        <span style="color: #ff7700;font-weight:bold;">elif</span> <span style="color: #dc143c;">re</span>.<span style="color: black;">search</span><span style="color: black;">&#40;</span>r<span style="color: #483d8b;">&quot;COMPLETE:<span style="color: #000099; font-weight: bold;">\\</span>n([^']+)'&quot;</span>, r<span style="color: black;">&#41;</span>:
            res = <span style="color: #dc143c;">re</span>.<span style="color: black;">search</span><span style="color: black;">&#40;</span>r<span style="color: #483d8b;">&quot;COMPLETE:<span style="color: #000099; font-weight: bold;">\\</span>n([^']+)'&quot;</span>, r<span style="color: black;">&#41;</span>
            <span style="color: #ff7700;font-weight:bold;">print</span> <span style="color: #483d8b;">&quot;SUCCESS! &quot;</span> + res.<span style="color: black;">groups</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span><span style="color: black;">&#91;</span>0<span style="color: black;">&#93;</span>
&nbsp;
        <span style="color: #ff7700;font-weight:bold;">return</span> <span style="color: #008000;">True</span>
&nbsp;
<span style="color: #ff7700;font-weight:bold;">class</span> Control:
    <span style="color: #ff7700;font-weight:bold;">def</span> <span style="color: #0000cd;">__init__</span><span style="color: black;">&#40;</span><span style="color: #008000;">self</span><span style="color: black;">&#41;</span>:
        <span style="color: #008000;">self</span>.<span style="color: black;">window</span> = gtk.<span style="color: black;">Window</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>
        <span style="color: #008000;">self</span>.<span style="color: black;">window</span>.<span style="color: black;">connect</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">&quot;destroy&quot;</span>, gtk.<span style="color: black;">main_quit</span><span style="color: black;">&#41;</span>
&nbsp;
        <span style="color: #008000;">self</span>.<span style="color: black;">submitter</span> = Submitter<span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>
&nbsp;
        <span style="color: #008000;">self</span>.<span style="color: black;">box</span> = gtk.<span style="color: black;">HBox</span><span style="color: black;">&#40;</span><span style="color: #008000;">False</span>, 0<span style="color: black;">&#41;</span>
        <span style="color: #008000;">self</span>.<span style="color: black;">window</span>.<span style="color: black;">add</span><span style="color: black;">&#40;</span><span style="color: #008000;">self</span>.<span style="color: black;">box</span><span style="color: black;">&#41;</span>
&nbsp;
        <span style="color: #008000;">self</span>.<span style="color: black;">submitButton</span> = gtk.<span style="color: black;">Button</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">&quot;Submit&quot;</span><span style="color: black;">&#41;</span>
        <span style="color: #008000;">self</span>.<span style="color: black;">submitButton</span>.<span style="color: black;">connect</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">'clicked'</span>, <span style="color: #008000;">self</span>.<span style="color: black;">submit</span><span style="color: black;">&#41;</span>
&nbsp;
        <span style="color: #008000;">self</span>.<span style="color: black;">box</span>.<span style="color: black;">pack_start</span><span style="color: black;">&#40;</span><span style="color: #008000;">self</span>.<span style="color: black;">submitButton</span>, <span style="color: #008000;">True</span>, <span style="color: #008000;">True</span>, 0<span style="color: black;">&#41;</span>
        <span style="color: #008000;">self</span>.<span style="color: black;">submitButton</span>.<span style="color: black;">show</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>
&nbsp;
        <span style="color: #008000;">self</span>.<span style="color: black;">text</span> = gtk.<span style="color: black;">Entry</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>
        <span style="color: #008000;">self</span>.<span style="color: black;">text</span>.<span style="color: black;">connect</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">&quot;activate&quot;</span>, <span style="color: #008000;">self</span>.<span style="color: black;">submit</span><span style="color: black;">&#41;</span>
        <span style="color: #008000;">self</span>.<span style="color: black;">box</span>.<span style="color: black;">pack_start</span><span style="color: black;">&#40;</span><span style="color: #008000;">self</span>.<span style="color: black;">text</span>, <span style="color: #008000;">True</span>, <span style="color: #008000;">True</span>, 0<span style="color: black;">&#41;</span>
        <span style="color: #008000;">self</span>.<span style="color: black;">text</span>.<span style="color: black;">show</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>
&nbsp;
        <span style="color: #008000;">self</span>.<span style="color: black;">set_image</span><span style="color: black;">&#40;</span><span style="color: #008000;">self</span>.<span style="color: black;">submitter</span>.<span style="color: black;">captcha</span><span style="color: black;">&#41;</span>
        <span style="color: #008000;">self</span>.<span style="color: black;">box</span>.<span style="color: black;">pack_start</span><span style="color: black;">&#40;</span><span style="color: #008000;">self</span>.<span style="color: black;">image</span>, <span style="color: #008000;">True</span>, <span style="color: #008000;">True</span>, 0<span style="color: black;">&#41;</span>
        <span style="color: #008000;">self</span>.<span style="color: black;">image</span>.<span style="color: black;">show</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>
&nbsp;
        <span style="color: #008000;">self</span>.<span style="color: black;">box</span>.<span style="color: black;">show</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>
        <span style="color: #008000;">self</span>.<span style="color: black;">window</span>.<span style="color: black;">show</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>
&nbsp;
        <span style="color: #008000;">self</span>.<span style="color: black;">text</span>.<span style="color: black;">grab_focus</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>
&nbsp;
    <span style="color: #ff7700;font-weight:bold;">def</span> set_image<span style="color: black;">&#40;</span><span style="color: #008000;">self</span>, image<span style="color: black;">&#41;</span>:
        <span style="color: #008000;">self</span>.<span style="color: black;">image</span> = gtk.<span style="color: black;">Image</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>
        <span style="color: #008000;">self</span>.<span style="color: black;">image</span>.<span style="color: black;">set_from_pixbuf</span><span style="color: black;">&#40;</span>
                image_to_gtkpixbuf<span style="color: black;">&#40;</span>image<span style="color: black;">&#41;</span><span style="color: black;">&#41;</span>
&nbsp;
    <span style="color: #ff7700;font-weight:bold;">def</span> change_image<span style="color: black;">&#40;</span><span style="color: #008000;">self</span><span style="color: black;">&#41;</span>:
        <span style="color: #008000;">self</span>.<span style="color: black;">box</span>.<span style="color: black;">remove</span><span style="color: black;">&#40;</span> <span style="color: #008000;">self</span>.<span style="color: black;">image</span> <span style="color: black;">&#41;</span>
        <span style="color: #008000;">self</span>.<span style="color: black;">set_image</span><span style="color: black;">&#40;</span> <span style="color: #008000;">self</span>.<span style="color: black;">submitter</span>.<span style="color: black;">get_image</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span> <span style="color: black;">&#41;</span>
        <span style="color: #008000;">self</span>.<span style="color: black;">box</span>.<span style="color: black;">pack_start</span><span style="color: black;">&#40;</span><span style="color: #008000;">self</span>.<span style="color: black;">image</span>, <span style="color: #008000;">True</span>, <span style="color: #008000;">True</span>, 0<span style="color: black;">&#41;</span>
        <span style="color: #008000;">self</span>.<span style="color: black;">image</span>.<span style="color: black;">show</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>
        <span style="color: #ff7700;font-weight:bold;">return</span> <span style="color: #008000;">True</span>
&nbsp;
    <span style="color: #ff7700;font-weight:bold;">def</span> submit<span style="color: black;">&#40;</span><span style="color: #008000;">self</span>, evt<span style="color: black;">&#41;</span>:
        <span style="color: #ff7700;font-weight:bold;">if</span> <span style="color: #008000;">self</span>.<span style="color: black;">submitter</span>.<span style="color: black;">submit</span><span style="color: black;">&#40;</span> <span style="color: #008000;">self</span>.<span style="color: black;">text</span>.<span style="color: black;">get_text</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>.<span style="color: black;">upper</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span> <span style="color: black;">&#41;</span>:
            <span style="color: #808080; font-style: italic;"># reset the submitter</span>
            <span style="color: #008000;">self</span>.<span style="color: black;">submitter</span> = Submitter<span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>
            <span style="color: #008000;">self</span>.<span style="color: black;">change_image</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>
&nbsp;
            <span style="color: #008000;">self</span>.<span style="color: black;">text</span>.<span style="color: black;">set_text</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">''</span><span style="color: black;">&#41;</span>
            <span style="color: #008000;">self</span>.<span style="color: black;">text</span>.<span style="color: black;">grab_focus</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>
&nbsp;
<span style="color: #ff7700;font-weight:bold;">def</span> main<span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>:
    gtk.<span style="color: black;">main</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>
    <span style="color: #ff7700;font-weight:bold;">return</span> 0
&nbsp;
<span style="color: #ff7700;font-weight:bold;">if</span> __name__ == <span style="color: #483d8b;">&quot;__main__&quot;</span>:
    Control<span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>
    main<span style="color: black;">&#40;</span><span style="color: black;">&#41;</span></pre></div></div>

<p>This was a just-for-fun thing for me, so I could test out some various web tools for python. I tried simple urllib/urllib2, ClientForm, ClientCookies, and mechanize, and found mechanize to be the most robust and easiest to use, although it was missing out on some features that I thought may be useful (as higher-level modules normally do).</p>
<p>Also, I didn&#8217;t like this:</p>

<div class="wp_syntax"><div class="code"><pre class="python python" style="font-family:monospace;">        <span style="color: #ff7700;font-weight:bold;">if</span> <span style="color: #dc143c;">re</span>.<span style="color: black;">search</span><span style="color: black;">&#40;</span>r<span style="color: #483d8b;">&quot;ATTENTION:<span style="color: #000099; font-weight: bold;">\\</span>n([^']+)'&quot;</span>, r<span style="color: black;">&#41;</span>:
            res = <span style="color: #dc143c;">re</span>.<span style="color: black;">search</span><span style="color: black;">&#40;</span>r<span style="color: #483d8b;">&quot;ATTENTION:<span style="color: #000099; font-weight: bold;">\\</span>n([^']+)'&quot;</span>, r<span style="color: black;">&#41;</span></pre></div></div>

]]></content:encoded>
			<wfw:commentRss>http://crapflingingmonkey.com/wp/2008/07/python-script-for-automated-voting/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>
