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

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

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

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

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

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