0

使用 python 重定向到 SAML 的登录页面后,我可以使用相应的 cookie 正常发布我的登录数据吗?还是 SAML 不是那么直接?

这是我尝试使用 Python 请求登录的重定向页面。

import requests

User = ***** 
Pass = *****

payload = {
    'UserName': User,
    'Password': Pass
}

session = requests.session()

moodle_url = "https://moodle.vle.monash.edu/login/index.php?authCAS=CAS"
response = session.get(moodle_url)
cookies = session.cookies.get_dict()


SAML_url = response.url
response = session.post(SAML_url, payload)

print(response.url)

这样做似乎无法让我登录,因为我仍然返回相同的url

我尝试使用 chrome 手动登录并使用 Wireshark 捕获包,遵循 HTTP 流,浏览器似乎在被重定向后立即获取 SimpleSAMLAuthToken cookie。我无法理解这一点,因为我没有看到任何包含我的登录 ID 和密码的 POST。

据我了解,应该有某种形式的数据 POST-ing,我可以使用 Python 请求来模仿它,但在 Wireshark 中过滤“http”并没有显示任何内容。

这是 POST 问题还是我只是缺少一个或两个有效负载参数?

我对 python 和网络抓取都很陌生。非常感谢任何调试提示!

4

1 回答 1

1

Wireshark 是一个矫枉过正...只需看看谷歌浏览器中的网络标签。在那里你可以看到你的 POST 数据需要这样的格式:

post_data = {'UserName': 'Monash\%s' User,
             'Password': Password,
             'AuthMethod':'FormsAuthentication'}

如果您使用适当的用户代理,这也是一个好主意。如果您不这样做,您可能会被检测为机器人,并且 Web 服务器将拒绝您访问。

另一个提示:在每个 POST 请求中设置正确的标题(内容类型,接受......)

于 2017-04-20T16:30:36.543 回答