def login(regno, password):
		res = []
		print "Parsing captcha for you."
		res = req.get(captcha_url, stream = True)
		cookies = res.cookies
		with open('captcha.bmp', 'wb') as out_file:
			shutil.copyfileobj(res.raw, out_file)
		img = Image.open("captcha.bmp")
		parser = CaptchaParser()
		captcha = parser.getCaptcha(img)
		data = {}
		data['message'] = "";
		data['regno'] = regno
		data['passwd'] = password
		data['vrfcd'] = captcha
		print "Logging In..."
		login_res = req.post(submit_url, data = data, cookies = cookies, timeout = 40)
		soup = BeautifulSoup(login_res.text, "html.parser")
		try:
			x = ((soup.findAll('table')[1]).td.font.string.split(" - "))[1]
			if x == regno:
				success = True
				req.get(home_url, cookies = cookies, timeout = 40) # just to make sure that session id is validated
				res = [success, cookies]
				return res
			else:
				success = False
				res = [success, None]
				return res
		except:
				success = False
				res = [success, None]
				return res
Beispiel #2
0
def login():
    if os.path.isfile('cre.json'):
        with open('cre.json', 'r') as f:
            data = json.load(f)
            regno = data['username']
            passw = data['password']

    else:
        regno = raw_input("Registration Number: ")
        passw = raw_input("Password: "******"Fetching Captcha"
    r = br.open('https://vtop.vit.ac.in/student/stud_login.asp')
    html = r.read()
    soup = BeautifulSoup(html)
    im = soup.find('img', id='imgCaptcha')
    image_response = br.open_novisit(im['src'])
    img = Image.open(StringIO(image_response.read()))
    imgcpy = img.copy()
    starttime = timeit.default_timer()
    parser = CaptchaParser()
    captcha = parser.getCaptcha(img)
    stoptime = timeit.default_timer()

    print "Recognized Captcha:" + str(captcha) + " in " + str(stoptime -
                                                              starttime)
    formdata = {"regno": regno, "passwd": passw, "vrfcd": str(captcha)}
    data_encoded = urllib.urlencode(formdata)
    response = opener.open(
        'https://vtop.vit.ac.in/student/stud_login_submit.asp', data_encoded)

    print "Logging in User:"******"https://vtop.vit.ac.in/student/home.asp"):
        print "Success!"

    else:
        print '''Failed :(
                 Either Username or Password is wrong or there is some fault in decoding captcha try again'''

    return opener
Beispiel #3
0
def login():
    if os.path.isfile('cre.json'):
        with open('cre.json', 'r') as f:
            data = json.load(f)
            regno = data['username']
            passw = data['password']

    else:
        regno=raw_input("Registration Number: ")
        passw=raw_input("Password: "******"Fetching Captcha"
    r=br.open('https://vtop.vit.ac.in/student/stud_login.asp')
    html=r.read()
    soup=BeautifulSoup(html)
    im = soup.find('img', id='imgCaptcha')
    image_response = br.open_novisit(im['src'])
    img=Image.open(StringIO(image_response.read()))
    imgcpy=img.copy()
    starttime = timeit.default_timer()
    parser=CaptchaParser()
    captcha=parser.getCaptcha(img)
    stoptime = timeit.default_timer()

    print "Recognized Captcha:"+str(captcha)+" in "+str(stoptime-starttime)
    formdata = { "regno" : regno, "passwd": passw, "vrfcd" : str(captcha) }
    data_encoded = urllib.urlencode(formdata)
    response = opener.open('https://vtop.vit.ac.in/student/stud_login_submit.asp', data_encoded)


    print "Logging in User:"******"https://vtop.vit.ac.in/student/home.asp"):
	    print"Success!"

    else:
	    print '''Failed :(
                 Either Username or Password is wrong or there is some fault in decoding captcha try again'''
     
    return opener
