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')


不知道错在哪里, 返回的总是一个乱七八糟的网站....
5625 次点击
所在节点    Python
30 条回复
intosec
2014-02-19 19:46:09 +08:00
@yhf 那要是不管它的跳转,直接用登陆后获得的cookie去打开POST学生成绩的url呢?
zsj950618
2014-02-19 19:50:44 +08:00
教务系统有验证码的怎么破。。。
yhf
2014-02-19 20:02:05 +08:00
@intosec 额 我不会写...不过觉着这样应该可行
blueandhack
2014-02-19 21:49:10 +08:00
yutify
2014-02-19 21:50:03 +08:00
@blueandhack 为什么我5分钟前发的主题直接沉底呢?没有显示在最上面 http://v2ex.com/t/100970
blueandhack
2014-02-19 21:51:25 +08:00
@yhf 用的Cookie登陆的
crazycookie
2014-02-21 09:05:15 +08:00
没关系的,主要是,你要获得cookies,至于登录后他登录到那边无所谓的。你只要能有权限浏览你想要的页面即可
不管他登录后跳转到什么页面,获得cookies,然后把cookies放到新的请求中去获得 你想要的页面。
PS:我到现在碰到的最噁心的方式,http auth, cookie 登录, 外加ip和 user agent 验证. 这都被我绕过去了。

关于 表单参数一直变的问题的回答是:有办法。
用Ghost.py. 可以用js去控制填写. 然后把他的返回的dom转换成html即可。
PS again: js的执行结果也在里面哦

做得细致点,伪造下 user-agent, 代理下ip, 基本可以模拟人的访问行为动作了.
算是黑技能了(我好像暴露了什么)
reverland
2014-02-22 22:07:48 +08:00
@zsj950618 教务的验证码,如果是指正方教务那种,相当简单,之前我们学校做个[https://github.com/reverland/scripts/tree/master/python/captcha_cl](https://github.com/reverland/scripts/tree/master/python/captcha_cl).如果是谷歌那种,人工吧……

另外,自从开始用selenium……再也不想自己去打开firebug研究模拟登录了……
reverland
2014-02-22 22:09:16 +08:00
@zsj950618 selenium可以截屏……截屏时顺便把验证码解决就行……也许有更好的办法。
reverland
2014-02-22 22:11:48 +08:00
@zsj950618 我忽然想起来,正方教务有好几个入口 aspx1 aspx2 aspx3等等,一般只有一个入口要验证码……

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

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

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

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

© 2021 V2EX