• 请不要在回答技术问题时复制粘贴 AI 生成的内容
ifane
V2EX  ›  程序员

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

  •  
  •   ifane · May 11, 2016 · 6594 views
    This topic created in 3660 days ago, the information mentioned may be changed or developed.

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

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

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

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

    但都是内网地址,暂时看不什么东西。
    ayaseangle
        25
    ayaseangle  
       May 13, 2016
    .net webform 做的系统。。。
    lightory
        26
    lightory  
       May 21, 2016
    @sholmesian 咦,在这里看到你了 :)
    sholmesian
        27
    sholmesian  
       May 21, 2016 via iPhone
    @lightory 哈哈 好久不见😄
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   5625 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 155ms · UTC 02:00 · PVG 10:00 · LAX 19:00 · JFK 22:00
    ♥ Do have faith in what you're doing.