gpt4 book ai didi

java - 如何使用 Java 在 Http Get 方法中设置 Cookie

转载 作者:太空狗 更新时间:2023-10-29 22:46:12 30 4
gpt4 key购买 nike

我想使用 cookie 进行手动 GET 操作,以便下载和解析网页。我需要提取安全 token ,以便在论坛上发帖。我已经完成登录,阅读了响应并提取了 cookie(3 对 (name,value) )。然后我写了包含 cookie 的字符串,如下所示:

CookieString="name1=value1; name2=value2; name3=value3"

然后我执行以下操作

HttpURLConnection connection
connection = (HttpURLConnection)(new URL(Link).openConnection());
connection.setRequestMethod("GET");
connection.setRequestProperty("Connection", "Keep-Alive");
connection.setRequestProperty("Cookie", CookieString );
connection.connect();

然后我阅读了该页面,但它显示我没有登录论坛。我做错了什么?

编辑:我知道如果我想发帖我必须提取安全 token 。我的思路是,为了提取它,我需要获取这个特定页面。但是为了使安全 token 成为隐藏字段,我必须在线,因此我需要 cookie。但是当我获取页面并如上所述设置 cookie 时,我将页面作为访客获取,这表明我不在线并且安全 token 的值是访客,这对我没有用。我会检查您提供给我的链接,希望能找到解决方案。

最佳答案

可以肯定的是,您应该从响应的 Set-Cookie header 中收集 cookie。要在后续请求中将它们发回,您应该使用 URLConnection#addRequestProperty() 将它们一一设置。 .

基本上:

// ...

// Grab Set-Cookie headers:
List<String> cookies = connection.getHeaderFields().get("Set-Cookie");

// ...

// Send them back in subsequent requests:
for (String cookie : cookies) {
connection.addRequestProperty("Cookie", cookie.split(";", 2)[0]);
}

// ...

split(";", 2) 是为了摆脱与服务器端无关的 cookie 属性,例如 expirespath

对于更方便的 HTTP 客户端,我建议看一下 Apache HttpComponents Client .它可以更透明地处理所有 cookie 内容。

另见:


更新:根据评论,这不是 cookie 问题。错误的请求 token 意味着服务器内置了 CSRF/bot 预防(以防止像你这样的人)。您需要使用表单从请求的页面中提取 token 作为隐藏输入字段,并将其作为请求参数重新发送。 Jsoup可能有助于提取所有(隐藏的)输入字段。不要忘记传递您希望以编程方式“按下”的按钮的名称-值对。另请参阅上述链接以获取更多提示。

在未来,你真的应该更清楚你检索到的确切错误,而不是胡乱猜测。复制粘贴确切的错误消息等。

关于java - 如何使用 Java 在 Http Get 方法中设置 Cookie,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3249137/

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