gpt4 book ai didi

java - 如何在Java中提交隐藏了带有生成值的csrf_token登录字段的html登录表单

转载 作者:太空宇宙 更新时间:2023-11-04 08:13:54 26 4
gpt4 key购买 nike

我需要自动从网站下载文件。文件下载按钮仅在我获得用户名和密码的登录后才会出现。在登录表单中,还有两个隐藏字段,其中之一是带有生成值的 csrf_token_login:

<input type="hidden" name="csrf_token_login" value="nl9YERDFpecfITb8QwFWneoaefykxp2b" />

如果我只需要登录名和密码(Using java.net.URLConnection to fire and handle HTTP requests 对此有很好的解释),那么很清楚如何在 Java 中进行编码(使用 java.net.HttpUrlConnection):提交 POST 请求,获取 cookie 并为任何后续请求设置它们。但是如何在登录表单上获取 csrf_token_login 的生成值并与其他值一起提交?

在登录页面的 HttpURLConnection 上使用 getInputStream() 读取它,可以得到 csrf 值。但同时这会建立连接并阻止设置用于发布数据的连接属性:

private HttpURLConnection logUrlCon;
...
BufferedReader logInput = new BufferedReader(new InputStreamReader(logUrlCon.getInputStream()));
... // read and get csrf value OK

logUrlCon.setDoOutput(true); // throws java.lang.IllegalStateException: Already connected

是否有任何方法可以在登录表单中生成此 csrf_tiken_login 值并使用用户名和密码发布它?

最佳答案

读取登录页面内容并使用正则表达式提取数据。您的隐藏字段具有非常独特的形式(具有唯一的名称等),因此非常适合基于正则表达式的数据提取。

关于java - 如何在Java中提交隐藏了带有生成值的csrf_token登录字段的html登录表单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10758665/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com