Beispiel #4
0
def login(reg_no="",pwd=""):

	from bs4 import BeautifulSoup
	from CaptchaParser import CaptchaParser
	from PIL import Image
	import json, mechanize, datetime


    #handeling browser and browser initialisation
	br = mechanize.Browser()
	br.set_handle_robots(False)
	br.set_handle_equiv(True)
	br.set_handle_gzip(True)
	br.set_handle_redirect(True)
	br.set_handle_referer(True)

	#opening website
	response = br.open("https://academics.vit.ac.in/student/stud_login.asp")
	#print br.geturl()

	#selecting the login form
	br.select_form("stud_login")

	#extracting captcha url
	soup = BeautifulSoup(response.get_data())
	img = soup.find('img', id='imgCaptcha')
	print img['src']

	#retrieving captcha image
	br.retrieve("https://academics.vit.ac.in/student/"+img['src'], "captcha_student.bmp")
	print "captcha retrieved"
	img = Image.open("captcha_student.bmp")
	parser = CaptchaParser()
	captcha = parser.getCaptcha(img)
	print str(captcha)

	#fill form
	br["regno"] = str(reg_no)
	br["passwd"] = str(pwd)
	br["vrfcd"] = str(captcha)

	#submitting the values and signing in
	br.method = "POST"
	response = br.submit()

	try:
		br.open("https://academics.vit.ac.in/student/stud_home.asp")
		br.select_form("stud_riviera")
		br.submit(label = "Skip Now")
	except:
		print "ss"
		
	return br
def login():
    br = mechanize.Browser()
    br.set_handle_robots(False)
    br.set_handle_redirect(True)
    br.set_handle_referer(True)
    try:
        _create_unverified_https_context = ssl._create_unverified_context
    except AttributeError:
        pass
    else:
        ssl._create_default_https_context = _create_unverified_https_context
    cj = cookielib.CookieJar()
    br.set_cookiejar(cj)
    response = br.open('https://vtop.vit.ac.in/student/stud_login.asp')
    print 'Opened Login Form'
    html = response.read()
    soup = BeautifulSoup(html)
    im = soup.find('img', id='imgCaptcha')
    image_response = br.open_novisit(im['src'])
    img = Image.open(StringIO(image_response.read()))
    parser = CaptchaParser()
    captcha = parser.getCaptcha(img)
    br.select_form('stud_login')
    br.form['regno'] = REGNO
    br.form['passwd'] = PASSWORD
    br.form['vrfcd'] = str(captcha)
    print br.form
    print str(captcha) + ' Captcha Parsed'
    br.submit()
    print br
    print 'Submitted'
    if (br.geturl() == 'https://vtop.vit.ac.in/student/home.asp'):
        puts(colored.yellow("LOGIN SUCCESSFUL"))
        return br
    else:
        print 'Could not login'
        return None
def login():
    br = mechanize.Browser()
    br.set_handle_redirect(True)
    br.set_handle_referer(True)
    cj = cookielib.CookieJar()
    br.set_cookiejar(cj)
    response = br.open('https://academics.vit.ac.in/student/stud_login.asp')
    html = response.read()
    soup = BeautifulSoup(html)
    im = soup.find('img', id='imgCaptcha')
    image_response = br.open_novisit(im['src'])
    img = Image.open(StringIO(image_response.read()))
    parser = CaptchaParser()
    captcha = parser.getCaptcha(img)
    br.select_form('stud_login')
    br.form['regno'] = REGNO
    br.form['passwd'] = PASSWORD
    br.form['vrfcd'] = str(captcha)
    br.submit()
    if (br.geturl() == 'https://academics.vit.ac.in/student/home.asp'):
        puts(colored.yellow("LOGIN SUCCESSFUL"))
        return br
    else:
        return None
