最近教务系统升级了。。用 python 爬时, URL 被加密了无法操作模拟登陆

2015-04-18 23:08:17 +08:00
 wind3110991

Header里的信息:

General
Remote Address:222.201.132.116:80
Request URL:http://222.201.132.116/(wa4qm345dj1m5i55qectnu22)/default2.aspx
Request Method:POST
Status Code:302 Found

Cache-Control:no-cache, no-store
Content-Length:173
Content-Type:text/html; charset=gb2312
Date:Sat, 18 Apr 2015 13:43:18 GMT
Expires:-1
Location:/(wa4qm345dj1m5i55qectnu22)/xs_main.aspx?xh=(这里是我的教务系统ID)
P3P:CP=CAO PSA OUR
Pragma:no-cache
Pragma:no-cache
Server:Microsoft-IIS/6.0
X-AspNet-Version:1.1.4322
X-Powered-By:ASP.NET

Accept:text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,/;q=0.8
Accept-Encoding:gzip, deflate
Accept-Language:zh-CN,zh;q=0.8
Cache-Control:max-age=0
Connection:keep-alive
Content-Length:198
Content-Type:application/x-www-form-urlencoded
Host:222.201.132.116
Origin:http://222.201.132.116
Referer:http://222.201.132.116/(wa4qm345dj1m5i55qectnu22)/default2.aspx
User-Agent:Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/44.0.2369.0 Safari/537.36

__VIEWSTATE:dDwyODE2NTM0OTg7Oz5VGnjXV87Z19Dm3QbgRgvcptEYyA==
txtUserName:(我的ID)
TextBox2:(我的密码)
txtSecretCode:xwcu
RadioButtonList1:(unable to decode value)
Button1:
lbLanguage:
hidPdrs:
hidsc:

主要是URL:http://222.201.132.116/(wa4qm345dj1m5i55qectnu22)/default2.aspx
这个URL中间是什么加密方法啊? = =

自己模拟登陆的代码:

import urllib
import urllib2
import cookielib
import re

class SCUT:

    def __init__(self):
        self.loginUrl = '这里是Login的URL'
        self.cookies = cookielib.CookieJar()
        self.postdata = urllib.urlencode({
            'txtUserName:':'我的ID',
            'TextBox2':'我的密码'
         })
        self.opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(self.cookies))

    def getPage(self):
        request  = urllib2.Request(
            url = self.loginUrl,
            data = self.postdata)
        result = self.opener.open(request)
        #打印登录内容
        print result.read().decode('gbk')


scut = SCUT()
scut.getPage()

有大神知道如何解决吗?

4174 次点击
所在节点    问与答
21 条回复
binux
2015-04-18 23:22:05 +08:00
你有没有想过,如果“加密”了,浏览器是怎么登录的?
decken
2015-04-18 23:32:02 +08:00
可以先获取被"加密"的登录URL
NewYear
2015-04-18 23:33:31 +08:00
@binux 根本就没加密,先抓取一下/路径,就会跳转,数据都写在包头里了。
lk09364
2015-04-18 23:41:05 +08:00
duplicate of /t/184559
我这边 __VIEWSTATE 内容和你的一样,看来这个直接传回去就可以。
Ghoul2005
2015-04-18 23:42:23 +08:00
只要没有验证码,都没有任何障碍,只是多请求一两个页面而已。
chaucerling
2015-04-18 23:44:25 +08:00
请求的是frame的地址<frame src="http://jw2005.scuteo.com/">
response header返回一个重定向的地址
Location:/(gx4jp0repbkmkn45u5muqlqu)/Default.aspx
chaucerling
2015-04-18 23:48:43 +08:00
之后又两个重定向,真蛋疼
Location:http://222.201.132.117/default2.aspx
Location:/(bpkwxe55m0gnz23beiprl545)/default2.aspx
RIcter
2015-04-18 23:56:39 +08:00
這教務系統有漏洞的_(:з」∠)_好像
cxe2v
2015-04-19 00:00:57 +08:00
@RIcter 教务系统基本都是漏洞一堆的
wind3110991
2015-04-19 00:05:55 +08:00
@NewYear 那应该怎么操作?
wind3110991
2015-04-19 00:08:15 +08:00
@lk09364 什么意思啊
sb
2015-04-19 00:12:37 +08:00
那串东西是个session, 你提取出来给拼装上就好。
lgh
2015-04-19 00:19:52 +08:00
母校……
trepwq
2015-04-19 07:00:06 +08:00
母校。。。
oott123
2015-04-19 10:25:14 +08:00
PhantomJS 大法好
ccbikai
2015-04-19 12:36:12 +08:00
去年做过一个这样的,没难度,代码搞丢了
NewYear
2015-04-19 13:11:40 +08:00
@wind3110991 先用你的组件/插件/类/控件访问http://222.201.132.116/这个地址,但是要禁止跳转,然后获取HTTP头部的跳转信息Location这部分,就是你说的“加密”部分了啊。然后以后访问的网址部分,都带上这个,不就好了。
welsmann
2015-04-19 13:50:24 +08:00
看路径就知道是正方.....
bestie
2015-04-19 17:53:13 +08:00
华南皇家理工大学, 轮子哥一个学校
Comdex
2015-04-19 20:43:28 +08:00
@NewYear
@wind3110991 17楼正解

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/184648

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX