Python模拟登陆2:获取电子科大研究生成绩

前面小试了一把 能够成功登陆,但是这下要获取成绩可是废了好多功夫。首先他这个登陆只是登陆了一个frame框架页面,里面还有个js的二次跳转页面。还会自动登陆一次。只有在IE或者谷歌等http抓包才看的出来隐藏的地址。 开始以为很简单 直接在第二个登陆页面提交post 谁知道 他会自动跳转到第一个登陆页面 前端白痴的我有点乱入了。 最后试来试去, 偷偷去看了下cookies ,尝试性的直接提交了cookies想不到 成功了。 但是这个cookies是在成绩页面 不知道是request还是response的。 然后看了下 发现在第一个登陆的时候会生成一个cookies 带着这个cookies进入第二个登陆界面的时候 又会生成一个cookies 这个cookies直接就作为header提交进去,居然获得了成绩。 很是惊喜,因为第一次做这种东西 忙疼了一晚上, 第一次用cookies也是醉了。 可能有很简单的方法我没发现,比较太菜了,反正现在方法是实现了。 就主要是把这个cookies获取到就行了。然后脑补了一下python的字符串赋值 还有if的用法,,,原谅我刚学几天python。按其他语言的思维边猜边百度 还是写出来了。方法比较简单。

python有个cookies存储的方法,然后再登陆完后 获取特定的2个字段 再带入第二次获取成绩。 这两个字段是从一大堆cookie分析出来的,说白了就是一个一个试排除法。最终代码如下 。P掉了 用户名密码 用username password代替

#coding:utf-8
import re
import urllib
import urllib2
import cookielib
import os
import json
import sys
import time
from urllib import quote,unquote
from urllib2 import HTTPError
from urllib2 import URLError

username='XXXX'
password='XXXX'
#登陆模块
def Login():

        cj = cookielib.CookieJar();
        opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cj));
        urllib2.install_opener(opener); 

        #打开获得 cookie
        info_URL = "http://portal.uestc.edu.cn/index.portal"
        info_Login_URL = "https://uis.uestc.edu.cn/amserver/UI/Login";
        info_URL_Grade="http://gs.uestc.edu.cn/epstar/app/template.jsp?mainobj=YJSXT/PYGL/CJGLST/V_PYGL_CJGL_KSCJHZB&tfile=KSCJHZB_CJCX_CD/KSCJHZB_XSCX_CD_BD&filter=V_PYGL_CJGL_KSCJHZB:WID='665h4kg-bflb7s-hwsj36d3-1-hx7epplv-5w9'"
        info_URL_Grade_Frame="http://gs.uestc.edu.cn/epstar/app/template.jsp?mainobj=YJSXT/CJGLST/V_PYGL_CJGL_KSCJHZB&tfile=KSCJHZB_CJCX_CD/KSCJHZB_XSCX_CD_KJ¤t.model.id=665h4kf-ntmygk-fep2jgjw-1-fepbsyak-5w"
        infoOPEN = urllib2.urlopen(info_URL)
        #生成要发送的数据
        LoginData = {
            'IDToken0':'',
            'IDToken1':username,
            'IDToken2':password,
            'IDButton':'Submit',
            'goto':'aHR0cDovL3BvcnRhbC51ZXN0Yy5lZHUuY24vbG9naW4ucG9ydGFs',
            'encoded':'true',
            'gx_charset':'UTF-8',
            }; 

        #把发送数据转换格式
        LoginData = urllib.urlencode(LoginData);    

        #生成请求数据
        info_Login_Request = urllib2.Request(info_Login_URL, LoginData);

        #添加数据头部
        info_Login_Request.add_header('Content-Type', "application/x-www-form-urlencoded");
        info_Login_Request.add_header('User-Agent', "Mozilla/5.0 (X11; Linux i686) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.95 Safari/537.36");

        #发送请求,尝试登陆
        info_Login_Open = urllib2.urlopen(info_Login_Request);

        info_Login_Open2 = urllib2.urlopen(info_URL_Grade_Frame);
        cookies=''
        new=1
        for cookie in cj:
            if cookie.name=='iPlanetDirectoryPro':
                #print cookie.name,cookie.value
                cookies+=cookie.name+'='+cookie.value+';'
            if cookie.name=='JSESSIONID' and new ==1:
                new =0
                #print cookie.name,cookie.value
                cookies+=cookie.name+'='+cookie.value+';'
        print cookies
        #验证登陆是否成功
        request = urllib2.Request(
        url     = info_URL_Grade,
        headers = {'Cookie' :cookies},
        )
        tt = urllib2.urlopen(request).read()
        print tt
        fout=open("tt.html","w")
        fout.write(tt)
        print 'success!'

if __name__ == "__main__" :
    Login()

图就不上了,自己可以试试

时间: 2024-10-06 19:54:04

Python模拟登陆2:获取电子科大研究生成绩的相关文章

