关于模拟登录教务系统的一些疑问 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
ifane
V2EX    程序员

关于模拟登录教务系统的一些疑问

  •  
  • /li>
  •   ifane 2016-05-11 15:40:52 +08:00 6333 次点击
    这是一个创建于 3507 天前的主题,其中的信息可能已经有所发展或是发生改变。

    模拟教务系统所需要的几个参数

    • 请求 Cookie
    • __VIEWSTATE
    • __VIEWSTATEGENERATOR
    • __EVENTVALIDATION

    请求 cookie 会在进教务系统响应给浏览器

    __VIEWSTATE \ __VIEWSTATEGENERATOR \ __EVENTVALIDATION这三个是隐藏在 html 表单里面的 8730b9c0-9982-42ce-9b18-2640506fdc58.png

    当 POST 数据时 f2dc2a60-066d-4dd9-be78-09cf302455d0.png

    请求头里有请求 Cookie

    请求主体里有__VIEWSTATE, 但是这个是由下面组合而成的

    __VIEWSTATE=__VIEWSTATE+&+__VIEWSTATEGENERATOR+&+__EVENTVALIDATION+&+Account+&+PWD+&CheckCode+&+cmdok

    每一个标签内包含的/标记 统统转为%2F,=统统转为%3D,+统统转为%2B

    __VIEWSTATE=%2FwEPDwUKMTA0NDkyOTUxNA9kFgICAw9kFgQCDw8PFgIeBFRleHRlZGQCEQ8PFgIfAAUCMjBkZBgBBR5fX0NvbnRyb2xzUmVxdWlyZVBvc3RCYWNrS2V5X18WAQUHQ2hrVXNlclVLjABopnY3NiJFSz0oR293GTZC &__VIEWSTATEGENERATOR=DD4FBC66 &__EVENTVALIDATION=%2FwEWBwKx8tHqBQKvo8HwCwKG85bvBgLO44u1DQLAiqigBwLM6LcMApnA7cMNf4XQgPVkJVQsZf3FTrkhLdziQ4k%3D &Account=***** &PWD=****** &CheckCode=je9p &cmdok= 

    post 数据以后会得到一个响应的 Cookie 030fdd73-e0fd-4fcc-8898-7af54fc80eeb.png a75b7dc5-02ed-4d71-9750-9b40551b0ee7.png

    那么就有了一个完整的 Cookie

    Cookie: ASP.NET_SessiOnId=k0rk4pyovyhc1l454tejrrrv; .ASPXAUTH=9FD433C6CC5CFE062C636A99A7DAD8CBDD8E0BCC5AF8F632F48F7879D46B40DE3E81C216943FDDEA7C57454B80C8BE24E7AFBB41253A81C6FFA1A799C5F441204216B1D884426C3CF9A5B2774E422F2633EABC5A5BB212C7DD4E887CBD301DEE4A60917E17121E54DAB4023421D4FEE762BA661C 

    通过这个完整的 Cookie 就可以查询课表,查询成绩等

    以上是我的分析,但是在我实践过程当中 post 数据会自动跳转到登录页面

    得不到登录成功后的完整 Cookie,

    94f12272-8e68-47c9-b7b0-176f1ee67c4f.png

    9698fc63-0198-49f4-b0c7-63d60f647511.png 这里本来应该显示表单数据,变成了请求负载,

    是我的 POST 方法不正确么?

    27 条回复    2016-05-21 20:03:49 +08:00
    Feiox
        1
    Feiox  
       2016-05-11 15:53:45 +08:00
    正方教务系统 :P
    ifane
        2
    ifane  
    OP
       2016-05-11 15:54:21 +08:00
    @Feiox 强智教务系统
    jimzhong
        3
    jimzhong  
       2016-05-11 16:01:07 +08:00
    以前做过正方的模拟登录,没有遇到楼主的问题。
    模拟登录失败可能是由于服务端会检查 UA ?
    楼主可以试试用 requests 的 session 。不用操心 cookie 。
    lxy
        4
    lxy  
       2016-05-11 16:03:53 +08:00
    网址……写对了吗?
    ifane
        5
    ifane  
    OP
       2016-05-11 16:20:43 +08:00
    @lxy 对了
    ifane
        6
    ifane  
    OP
       2016-05-11 16:21:17 +08:00
    @jimzhong 这个没接触过,不知道是怎么个弄?
    d2D5Cc
        7
    d2D5Cc  
       2016-05-11 16:28:31 +08:00
    教务系统想要纯用 post 拿到数据很难,到后面会有各种坑,比如不同系统之间跳转(认证系统和教务系统不是一个公司做的),还有课程信息几乎全部是 js 请求得到的,而简单的 post 并不能获取到 js 运行后的 html,建议使用 selenium 这种自动化来实现功能,简单方便
    hxndg
        8
    hxndg  
       2016-05-11 16:32:25 +08:00
    额。。。我在些登录我们学校的教务的时候,直接用的 request 的 session ,木有遇到问题,建议还是直接用 request 把。 http://docs.python-requests.org/en/master/
    hxndg
        9
    hxndg  
       2016-05-11 16:33:32 +08:00
    但是,如果要真是想抓取到各种信息的话,就好像北邮人论坛的那种必须得看 js 的解析了,这个就很尴尬了。
    Soar360
        10
    Soar360  
       2016-05-11 17:03:35 +08:00
    一看就是 ASP.NET WebForm ,呵呵哒。仔细检查下你的 Post 数据到底正确不吧。一般是没问题的。
    ifane
        11
    ifane  
    OP
       2016-05-11 17:05:37 +08:00
    @Soar360 我可以确定没错.
    lxy
        12
    lxy  
       2016-05-11 17:20:53 +08:00
    @ifane 这么自信……我也不好意思再说什么了()
    liangmishi
        13
    liangmishi  
       2016-05-11 17:31:12 +08:00 via Android
    http://www.tor1024.com/spider/4218ZDsqRItW57236333
    前几天写过一个正方教务系统
    extreme
        14
    extreme  
       2016-05-11 17:54:08 +08:00
    正方内页会检查 Refer 头,带上 Refer 头,具体内容你 F12 看 POST 时的。
    wuhuaji
        15
    wuhuaji  
       2016-05-11 18:46:11 +08:00
    我也写过 Python 版的模拟登陆,楼主可以参考下:
    https://github.com/WuHuaJi0/jwc/blob/master/auth.py
    Syc
        16
    Syc  
       2016-05-11 18:49:23 +08:00 via Android
    检查 UA 来路 特定 http 头 等
    (还有比如 115 有特定的浏览器 js 钩子)
    cdmaok
        17
    cdmaok  
       2016-05-11 19:30:35 +08:00
    selenium 走起。
    imNull
        18
    imNull  
       2016-05-11 19:53:52 +08:00 via Android
    我们学校也是强智教务系统,但版本可能不一样,我们学校的没你说的那么复杂。
    不知道有木有参考价值 https://github.com/xu42/DLPU-Student-API
    loveyu
        19
    loveyu  
       2016-05-11 23:43:12 +08:00
    之前用 C#做过正方的模拟,每次请求都把信息带全就好了,那个什么表单中的__VIEWSTATE 也得带,不然就报错。
    ysdj
        20
    ysdj  
       2016-05-12 00:54:12 +08:00
    你没请求验证码吧?
    bombless
        21
    bombless  
       2016-05-12 01:12:13 +08:00 via Android
    我印象中 viewstate 是要一路带过去的

    可以查一下关于 asp.net 原理的文章
    sholmesian
        22
    sholmesian  
       2016-05-12 07:15:34 +08:00 via iPhone
    教务系统的话还有一个坑是如果某个参数(包括但不限于用户名)含有中文时,编码统一的问题。
    yjd
        23
    yjd  
       2016-05-12 10:29:35 +08:00
    做 post 很多时候要注意引用页有没有带上。
    yangyanggnu
        24
    yangyanggnu  
       2016-05-12 13:37:21 +08:00
    你 POST 到 http://newjwglxt.jiea.cn/jiaowu_system/login.aspx 试试。

    另外,我用你给的 cookie 进去看了下,有如下链接:
    学院主站
    OA 系统
    新教务系统
    老教务系统
    科研成果申报
    一卡通查询
    资产管理系统

    但都是内网地址,暂时看不什么东西。
    ayaseangle
        25
    ayaseangle  
       2016-05-13 12:04:04 +08:00
    .net webform 做的系统。。。
    lightory
        26
    lightory  
       2016-05-21 17:36:43 +08:00
    @sholmesian 咦,在这里看到你了 :)
    sholmesian
        27
    sholmesian  
       2016-05-21 20:03:49 +08:00 via iPhone
    @lightory 哈哈 好久不见
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     5588 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 34ms UTC 06:32 PVG 14:32 LAX 22:32 JFK 01:32
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86