其实最想做的是选课插件,于是这次试试了下选课系统,但是选课系统 有验证码。 很是蛋疼。 需要识别。 但是现在可以用另一种方法。就是下载到本地手动输入。也只需要一次就够了。因为登陆成功后就可以随意操作其他东西了。 后面再学习验证码的智能识别。
首先主要是模拟逻辑是。先设置一个cookie存储器,用它去访问验证码链接。然后会得到cookie.还有下载好的验证码图片,就在本地。然后再把验证码,用户名,密码,和那个cookie一起提交到登陆。于是cookie就一致了。 有点不舒服的就是需要在本地看下那个图片长什么样,然后再输入控制台。具体代码是:
#!usr/bin/env python #-*- coding: utf-8 -*- import os import urllib2 import urllib import cookielib import re Img_URL='http://gs.uestc.edu.cn/wsxk/VerifyCodeGenServlet.do' Login_URL='http://gs.uestc.edu.cn/wsxk/login.jsp' Class_URL='http://gs.uestc.edu.cn/wsxk/jsp/T_PYGL_KWGL_WSXK_KXKC.jsp' username='XXXX' password='XXXX' def login(): cj = cookielib.CookieJar() opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cj)) urllib2.install_opener(opener) #get img img_req=urllib2.Request(Img_URL) img_response=opener.open(img_req) try: out=open('code','wb') #print img_response.read() out.write(img_response.read()) out.flush() out.close() print 'get code success' except IOError: print 'file wrong' #input code img_code=raw_input("please input code: ") print 'your code is %s'%img_code #login LoginData = { 'Login.Token1':username, 'Login.Token2':password, 'verifyCode':img_code, }; login_req = urllib2.Request(Login_URL, urllib.urlencode(LoginData)); login_req.add_header('User-Agent', "Mozilla/5.0 (X11; Linux i686) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.95 Safari/537.36"); login_response=opener.open(login_req) print 'login success' fout=open("tt.html","w") fout.write(login_response.read()) fout.close() #load class info print 'load class' fout=open('t1.html','w') fout.write(opener.open(Class_URL).read()) fout.close() if __name__=='__main__': login()
时间: 2024-11-10 01:10:55