Beispiel #7
0
def login():
    br = mechanize.Browser()
    br.set_handle_redirect(True)
    br.set_handle_referer(True)
    cj = cookielib.CookieJar()
    br.set_cookiejar(cj)
    response = br.open('https://academics.vit.ac.in/student/stud_login.asp')
    html = response.read()
    soup = BeautifulSoup(html)
    im = soup.find('img', id='imgCaptcha')
    image_response = br.open_novisit(im['src'])
    img = Image.open(StringIO(image_response.read()))
    parser = CaptchaParser()
    captcha = parser.getCaptcha(img)
    br.select_form('stud_login')
    br.form['regno'] = REGNO
    br.form['passwd'] = PASSWORD
    br.form['vrfcd'] = str(captcha)
    br.submit()
    if (br.geturl() == 'https://academics.vit.ac.in/student/home.asp'):
        puts(colored.yellow("LOGIN SUCCESSFUL"))
        return br
    else:
        return None
Beispiel #8
0
br.set_handle_equiv(True)
br.set_handle_redirect(True)
br.set_handle_referer(True)
br.set_handle_robots(False)

print "Fetching Captcha"

r = br.open('https://academics.vit.ac.in/parent/parent_login.asp')
html = r.read()
soup = BeautifulSoup(html)
im = soup.find('img', id='imgCaptcha')
image_response = br.open_novisit(im['src'])
img = Image.open(StringIO(image_response.read()))
imgcpy = img.copy()
starttime = timeit.default_timer()
parser = CaptchaParser()
captcha = parser.getCaptcha(img)
stoptime = timeit.default_timer()

print "Recognized Captcha:" + str(captcha) + " in " + str(stoptime - starttime)
br.select_form('parent_login')

regno = raw_input("Registration Number:")
dob = raw_input("Date of Birth:")

br.form['wdregno'] = regno
br.form['vrfcd'] = str(captcha)
br.form['wdpswd'] = dob

print "Logging in User:" + str(regno)
from CaptchaParser import CaptchaParser
import timeit
from PIL import Image
f = []
for (dirpath, dirnames, filenames) in walk('samples'):
    f.extend(filenames)
    break
timesum=0
size=len(f)
count=1
maxtime=0
mintime=100
currtime=0
for im in f:
	img=Image.open("samples/"+str(im))
	c=CaptchaParser()
	starttime = timeit.default_timer()
	print "CAPTCHA:"+c.getCaptcha(img)
	endtime = timeit.default_timer()
	currtime=endtime-starttime
	if(currtime>maxtime):
		maxtime=currtime
		maximg=img.copy()
		print "new max:"+str(maxtime)
	if(currtime<mintime):
		mintime=currtime
		minimg=img.copy()
		print "new min:"+str(mintime)

	timesum+=currtime
	print "Comparing image "+str(count)+"/"+str(size)
def login(reg_no="",pwd=""):

	#importing the required modules
	from bs4 import BeautifulSoup
	from CaptchaParser import CaptchaParser
	from PIL import Image
	import mechanize
	import os

    #handeling browser and browser initialisation
	br = mechanize.Browser()
	br.set_handle_robots(False)
	br.set_handle_equiv(True)
	br.set_handle_gzip(True)
	br.set_handle_redirect(True)
	br.set_handle_referer(True)

	#opening website
	response = br.open("https://vtop.vit.ac.in/student/stud_login.asp")
	#print br.geturl()

	#selecting the login form
	br.select_form("stud_login")

	#extracting captcha url
	soup = BeautifulSoup(response.get_data())
	img = soup.find('img', id='imgCaptcha')
	#print img['src']

	#retrieving captcha image
	br.retrieve("https://vtop.vit.ac.in/student/"+img['src'], reg_no+".bmp")
	print "captcha retrieved"

	#opening the image
	img = Image.open(reg_no+".bmp")

	#parsing the image and getting its string value
	parser = CaptchaParser()
	captcha = parser.getCaptcha(img)
	print str(captcha)

	os.remove(reg_no+".bmp")

	#filling form
	br["regno"] = str(reg_no)
	br["passwd"] = str(pwd)
	br["vrfcd"] = str(captcha)

	#submitting the values and signing in
	br.method = "POST"
	response = br.submit()

	#during the time of rivera
	try:

		br.open("https://vtop.vit.ac.in/student/stud_home.asp")
		br.select_form("stud_riviera")
		br.submit(label = "Skip Now")
		print "Login_Sucess"

	#for normal login
	except:

		print "Login_Sucess"

	return br
