繁体   English   中英

网页抓取登录

[英]Web-scraping login

使用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。

据我了解,应该有某种形式的数据发布,我可以使用Python请求进行模仿,但是在Wireshark中过滤“ http”并不会显示任何形式。

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

我对python和网络抓取都是相当陌生的。 非常感谢任何调试技巧!

Wireshark实在是太过分了……只要看看Google Chrome中的“网络”标签即可。 在那里,您可以看到POST数据需要这样的格式:

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM