网页抓取登录

时间:2017-04-18 19:14:42

标签: python web-scraping saml wireshark login-page

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

这是重定向的page我尝试使用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 Stream之后,浏览器似乎在重定向后立即获取SimpleSAMLAuthToken cookie。我无法理解这一点,因为我没有看到任何包含我的登录ID和密码的POST。

根据我的理解,应该有一些形式的数据POST,我可以模仿使用Python请求进入,但过滤为" http"在Wireshark中没有显示任何内容。

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

我对python和web抓取都很新。非常感谢任何调试提示!

1 个答案:

答案 0 :(得分:1)

Wireshark太过分了......只需查看Google Chrome中的网络标签即可。在那里你可以看到POST数据需要这样的格式:

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

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

另一个提示:在每个POST请求中设置正确的标头(content-type,accept ....)