Python模拟登陆万能法-微博|知乎

Python模拟登陆让不少人伤透脑筋,今天奉上一种万能登陆方法.你无须精通HTML,甚至也无须精通Python,但却能让你成功的进行模拟登陆.本文讲的是登陆所有网站的一种方法,并不局限于微博与知乎,仅用其作为例子来讲解. 用到的库有"selenium"和"requests".通过selenium进行模拟登陆,然后将Cookies传入requests,最终用requests进行网站的抓取.优点就是不但规避了"selenium"其本身抓取速度慢的问题

Python模拟登陆万能法

此文转自:https://zhuanlan.zhihu.com/p/28587931   转录只是为了方便学习,感谢他的分享 Python模拟登陆让不少人伤透脑筋,今天奉上一种万能登陆方法.你无须精通HTML,甚至也无须精通Python,但却能让你成功的进行模拟登陆.本文讲的是登陆所有网站的一种方法,并不局限于微博与知乎,仅用其作为例子来讲解. 用到的库有"selenium"和"requests".通过selenium进行模拟登陆,然后将Cookies传入reque

Python模拟登陆:模拟登陆电子科大信息门户测试

最近在学习Python的网络操作,网上有很多模拟登陆方法.这里做个笔记. 没有验证码的还是比较容易的. #coding:utf-8 import re import urllib import urllib2 import cookielib import os import json import sys import time from urllib import quote,unquote from urllib2 import HTTPError from urllib2 import

Python模拟登陆练习——imooc.com登陆

写下这篇文章的时候,是博主学习python的第三天( 也许是第四天:( ),python是博主接触的第二门解释型语言(第一门是javascript). 讲真在很久之前就想要用博客记录自己的学习历程了,然而就像写日记一样,写着写着就放弃了-.- so今天决定给自己一个好的开端~ 博主的学习方式是直奔目的,遇到问题百度各种博客,网站,百度找不到google找,就这样.这种学习方式是真的见效快,但显而易见,基础会比较薄弱. 因此学习python的基本语法,就直奔爬虫了! ---------------

python模拟登陆实践

对于一些需要登陆的网址爬取数据,需要登录才能访问.本文介绍如何利用python进行模拟登陆 准备工具: 1.搭建django 框架 用于模拟登陆 2.fiddler抓包工具,chrome浏览器 3.pycharm   编辑器 步骤: 1.开启django 服务,这里就不多描述,直接百度一下,就能找到很多答案(记得创建一个superuser,以便后面的登陆 ) 进入 http://127.0.0.1:8000/admin/     这是django自带的后台,进行登陆时,django自带了  cs

通过抓包,实现Python模拟登陆各网站,原理分析!

一.教程简介 1.1 基本介绍 通过分析登陆流程并使用 Python 实现模拟登陆到一个实验提供的网站,在实验过程中将学习并实践 Python 的网络编程,Python 实现模拟登陆的方法,使用 Firefox 抓包分析插件分析网络数据包等知识. 模拟登录可以帮助用户自动化完成很多操作,在不同场合下有不同的用处,无论是自动化一些日常的繁琐操作还是用于爬虫都是一项很实用的技能.本课程通过 Firefox 和 Python 来实现,环境要求如下: Python 库:urllib, http.cook

Python模拟登陆

模拟人人登陆 #encoding=utf-8 import urllib2 import urllib import cookielib def renrenBrower(url,user,password): #登陆页面,能够通过抓包工具分析获得,如fiddler.wireshark login_page = "http://www.renren.com/PLogin.do" try: #获得一个cookieJar实例 cj = cookielib.CookieJar() #cook

Python模拟登陆3: 进入选课系统(手工输入验证码阶段)

其实最想做的是选课插件,于是这次试试了下选课系统,但是选课系统 有验证码. 很是蛋疼. 需要识别. 但是现在可以用另一种方法.就是下载到本地手动输入.也只需要一次就够了.因为登陆成功后就可以随意操作其他东西了. 后面再学习验证码的智能识别. 首先主要是模拟逻辑是.先设置一个cookie存储器,用它去访问验证码链接.然后会得到cookie.还有下载好的验证码图片,就在本地.然后再把验证码,用户名,密码,和那个cookie一起提交到登陆.于是cookie就一致了. 有点不舒服的就是需要在本地看下那个

Python模拟登陆4:进入图书馆预约系统查看是否预约成功

代码仅供测试方便所用. 这个图书管理系统是asp.net EXTJS写的 在分析页面的时候非常复杂,一度差点放弃.不过还是慢慢的进步.还顺便学了一下正则表达式.这个代码的作用就是登陆进系统,然后获取预约信息.代码有点乱,以后在整理,这里先存档 这个网址校外ip不能访问,所以代码仅供参考,部分逻辑还是能够套用的 #-*- coding: utf-8 -*- #!usr/bin/env python import os import urllib2 import urllib import cook