Detailed explanation of ticket brushing function realized by python applet
- 2021-07-18 08:39:50
- OfStack
Brush tickets 1 to break through the following restrictions:
1. Verification code identification
2. Discontinuous voting with 1ip
Solution
1. With tesseract tool, the link is here https://code.google.com/p/tesseract-ocr/(everyone still can't add https link)
2. Using proxies, domestic proxy servers can find http://cn-proxy.com/here
Of course, the programming language is python
The browser voting process is as follows
1. Send a request to the server, and the server returns the verification code and form
2. Fill out the form and send it to the server
You can use the firefox+httpfox plug-in to view the entire event process, as well as the POST and GET data formats in which the request was sent
Use the urllib2 library of python to implement the above process
1. Request the verification code from the server
Can be used
import urllib
urllib.urlretrieve(imgurl,imgfile)#imgurl You can find it from the page source code
However, since the verification code will be regenerated every time the server is requested, even if the verification code of the requested channel is recognized, an error will be prompted when POST goes in. Use cookie for solution
import cookie
import urllib2
cookiejar=cookielib.MozillaCookieJar(cookieFilename)
opener=urllib2.build_opener(urllib2.HTTPCookieProcessor(cookiejar))
response=opener.open(imgurl)
If you need to use a proxy server, you can write
import cookie
import urllib2
proxy_line='127.0.0.1:8087'
cookieFilename='cookie.txt'
cookiejar=cookielib.MozillaCookieJar(cookieFilename)
opener=urllib2.build_opener(urllib2.ProxyHandler({'http':proxy_line}),urllib2.HTTPCookieProcessor(cookieFileJar))
response=opener.open(imgurl,timeout=2)# Set timeout time
This is to access the server with cookie authentication on port 8087 of this machine, identify the verification code in the next step, and still bring cookie POST into the server.
2. Save the verification code locally
The above response returns the binary flow of verification code, and writes the file with the following code
content=response.read()
fp=file(imgfile,'wb')# Will 2 Binary picture saving
fp.write(content)
fp.close()
3. Verification code identification
tesseract is used for verification code identification. Because tesseract does not provide python interface, external commands are called by system here
Usage is
import os
imgfile='img.jpg'
out
The ticket brushing code with python is as follows
# -*- coding: utf-8 -*-
import os
import urllib
import urllib2
import string
import socks
import httplib2
import cookielib
import time
import random
tes='tesseract.exe'
filepath='./'
imgurl='http://example.com/vote/img.jsp'
myurl="http://example.com/vote"
voteInfoId='xxxxxxxx'
headers={'User-Agent':'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:25.0) Gecko/20100101 Firefox/25.0'}#,
# 'Cookie':'324E661DE12427BD71CE63DF436A80D1'}
imgfile=filepath + '/img.jpg'
outfile=filepath + '/out'
proxy_file=filepath+'/proxy.txt'
user_file=filepath+'/user2.txt'
cookieFilename=filepath +'/cookies.txt'
#myproxy_line='211.142.236.137:80'
#cookieJarFileLWP=cookielib.LWPCookieJar(cookieFilename)
cookieFileJar=cookielib.FileCookieJar(cookieFilename)
#opener=urllib2.build_opener(urllib2.ProxyHandler({'http':myproxy_line}),urllib2.HTTPCookieProcessor(cookieMozillaJar))
opener=urllib2.build_opener(urllib2.HTTPCookieProcessor(cookieFileJar))
f_user=open(user_file)
f_proxy=open(proxy_file)
proxy_all=f_proxy.read().split('\n')
f_user=open(user_file)
user_all=f_user.read().split('\n')
count=1
cookieFileJar=cookielib.FileCookieJar(cookieFilename)# Use cookie Landing
while True:
i=random.randint(1,100)
j=random.randint(1,60)
#print user_all.length()
user_line=user_all[i]
myproxy_line=proxy_all[j]
for myproxy_line in [myproxy_line]:#f_proxy:
# Using proxies and cookie
opener=urllib2.build_opener(urllib2.ProxyHandler({'http':myproxy_line}),urllib2.HTTPCookieProcessor(cookieFileJar))
try:
response2=opener.open(imgurl,timeout=1)# Return 2 Binary picture
except Exception,e:
print 'I can not connect the server,try again'
continue
content=response2.read()
fp=file(imgfile,'wb')# Will 2 Binary picture saving
fp.write(content)
fp.close()
outcmd="%s %s %s -l eng digits -psm 7" %(tes,imgfile,outfile)
print 'I begin to recognize the CAPTCHA code ..'
os.system(outcmd)
code_file=open(filepath+'/out.txt')
mycode_line=code_file.readline()
code_file.close()
if len(mycode_line)<=3:
print 'I guess the CAPTCHA code is %s,but I think it\'s error.' % (mycode_line)
continue
mycode=mycode_line[0:4]
print 'I guess the CAPTCHA code is %s' % (mycode)
mylist=user_line.split('----')
proxy_list=myproxy_line.split(':')
myid=mylist[0]#.decode('utf-8')
myname=mylist[1]#.decode('utf-8')
mycomm=mylist[2]#.decode('utf-8')
data={'method':'vote',
'voteInfoId':voteInfoId,
'forward':'***',
'info1':myid,
'info2':myname,
'info3':mycomm,
'inputCode':mycode,
'submit':' Determine '}
print 'Now I begin to vote...'
print 'the user is %s' % (myid)
print 'the name is %s' % (myname)
print 'the comment is %s' % (mycomm)
post_data=urllib.urlencode(data)
try:
response=opener.open(myurl,post_data)
except Exception,e:
print 'I can\'t connect the server ,so vote is failure'
continue
content=response.read()
#img_req=opener.open(imgurl)
#cookieFileJar.save(cookieFilename)
#req=opener.open(myurl,post_data)
#req=urllib2.Request(myurl,data=post_data,headers=headers)
fp=file('test.html','w')
print 'I put the received html to the file test.html'
fp.write(content)
fp.close()
#outcmd="%s %s %s" %(tes,imgfile,outfile)
#count+=1
#print cookieFileJar