python 模拟登录不成功, 求大神帮助!!!

2014-02-19 14:26:53 +08:00
 yhf
今天想做个小DEMO, 把自己教务处里的成绩进行分析, 做一个可视化. 可是没想到卡在了第一步....

以前用python模拟登录的时候都是两分钟搞定的, 今天模拟登录教务处居然弄了两个小时也没成功. 教务处的网址在这里: http://202.117.120.37/xdjwWebNew/index.jsp

我的代码:
# -*- coding: utf-8 -*-
import requests

s = requests.Session()
login_data = {
'uid': 'xxxxxxx',
'password':'xxxxxxxxx',
'command': 'studentLogin',
'sltType': '学生',
'Submit': '确定'
}

header = {
'Host': '202.117.120.37',
'Proxy-Connection': 'keep-alive',
'Content-Length': '95',
'Cache-Control': 'max-age=0',
'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8',
'Origin': 'http://202.117.120.37',
'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/32.0.1700.107 Safari/537.36',
'Content-Type': 'application/x-www-form-urlencoded',
'Referer': 'http://202.117.120.37/xdjwWebNew/systemAdmin/Login.jsp?command=studentLogin',
'Accept-Encoding': 'gzip,deflate,sdch',
'Accept-Language': 'zh-CN,zh;q=0.8,en;q=0.6'
}
s.post('http://202.117.120.37/xdjwWebNew/Servlet/UsersControl', data = login_data, headers = header)
r = s.get('http://202.117.120.37/xdjwWebNew/main_study.jsp')
print r.text.encode('utf-8')


不知道错在哪里, 返回的总是一个乱七八糟的网站....
5624 次点击
所在节点    Python
30 条回复
nodejx
2014-02-19 15:30:16 +08:00
LZ可以把“s.post('http://202.117.120.37/xdjwWebNew/Servlet/UsersControl', data = login_data,headers=header)”修改成“r=s.post('http://202.117.120.37/xdjwWebNew/Servlet/UsersControl', data = login_data, headers = header)”,然后print r.url看下跳转到的url是否正确。
Comdex
2014-02-19 15:37:17 +08:00
同样想模拟学校的登录正方教务系统,求楼主指点
yhf
2014-02-19 15:44:50 +08:00
@nodejx 我已经发现猫腻了, 我用下面的代码查看登录页面的原代码, 返回的居然是另一个网页!

import urllib2

command=studentLogin'
url = 'http://202.117.120.37/xdjwWebNew/systemAdmin/Login.jsp?command=studentLogin'
html = urllib2.urlopen(url).read()
print html

这是什么情况!.......
nodejx
2014-02-19 16:16:33 +08:00
nodejx
2014-02-19 16:40:14 +08:00
@加入header字段就可以使用requests来get上面的页面了,urllib2我不熟,应该也是可以加入header参数的吧。
nodejx
2014-02-19 16:42:14 +08:00
@yhf应该是urllib2连接超时会自动跳转到docs.python.org/2/library/urllib2.html这个页面。
blueandhack
2014-02-19 17:35:51 +08:00
@yhf 试着用wireshark抓包看看,到底post的是哪个地址。
blueandhack
2014-02-19 17:36:37 +08:00
@yhf 还可以试试使用Cookie欺骗
tan9le
2014-02-19 17:40:12 +08:00
var sharedValue = -333181683
function change(){
var pw = document.form1.password.value;

pw = hex_md5(pw);
//alert(pw+sharedValue);
pw = hex_md5(pw+sharedValue); //用共享数值再次加密
//document.write(pw);
document.form1.password.value = pw ;
// return true;
}
话说排除你那诡异的提交地址的问题之外,页面上的javascript加密中sharedValue是每次页面刷新都会变的,请注意
zhy0216
2014-02-19 17:44:29 +08:00
很奇怪的样子,
真不行我们有: https://github.com/jeanphix/Ghost.py
zhy0216
2014-02-19 17:46:36 +08:00
@tan9le 原来是这样! 这个password的value总是在变的啊
fucker
2014-02-19 18:18:48 +08:00
xdjw,西电教务,哥们也西安的啊
yhf
2014-02-19 19:20:21 +08:00
@tan9le 恩 这个已经注意了
yhf
2014-02-19 19:23:46 +08:00
@zhy0216 好东西
yhf
2014-02-19 19:24:09 +08:00
@nodejx 好 我试试
yhf
2014-02-19 19:25:16 +08:00
@blueandhack post的地址不就是chrome里查到的request的那个地址吗?
Tink
2014-02-19 19:28:57 +08:00
额。。我老早以前做过。。。。同西电
intosec
2014-02-19 19:31:50 +08:00
用浏览器看看登陆请求POST的是什么数据,看看是否对password进行了加密处理。
PS:这个网站上直接就有猪肉店
yhf
2014-02-19 19:39:28 +08:00
@yhf 能看一下你的代码吗?
yhf
2014-02-19 19:40:06 +08:00
@intosec post的数据已经搞出来了 关键是post以后它会自动跳转

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

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

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

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

© 2021 V2EX