如何解决如何使用http请求来验证自己的身份?

我试图使用如下请求登录一个网站。

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基本认证,不成功。

我在想也许我需要用cookie来验证自己对这个网站的身份?

如果是这样的话,我怎么确定要给它发送哪些cookie呢?

我试着想办法,说

resp.cookies
Out[4]: <RequestsCookieJar[]> 

这不应该是给我饼干的名字吗?我不知道该怎么处理这样的输出.要点:我怎么弄清楚如何将MYSLEF认证到这个网站上?感谢帮助.我宁愿不用selenium。

解决方案:

从加载这个页面 https:/d2l.pima.edud2lllogin。 并查看其来源,你会发现POST目标路径是 /d2l/lp/auth/login/login.d2l. 试着用它作为你的POST路径。 你的其他字段看起来与表单的预期一致。

注意:使用python requests 如果您创建了一个会话对象,就可以用它来发出请求。

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

会话将保存登录服务器设置的任何cookie,您可以继续使用该对象。s 对象,以便在经过验证的会话中进行请求。

给TA打赏
共{{data.count}}人
人已打赏
未分类

NameValueCollection vs Dictionary<string,string>[重复]。

2022-9-13 13:34:38

未分类

nginx docker容器作为运行在docker容器中的服务的反向代理。

2022-9-13 13:34:40

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索