逐渐老去的IT菜鸟 Rotating Header Image

用python写的一个简单刷票程序

周五晚上花了一点时间用python写了一个刷互动力量投票系统的工具,原理很简单,先在代理网站上找代理IP,然后模拟http的方式,用urllib提交数据。这里有一些细节控制,修改一下user_agent,不然会在投票系统的服务器日志里显示“python/urllib”的user_agent信息。

我没有处理验证码这一块,因为我要刷的那个投票恰好没有验证码;就算有,那个验证码也是很有规律,用PIL或者自己写算法来分析也不是难事。

下面是整个刷票的程序,大约就20多行代码,非常简练。

#!/usr/bin/python  
#-*-coding:utf-8-*-  
import urllib,urllib2
import re
import sys
 
if len(sys.argv) != 3:
    sys.stderr.write("Usage: begin page num, end page num\n")
    raise SystemExit(1)
start = int(sys.argv[1])
end = int(sys.argv[2])
 
for i in range(start,end):
    f = urllib.urlopen("http://www.proxycn.com/html_proxy/http-"+str(i)+".html")
    html = f.read()
    proxies = re.findall("clip\('(.*?)'\)",html,re.S)
    for n,proxy in enumerate(proxies):
        print str(n+1)+" "+proxy
        proxy_handler = urllib2.ProxyHandler({'http': 'http://'+proxy})       
        data = urllib.urlencode({'vote_id':12345,'question_id':67890})
        request = urllib2.Request("http://vote.activepower.net/script/user/get_vote_save.asp")
        request.add_header('User-Agent', 'Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)')
        opener = urllib2.build_opener(proxy_handler)     
        try:
            ff = opener.open(request,data,5)
        except:
            print "time out"

No Comments

  • (Required)
  • (Required, will not be published)