当前位置: 首页 > 知识库问答 >
问题:

如何登录到CAS与多个页面使用python请求?

张鸿宝
2023-03-14

我试图使用python请求登录到我的大学的CAS。我在网上看过一些教程和帖子,但是它们都适用于在同一个页面上有用户名和密码字段的CAS。这是我想登录的网站:https://cas.tamu.edu/cas/login?service=https://howdy.tamu.edu/uPortal/Login

如您所见,只有一个用户名字段,然后单击提交后,您将被带到同一个页面,只有该字段现在是密码。这里是当前的代码,我有不工作:

import requests
import lxml.html
from bs4 import BeautifulSoup

# URL of webpage
login_url = "https://cas.tamu.edu/cas/login?service=https://howdy.tamu.edu/uPortal/Login&renew=true"
howdy = "https://howdy.tamu.edu/uPortal/normal/render.uP"
username = # my username
password = # my password

# create a session to store cookies
sesh = requests.session()

params = {'service': howdy}
# gets the URL and converts the text of the HTML code
req = sesh.get(login_url, params=params)
html_content = req.text

print html_content

# parsing the page for hidden inputs
login_html = lxml.html.fromstring(html_content)
hidden_inputs = login_html.xpath(r'//form//input[@type="hidden"]')
user_form = {x.attrib["name"]: x.attrib["value"] for x in hidden_inputs}
print(user_form)

user_form["username"] = username
user_response = sesh.post(login_url, data=user_form)

print user_response.url

# same thing for the password page
pass_form = {x.attrib["name"]: x.attrib["value"] for x in hidden_inputs}
print(pass_form)

pass_form["password"] = password
pass_response = sesh.post(user_response.url, data=pass_form)

print pass_response.url

我根据本教程得出以下结论:https://brennan.io/2016/03/02/logging-in-with-requests/. 特别是关于CAS的部分。

共有1个答案

廖臻
2023-03-14

我找到了一个变通方法,它不完全是我想要的,但对我的目的有用。我发布这个,以防有人发现这个有类似的问题。我使用浏览器cookie来使用chrome的当前cookie,所以如果我已经登录,那么我可以访问CAS后面的信息。更多信息在这篇文章:https://stackoverflow.com/a/29628188/9613156.

 类似资料:
  • 与我的团队一起,我们使用Spring Boot编写了Spring application+SAPUI5门户。Web应用程序分为三个独立的位置,例如: 我的spring应用程序安全性如下所示: 当然,我们也有重定向课。现在我们必须为每个应用程序提供不同的登录页面。我试图将spring security配置为接受不同页面上的多个登录表单,但它不起作用。有可能吗?我阅读了文档,但没有定论。

  • 问题内容: 与我的团队一起,我们使用Spring Boot编写了Spring应用程序+ SAPUI5门户。Web应用程序分为三个单独的位置,例如: webapp:-app1-app2-app3 为了访问这些应用程序,我们实现了登录页面。根据用户角色,我们将用户重定向到确切的应用。 我的春季应用程序安全性如下所示: 当然,我们还有带重定向的课程。现在,我们必须为每个应用程序提供不同的登录页面。我试图

  • 我试图发布一个请求登录到使用Python中的请求模块的网站,但它不是真的工作。我是新来的...所以我不知道我是否应该制作我的用户名和密码cookie或者我发现的某种类型的HTTP授权(??)。 所以现在,我想我应该用“post”和cookies。。。。 我有一种感觉,我做错了饼干的事...我不知道。 如果登录不正确,主页的标题应该显示为“Locationary.com”,如果登录不正确,则应显示为

  • 我想用selenium登录这个网页。我尝试了selenium的find_element_by_,并使用浏览器中的检查元素。但是我无法登录。我在搜索id、名称、类名,这样我就可以用send_keys传递数据,但是没有做到这些。有人能帮助我提供一些代码来将数据推送到所需的字段吗?谢谢。这就是我到目前为止所做的。 在此之后,我试图点击按钮登录使用 但它失败了。它给出了无法找到“登录”的错误。由于默认情况

  • 问题内容: 我正在尝试找到一种无需使用Python即可通过浏览器自动登录Facebook的方法。我尝试了“请求”库。尝试了几种方法: … … 最后一种方法填充页面上的“电子邮件”框,但“通过”框保持为空… 有人可以帮我吗?是否可以使用请求模拟FB登录? 谢谢! 问题答案: 您需要发送完整的表格。找出Facebook期望的最简单方法是使用类似Google Chrome的开发人员工具的工具 来监视您的

  • 问题内容: 我正在尝试使用Python中的“请求”模块发布一个登录网站的请求,但它实际上无法正常工作。我是新来的…所以我不知道是否应该制作我的用户名和密码cookie或我发现的某种HTTP授权内容(??)。 所以现在,我认为我应该使用“发布”和cookie。 我有种感觉,我在做饼干的事情做错了…我不知道。 如果登录不正确,则首页标题应显示在“ Locationary.com”上;如果登录不正确,则