java - 如何使用 Jsoup 登录 ASPX 网站
问题描述
我一直在尝试使用 Jsoup 爬虫登录到一个 aspx 网站,到目前为止我发现的所有内容都与表单有关,但是这里的这个 aspx 网站没有任何表单。我该怎么做呢?
这是我到目前为止所拥有的:
Connection.Response loginForm = Jsoup.connect(LOGARUN_URL)
.method(Connection.Method.GET)
.execute();
Connection.Response currentPage = Jsoup.connect(LOGIN_FORM_URL)
.data("LoginName", USERNAME)
.data("Password", PASSWORD)
.cookies(loginForm.cookies())
.method(Connection.Method.POST)
.userAgent(USER_AGENT)
.execute();
System.out.println(currentPage.parse().html());
解决方案
经过一番挖掘,我在这里找到了答案。
下面提供了一个简短的摘要:
第 1 步:进入您要登录的页面并使用 Chrome 开发者控制台(选项>工具>开发者工具)并输入 $("input")
第 2 步:获取名称和值并将其添加到您以前的 .data
第 3 步:转到页面源并查找并添加任何其他需要的数据及其值
之后你应该完成它应该看起来像这样
Connection.Response currentPage = Jsoup.connect(LOGIN_FORM_URL)
.data("LoginName", USERNAME)
.data("Password", PASSWORD)
.data("SubmitLogon", "true")
.userAgent(USER_AGENT)
.data("input[name=__VIEWSTATE]","/wEPDwULLTE5NTUyNzc3NDhkZC7w9zeYDbAWpWTaWlQFzEFw15ln")
.data("input[name=__VIEWSTATEGENERATOR]","5A2128B1")
.cookies(loginForm.cookies())
.method(Connection.Method.POST)
.execute();
推荐阅读
- image - 如果我有本地 docker 镜像。我如何列出上面安装的内容?
- awk - 根据特定字段打印两个文件的信息
- c# - 使用 C# 输出 pdf 中的所有超链接
- mysql - 在 mysql 中写入的 Sidekiq 工作者在单线程时表现更好
- android - 在 SwipeRefreshLayout 中使用 Webview 时出现网页子滚动问题
- r - 如何在多个ID上循环r中的xirr函数
- reactjs - 按钮单击导致组件输出错误
- azure-cosmosdb - 如何在 azure cosmos db 中为 asp.net core web api 实现上一个/下一个分页
- python - Python 中 set() 中的“添加”操作或 dict() 中的“插入”实际上是 O(n),其中 n 是键字符串的长度?
- sql - 如何使用聚合函数改善慢速 sql 查询