所以我目前正在为我的学校做一个项目,我需要使用 Python 登录我们的食堂网站。我正在使用请求,但代码不工作。它只是将我重定向到起始页面,而不是用户页面。我在其他网站上试过这段代码,效果很好。我发现,这个网站使用了一些 JavaServer 页面。这可能是问题所在吗?
我在 Youtube 上尝试了一些教程,甚至在这里搜索了一些内容,但对我没有任何帮助。
headers = {
'user-agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36 OPR/58.0.3135.53'
}
login_data = {
'j_username': '**',
'j_password': '**',
'terminal': 'false',
'type': 'web',
'_spring_security_remember_me': 'on'
}
with requests.session() as c:
url = 'https://jidelna.mgo.opava.cz:6204/faces/secured/info.jsp?terminal=false&keyboard=false&printer=false'
r = c.get(url)
soup = BeautifulSoup(r.content, features="html.parser")
login_data['_csrf'] = soup.find('input', attrs={'name': '_csrf'})['value']
login_data['targetUrl'] = soup.find('input', attrs={'name': 'targetUrl'})['value']
r = c.post(url, data=login_data, headers=headers)
最佳答案
您将发布请求发送到错误的 url。如果您使用开发人员工具检查登录表单,您可以获得表单的 action
属性。
在开发人员工具的网络选项卡中,您可以看到正在发出的 POST 请求和参数。您应该向 https://jidelna.mgo.opava.cz:6204/j_spring_security_check
如果所有这些都不起作用,还可以考虑尽可能模拟 header 。正在发送一个 cookie,因此您可能必须使用 session与请求。
如果其他一切都失败了,总会有 selenium .
关于python - 使用 Python 的请求登录网站,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54487023/