Beispiel #11
0
def get_timetable(reg_no = "", pwd = "", mob_num = ""):

    
    import mechanize, json, datetime 
    from bs4 import BeautifulSoup
    from CaptchaParser import CaptchaParser
    from PIL import Image
          
    
    #browser initialise
    br = mechanize.Browser()
    br.set_handle_robots(False)
    br.set_handle_equiv(True)
    br.set_handle_gzip(True)
    br.set_handle_redirect(True)
    br.set_handle_referer(True)

    #open website

    # response = br.open("https://academics.vit.ac.in/student/stud_login.asp")
    response = br.open("https://academics.vit.ac.in/parent/parent_login.asp")
    print br.geturl()

    #select form
    br.select_form("parent_login")

    
    #extracting captcha url
    soup = BeautifulSoup(response.get_data())
    img = soup.find('img', id='imgCaptcha')
    
    
    #retrieving captcha image
    br.retrieve("https://academics.vit.ac.in/parent/"+img['src'], "captcha_parent.bmp")
    
    # print str("https://academics.vit.ac.in/parent/"+img['src'], "captcha_parent")

    img = Image.open("captcha_parent.bmp")

    parser = CaptchaParser()

    captcha = parser.getCaptcha(img)   
    
    #fill form
    br["wdregno"] = str(reg_no)
    br["wdpswd"] = str(pwd)
    br["wdmobno"] = str(mob_num)
    br["vrfcd"] = str(captcha)
    br.method = "POST"
    br.submit()
    if br.geturl()==("https://academics.vit.ac.in/parent/home.asp"):
        print "SUCCESS"
   

        br.open("https://academics.vit.ac.in/parent/parent_home.asp")

        #opening timetable page
        response = br.open("https://academics.vit.ac.in/parent/timetable.asp?sem=WS")
        soup = BeautifulSoup(response.get_data())

        #extrating timetable
        time_table = {}
        for i in range(2,7):
            day = {}
            for j in range(1,13):
                day[j] = soup('table')[2].findAll("tr")[i].findAll("td")[j].getText().encode('utf-8').replace("\xc2\xa0", " ")
                if len(day[j]) > 10:
                    pass
                else:
                    day[j] = 0
            time_table[i-1] = day
        return {"status":"Success","timetable":time_table}

    else :
        print "FAIL"
        return {"status":"Failure"}
