如何弄清楚如何使用 http 请求对自己进行身份验证

how to figure out how to authenticate myself using http requests

我正在尝试使用如下请求登录站点:

s = requests.Session()
login_data = {"userName":"username", "password":"pass", "loginPath":"/d2l/login"}
resp = requests.post("https://d2l.pima.edu/d2l/login?login=1", login_data)

虽然我收到了 200 条回复,但当我说

print(resp.content)
b"<!DOCTYPE html><html><head><meta charset='utf-8' /><script>var hash = window.location.hash;if( hash ) hash = '%23' + hash.substring( 1 );window.location.replace('/d2l/login?sessionExpired=0&target=%2fd2l%2ferror%2f404%2flog%3ftargetUrl%3dhttp%253A%252F%252Fd2l.pima.edu%253A80%252Fd2l%252Flogin%253Flogin%253D1' + hash );</script><title></title></head><body></body></html>" 

注意它说会话已过期。 我试过的: 在实际浏览器中注销并重新登录,但没有成功。 http basic auth,没有成功。

我在想也许我需要使用 cookie 来验证我自己的身份?

如果是,我如何确定要发送哪些 cookie?

我试着通过说

来解决这个问题
resp.cookies
Out[4]: <RequestsCookieJar[]> 

这不应该给我饼干的名字吗?我不确定如何处理这样的输出。 要点:我如何弄清楚如何在此网站上验证 MYSLEF? 感谢帮助。 我宁愿不使用硒。

通过加载此页面 https://d2l.pima.edu/d2l/login 并查看其源代码,您会注意到 POST 目标路径是 /d2l/lp/auth/login/login.d2l。尝试将其用作您的 POST 路径。您的其他字段看起来与表单的预期一致。

注意:如果您使用 python requests 创建会话对象,请使用它来发出您的请求:

resp = s.post(<blah blah>, login_data)

会话将保留登录服务器设置的任何 cookie,您可以继续使用 s 对象在经过身份验证的会话中发出请求。