有人用 Python 玩过易班吗?

2016-02-13 21:16:13 +08:00
 Exin
最近在尝试用 Python 登陆易班模拟答题,登陆可以成功,可是获取题库和获取试题时都从服务器返回了首页的 HTML ,无法拿到题,很奇怪。

下面是代码:

----------------------------------------------------------
# coding: utf-8
import time
import requests

# login
ses = requests.session()
login_url = "https://www.yiban.cn/login/doLoginAjax"
user = {
"account": "abc@xyz.com", # 邮箱
"password": "123456", # 密码
"captcha": None
}
response_login = ses.post(login_url, user)
login_check_url = "http://www.yiban.cn/ajax/my/getLogin"
response_check_login = ses.post(login_check_url)
if json.loads(response_check_login.text)["data"]["isLogin"] == True:
# get paper
get_papers_url = "http://www.yiban.cn/t/student/showtk"
response_papers = ses.get(get_papers_url)
# response_papers.text 是 易班首页的内容,而不是试题库的内容
----------------------------------------------------------
对应的人工操作:
#login
点击“登陆”,在登陆界面输入用户名、密码,点击“登陆”。
#get paper
点击顶部菜单“我的”->“题库”
----------------------------------------------------------
是哪里做的不对?
4429 次点击
所在节点    Python
8 条回复
limbo0
2016-02-13 22:22:44 +08:00
ajax
7sDream
2016-02-13 22:26:52 +08:00
ajax +1
liqingcan
2016-02-13 22:35:16 +08:00
虽然开学的时候叫我们注册过易班,但是好像并没什么用,表示我账号都忘了。。。
yexiaoxing
2016-02-13 23:18:43 +08:00
看看访问的时候的 request 吧
Exin
2016-02-14 08:12:51 +08:00
@yexiaoxing 就是按照访问时的 request 写的代码呀
wuyu1998
2016-02-14 12:59:26 +08:00
先截包,分析包的头部,包含的用户 id 、 csrf 、 cookie 的资料。
然后写到你的请求中
Exin
2016-02-14 14:22:03 +08:00
@wuyu1998 form data 完全和人工操作一致了, request headers 也逐个仿造了,还是不行。
22too
2016-02-15 11:14:43 +08:00
刚刚看了,原因是因为自动会做 cookies 的提交。模仿 ajax 的时候,你没有提交 cookies 导致的

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

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

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

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

© 2021 V2EX