def get_atten(reg_no="", pwd="", mob_num=""):

    import mechanize, json, datetime, pytz
    from bs4 import BeautifulSoup
    from CaptchaParser import CaptchaParser
    from PIL import Image

    #browser initialise
    br = mechanize.Browser()
    br.set_handle_robots(False)
    br.set_handle_equiv(True)
    br.set_handle_gzip(True)
    br.set_handle_redirect(True)
    br.set_handle_referer(True)

    #open website

    # response = br.open("https://academics.vit.ac.in/student/stud_login.asp")
    response = br.open("https://vtop.vit.ac.in/parent/parent_login.asp")
    print br.geturl()

    #select form
    br.select_form("parent_login")

    #extracting captcha url
    soup = BeautifulSoup(response.get_data())
    img = soup.find('img', id='imgCaptcha')

    #retrieving captcha image
    br.retrieve("https://vtop.vit.ac.in/parent/" + img['src'],
                "captcha_parent.bmp")

    # print str("https://academics.vit.ac.in/parent/"+img['src'], "captcha_parent")

    img = Image.open("captcha_parent.bmp")

    parser = CaptchaParser()

    captcha = parser.getCaptcha(img)

    #fill form
    br["wdregno"] = str(reg_no)
    br["wdpswd"] = str(pwd)
    br["wdmobno"] = str(mob_num)
    br["vrfcd"] = str(captcha)
    br.method = "POST"
    br.submit()
    if br.geturl() == ("https://vtop.vit.ac.in/parent/home.asp"):
        print "SUCCESS"

        #attendance page
        months = {
            1: "Jan",
            2: "Feb",
            3: "Mar",
            4: "Apr",
            5: "May",
            6: "Jun",
            7: "Jul",
            8: "Aug",
            9: "Sep",
            10: "Oct",
            11: "Nov",
            12: "Dec"
        }
        atten = {}
        br.open("https://vtop.vit.ac.in/parent/attn_report.asp?sem=WS")
        response = br.open(
            "https://vtop.vit.ac.in/parent/attn_report.asp?sem=WS")
        soup = BeautifulSoup(response.get_data())

        br.select_form(nr=0)
        inputTag = soup.find(attrs={"name": "from_date"})
        from_date = inputTag['value']
        tz = pytz.timezone('Asia/Kolkata')
        now = datetime.datetime.now(tz)
        to_date = str(now.day) + "-" + months[now.month] + "-" + str(now.year)

        response = br.open(
            "https://vtop.vit.ac.in/parent/attn_report.asp?sem=WS&fmdt=%(from_date)s&todt=%(to_date)s"
            % {
                "from_date": from_date,
                "to_date": to_date
            })
        soup = BeautifulSoup(response.get_data())
        tables = soup.findAll("table")
        trs = soup.findAll("table")[len(tables) - 2].findAll("tr")
        for i in range(
                1, len(trs)):  #it should be len(trs) -1 but it works w/o -1
            a_course_code = soup.findAll("table")[len(tables) - 2].findAll(
                "tr")[i].findAll("td")[1].getText().encode('utf-8').replace(
                    "\xc2\xa0", " ")
            a_attend_percentage = soup.findAll("table")[
                len(tables) - 2].findAll("tr")[i].findAll(
                    "td")[8].getText().encode('utf-8').replace(
                        "\xc2\xa0", " ")
            if a_course_code not in atten.keys():
                atten[a_course_code] = [a_attend_percentage]
            else:
                atten[a_course_code + "_L"] = [a_attend_percentage]

        return {"Status": "sucess", "attendance": atten}
import timeit
from PIL import Image
f = []
for (dirpath, dirnames, filenames) in walk('samples'):
    f.extend(filenames)
    break
timesum=0
size=len(f)
count=1
maxtime=0
mintime=100
currtime=0
correctCount = -1
for im in f:
	img=Image.open("samples/"+str(im))
	c=CaptchaParser()
	starttime = timeit.default_timer()
	capcthaText = c.getCaptcha(img)
	print "CAPTCHA: "+capcthaText
	endtime = timeit.default_timer()
	currtime=endtime-starttime
	if(currtime>maxtime):
		maxtime=currtime
		maximg=img.copy()
		print "new max:"+str(maxtime)
	if(currtime<mintime):
		mintime=currtime
		minimg=img.copy()
		print "new min:"+str(mintime)

	timesum+=currtime
	def get(self, regno, dob):
		result = memcache.get(regno.upper())
		if result != None:
			self.response.write(json.dumps(result))
			return
		regno = regno.upper()
		br = _mechanize.Browser()
		br.set_handle_equiv(True)
		br.set_handle_redirect(True)
		br.set_handle_referer(True)
		br.set_handle_robots(False)
		r=br.open('https://academics.vit.ac.in/parent/parent_login.asp')
		html=r.read()
		soup=BeautifulSoup(html)
		img = soup.find('img', id='imgCaptcha')
		image_response = br.open_novisit(img['src'])
		image = Image.open(StringIO(image_response.read()))
		parser = CaptchaParser()
		captcha = parser.getCaptcha(image)
		br.select_form('parent_login')
		br.form['wdregno'] = regno
		br.form['vrfcd'] = str(captcha)
		br.form['wdpswd'] = dob
		response = br.submit()
		if (response.geturl() == "https://academics.vit.ac.in/parent/home.asp"):
			r=br.open('https://academics.vit.ac.in/parent/timetable.asp?sem=WS')
			page=r.read()
			soup=BeautifulSoup(page)
			trs=soup.findAll('tr')
			data=""
			count=0
			for tr in trs:
				if(count!=0):
					if("Total Credits" in tr.text):
						break
					else:
						tas=tr.findChildren()
						for ta in tas:
							data=data+ta.text+"\n"
				count=count+1
			refinedData=""
			temp=1
			for da in data.split("\n"):
				if (temp==1 and da!=""):
					refinedData=refinedData+da+"\n"
					temp=0
				else:
					temp=1
			data=refinedData[135:]
			subs=[]
			temp=1
			sub={}
			for da  in data.split("\n"):
				if(temp==1):
					sub.update({"slno":da})
				elif(temp==2):
					sub.update({"cnum":da})
				elif(temp==3):
					sub.update({"code":da})
				elif(temp==4):
					sub.update({"title":da})
				elif(temp==6):
					sub.update({"ltpc":da})
				elif(temp==7):
					sub.update({"bl":da})
				elif(temp==9):
					sub.update({"slot":da})
				elif(temp==10):
					sub.update({"venue":da})
				elif(temp==11):
					sub.update({"faculty":da})
				elif(temp==12):
					sub.update({"billdate":da})
				elif(temp==13):
					temp=0
					subs.append(sub)
					sub={}
				temp=temp+1
			final = {'subjects':subs}
			t = TimeTable(json.dumps(final))
			tt = t.formTT()
			final = {"subjects":subs}
			final.update({"timetable":tt})
			final.update({"dob":dob})
			memcache.set(key = regno, value = final)
			self.response.write(json.dumps(final))
