java - 在使用原始表单数据的网站上填写登录表单
问题描述
我正在尝试使用 java 中的 HttpsURLConnection 登录网站 lectio.dk。最初我认为这就像使用带有相应用户名和密码的 cookie 向网站发布请求一样简单,但它并没有让我那么容易。该网站使用 ASP.NET 会话 ID,当从浏览器检索时,我可以使用它来访问该网站。
当我查看 Google Chrome 中的开发人员模式时,它似乎直接从文本字段(而不是通过 cookie)获取登录详细信息,据我所知,无法从 java 进行编辑。我认为这是因为包含来自两个文本字段的数据的表单数据是我看到写入登录详细信息的唯一地方。
如果有人能告诉我是否有一种以编程方式登录该网站并以登录用户身份访问该网站的方法,我会很高兴。
解决方案
您可以使用基本身份验证加载页面。像那样:
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
String userPassword = username + ":" + password;
String userPasswordEncoded = Base64.getEncoder().encodeToString(userPassword.getBytes(StandardCharsets.UTF_8));
connection.setRequestProperty("Authorization", "Basic " + userPasswordEncoded);
connection.connect();
...
这需要成为您对安全内容所做的任何请求的一部分。想想如果您使用的是 HTTP 客户端库,您还可以通过启用 cookie 支持来建立身份验证一次流启用。例如,OkHttp是一个不错的库。另请参阅具有基本身份验证的 Android OkHttp。
推荐阅读
- c - 为什么在 C 中声明函数名和功能块之间的变量编译为有效?
- react-native - react-native npm start 失败并显示日志
- javascript - 缩放图像尺寸
- r - 你如何从 r 中的 GLM 获得手段
- javascript - XMLHttpRequest,在 Excel VBA 中工作,不在 javascript/html 中工作
- database - 如何在 docker 容器内的 Oracle 数据库上使用 sqlplus?
- css - 有没有办法为小型设备包装占位符文本?
- python - 如何将网格布局添加到我的 pyqt5 代码中
- docker - GitLab 中的 Yuk-Chan Docker 镜像
- android - 如何在 Android 的设置中隐藏应用程序图标