python - 使用 Python 的请求登录网站

标签 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)

最佳答案

您将发布请求发送到错误的 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

如果所有这些都不起作用,还可以考虑尽可能模拟 header 。正在发送一个 cookie,因此您可能必须使用 session与请求。

enter image description here

如果其他一切都失败了,总会有 selenium .

关于python - 使用 Python 的请求登录网站,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54487023/

相关文章:

python - 使用 SymPy 的新假设

python - 如何向另一台服务器发送请求并在 Pyramid View 中响应结果?

javascript - 通过 es6 脚本创建 Web 表单

java - 你觉得 java.util.logging 足够了吗?

python - 处理分割数据帧时出现 Pandas KeyError

python - 整数文字是Python中的一个对象?

python - 初学者 : python namespace collision?

jquery - 具有动画滚动效果的居中水平网页布局

java - 无法使用 log4j SMTP Appender 发送电子邮件。获取 "SMTPSendFailedException: 530 5.7.1 Authentication required"

python - Scapy 使用 Python 将数据包保存在带有时间戳的日志文件中