使用Python的请求登录网站

时间:2019-02-01 20:53:50

标签: python web logging python-requests

因此,我目前正在为我的学校做一个项目,我需要使用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)

1 个答案:

答案 0 :(得分:1)

您将发帖请求发送到错误的URL。如果使用开发人员工具检查登录表单,则可以获取表单的action属性。

enter image description here

在开发人员工具的“网络”选项卡中,您可以看到发出的POST请求和参数。您应该将发布请求发送到https://jidelna.mgo.opava.cz:6204/j_spring_security_check

enter image description here

enter image description here

如果所有这些方法均无效,请考虑尽可能模拟标题。正在发送一个cookie,因此您可能必须对请求使用session

enter image description here

如果其他所有操作失败,则总会有selenium