def get_atten(reg_no = "", pwd = "", mob_num = ""):

	
	import mechanize, json, datetime, pytz
	from bs4 import BeautifulSoup
	from CaptchaParser import CaptchaParser
	from PIL import Image
		  
	
	#browser initialise
	br = mechanize.Browser()
	br.set_handle_robots(False)
	br.set_handle_equiv(True)
	br.set_handle_gzip(True)
	br.set_handle_redirect(True)
	br.set_handle_referer(True)

	#open website

	# response = br.open("https://academics.vit.ac.in/student/stud_login.asp")
	response = br.open("https://vtop.vit.ac.in/parent/parent_login.asp")
	print br.geturl()

	#select form
	br.select_form("parent_login")

	
	#extracting captcha url
	soup = BeautifulSoup(response.get_data())
	img = soup.find('img', id='imgCaptcha')
	
	
	#retrieving captcha image
	br.retrieve("https://vtop.vit.ac.in/parent/"+img['src'], "captcha_parent.bmp")
	
	# print str("https://academics.vit.ac.in/parent/"+img['src'], "captcha_parent")

	img = Image.open("captcha_parent.bmp")

	parser = CaptchaParser()

	captcha = parser.getCaptcha(img)   
	
	#fill form
	br["wdregno"] = str(reg_no)
	br["wdpswd"] = str(pwd)
	br["wdmobno"] = str(mob_num)
	br["vrfcd"] = str(captcha)
	br.method = "POST"
	br.submit()
	if br.geturl()==("https://vtop.vit.ac.in/parent/home.asp"):
		print "SUCCESS"
		
		#attendance page 
		months = {1:"Jan", 2:"Feb", 3:"Mar", 4:"Apr", 5:"May", 6:"Jun", 7:"Jul", 8:"Aug", 9:"Sep", 10:"Oct", 11:"Nov", 12:"Dec"}
		atten = {}
		br.open("https://vtop.vit.ac.in/parent/attn_report.asp?sem=WS")
		response = br.open("https://vtop.vit.ac.in/parent/attn_report.asp?sem=WS")
		soup = BeautifulSoup(response.get_data())

		br.select_form(nr=0)
		inputTag = soup.find(attrs={"name": "from_date"})
		from_date = inputTag['value']
		tz = pytz.timezone('Asia/Kolkata')
		now = datetime.datetime.now(tz)
		to_date = str(now.day) + "-" + months[now.month] + "-" + str(now.year)
		
		response = br.open("https://vtop.vit.ac.in/parent/attn_report.asp?sem=WS&fmdt=%(from_date)s&todt=%(to_date)s" % {"from_date":from_date, "to_date":to_date} )
		soup = BeautifulSoup(response.get_data())
		tables = soup.findAll("table")
		trs = soup.findAll("table")[len(tables)-2].findAll("tr")
		for i in range(1,len(trs)): #it should be len(trs) -1 but it works w/o -1
			a_course_code = soup.findAll("table")[len(tables)-2].findAll("tr")[i].findAll("td")[1].getText().encode('utf-8').replace("\xc2\xa0", " ")
			a_attend_percentage =  soup.findAll("table")[len(tables)-2].findAll("tr")[i].findAll("td")[8].getText().encode('utf-8').replace("\xc2\xa0", " ")
			if a_course_code not in atten.keys():
				atten[a_course_code] = [a_attend_percentage]
			else:
				atten[a_course_code+"_L"] = [a_attend_percentage]

		return {"Status" : "sucess" , "attendance" : atten}
