我试图通过脚本登录edx网站。为此,我使用python的请求库。这是密码
from requests import session
ID = 'example@gmail.com'
PASSWORD = '*********'
with session() as c:
g = c.get('https://courses.edx.org/login/', allow_redirects=True)
csrftoken = (g.headers['set-cookie']).split()[0][10:-1]
login_data = dict(email=ID, password=PASSWORD, csrfmiddlewaretoken=csrftoken, next='/')
a = c.post('https://courses.edx.org/login/', data=login_data, headers={'Referer':'https://courses.edx.org/login/'})
response = c.get('https://courses.edx.org/dashboard')
print response.url
但是这个代码不起作用。输出是
当我运行a.content
时。它正在显现
CSRF verification failed. Request aborted
任何人请帮帮我。在
事实上,你在为CSRF代币分拆
将获取csrf令牌作为“sessionid=csrfstring”。你也必须删除sessionid部分。所以把它改成
^{pr2}$使用pythonshell验证是否以正确的方式获取csrf令牌。在
如果您想从edx提取格式化数据,那么最好使用edxapi注册您的应用程序。然后可以使用OAuth 2机制访问api。这包括创建
code
并将该代码交换为access token
。它类似于gmail和facebook提供的OAuth2认证。有关如何创建令牌的详细信息是here。还提供demo相关问题 更多 >
编程相关推荐