首页 > 解决方案 > 在使用原始表单数据的网站上填写登录表单

问题描述

我正在尝试使用 java 中的 HttpsURLConnection 登录网站 lectio.dk。最初我认为这就像使用带有相应用户名和密码的 cookie 向网站发布请求一样简单,但它并没有让我那么容易。该网站使用 ASP.NET 会话 ID,当从浏览器检索时,我可以使用它来访问该网站。

当我查看 Google Chrome 中的开发人员模式时,它似乎直接从文本字段(而不是通过 cookie)获取登录详细信息,据我所知,无法从 java 进行编辑。我认为这是因为包含来自两个文本字段的数据的表单数据是我看到写入登录详细信息的唯一地方。

如果有人能告诉我是否有一种以编程方式登录该网站并以登录用户身份访问该网站的方法,我会很高兴。

标签: javaasp.nethttppostform-data

解决方案


您可以使用基本身份验证加载页面。像那样:

    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


推荐阅读