Beispiel #16
0
print br.geturl()
    
#select form
br.select_form("stud_login")    
    
#extracting captcha url
soup = BeautifulSoup(response.get_data())
img = soup.find('img', id='imgCaptcha')
print img['src']
    
#retrieving captcha image
br.retrieve("https://academics.vit.ac.in/student/"+img['src'], "captcha_student.bmp")
print "captcha retrieved"
img = Image.open("captcha_student.bmp")

parser = CaptchaParser()

captcha = parser.getCaptcha(img)
print str(captcha)
#fill form
reg_no="14BCE0104"    #fill ur data
pwd="gogogogogoogle4"
br["regno"] = str(reg_no)
br["passwd"] = str(pwd)
br["vrfcd"] = str(captcha)
br.method = "POST"

res=br.submit().read()
print br.geturl()
if br.geturl()==("https://academics.vit.ac.in/student/home.asp"):
    print "SUCCESS"
Beispiel #17
0
from CaptchaParser import CaptchaParser
import timeit
from PIL import Image
f = []
for (dirpath, dirnames, filenames) in walk('samples'):
    f.extend(filenames)
    break
timesum = 0
size = len(f)
count = 1
maxtime = 0
mintime = 100
currtime = 0
for im in f:
    img = Image.open("samples/" + str(im))
    c = CaptchaParser()
    starttime = timeit.default_timer()
    print "CAPTCHA:" + c.getCaptcha(img)
    endtime = timeit.default_timer()
    currtime = endtime - starttime
    if (currtime > maxtime):
        maxtime = currtime
        maximg = img.copy()
        print "new max:" + str(maxtime)
    if (currtime < mintime):
        mintime = currtime
        minimg = img.copy()
        print "new min:" + str(mintime)

    timesum += currtime
    print "Comparing image " + str(count) + "/" + str(size)
Beispiel #18
0
def get_class_details(reg_no = "", pwd = "", mob_num = ""):

    
    import mechanize, json, datetime 
    from bs4 import BeautifulSoup
    from CaptchaParser import CaptchaParser
    from PIL import Image
          
    
    #browser initialise
    br = mechanize.Browser()
    br.set_handle_robots(False)
    br.set_handle_equiv(True)
    br.set_handle_gzip(True)
    br.set_handle_redirect(True)
    br.set_handle_referer(True)
 
    #open website
    response = br.open("https://academics.vit.ac.in/parent/parent_login.asp")
    print br.geturl()

    #select form
    br.select_form("parent_login")

    
    #extracting captcha url
    soup = BeautifulSoup(response.get_data())
    img = soup.find('img', id='imgCaptcha')
    print img['src']
    #retrieving captcha image
    br.retrieve("https://academics.vit.ac.in/parent/"+img['src'], "captcha_parent.bmp")
    print "captcha retrieved"
    img = Image.open("captcha_parent.bmp")

    parser = CaptchaParser()

    captcha = parser.getCaptcha(img)
    print str(captcha)
    #fill form
    br["wdregno"] = str(reg_no)
    br["wdpswd"] = str(pwd)
    br["wdmobno"] = str(mob_num)
    br["vrfcd"] = str(captcha)
    br.method = "POST"
    br.submit()
    if br.geturl()==("https://academics.vit.ac.in/parent/home.asp"):
        print "SUCCESS"
   

        br.open("https://academics.vit.ac.in/parent/parent_home.asp")

        #opening academic history page

        response = br.open("https://academics.vit.ac.in/parent/student_history.asp")
        soup = BeautifulSoup(response.get_data())



        #extracting past grades

        curr_year = datetime.date.today().year
        curr_month = datetime.date.today().month
        past_grades = {}
        months = {"Jan":1, "Feb":2, "Mar":3, "Apr":4, "May":5, "Jun":6, "Jul":7, "Aug":8, "Sep":9, "Oct":10, "Nov":11, "Dec":12}


        for i in range(1,len(soup('table')[2].findAll("tr"))):
            
            exam_date = soup('table')[2].findAll("tr")[i].findAll("td")[6].getText().encode('utf-8').replace("\xc2\xa0", " ")
            exam_month = months[exam_date[:3]]
            exam_year = int(exam_date[4:8])
            
            course_grade = soup('table')[2].findAll("tr")[i].findAll("td")[5].getText().encode('utf-8').replace("\xc2\xa0", " ")
            
            if curr_month < 6:
                if (exam_year == curr_year - 1) and (course_grade == "A" or course_grade == "S"):
                    course_code = soup('table')[2].findAll("tr")[i].findAll("td")[1].getText().encode('utf-8').replace("\xc2\xa0", " ")        #this part can be reduced
                    course_title = soup('table')[2].findAll("tr")[i].findAll("td")[2].getText().encode('utf-8').replace("\xc2\xa0", " ")
                    past_grades[course_code] = course_title
            elif curr_month > 5:
                if ((exam_year == curr_year and exam_month < 6) or (exam_year == curr_year - 1 and exam_month > 6)) and (course_grade == "A" or course_grade == "S"):
                    course_code = soup('table')[2].findAll("tr")[i].findAll("td")[1].getText().encode('utf-8').replace("\xc2\xa0", " ")        #this part can be reduced
                    course_title = soup('table')[2].findAll("tr")[i].findAll("td")[2].getText().encode('utf-8').replace("\xc2\xa0", " ")
                    past_grades[course_code] = course_title

        #opening timetable page

        response = br.open("https://academics.vit.ac.in/parent/timetable.asp?sem=WS")
        soup = BeautifulSoup(response.get_data())


        #extracting class details
        class_details = {}
        for i in range(1,len(soup('table')[1].findAll("tr")) - 1):
            class_nbr = soup('table')[1].findAll("tr")[i].findAll("td")[1].getText().encode('utf-8').replace("\xc2\xa0", " ")
            course_code = soup('table')[1].findAll("tr")[i].findAll("td")[2].getText().encode('utf-8').replace("\xc2\xa0", " ")
            course_title = soup('table')[1].findAll("tr")[i].findAll("td")[3].getText().encode('utf-8').replace("\xc2\xa0", " ")
            course_mode = soup('table')[1].findAll("tr")[i].findAll("td")[6].getText().encode('utf-8').replace("\xc2\xa0", " ")
            slot = soup('table')[1].findAll("tr")[i].findAll("td")[8].getText().encode('utf-8').replace("\xc2\xa0", " ")
            class_venue = soup('table')[1].findAll("tr")[i].findAll("td")[9].getText().encode('utf-8').replace("\xc2\xa0", " ")
            faculty_name = soup('table')[1].findAll("tr")[i].findAll("td")[10].getText().encode('utf-8').replace("\xc2\xa0", " ")
            class_details[class_nbr] = (slot, course_title, course_code, course_mode, class_venue, faculty_name)

        return {"status":"Success","class_details":class_details, "past_grades":past_grades}
    else :
        print "FAIL"
        return {"status":"Failure"}