当前位置:首页 > Java

Java 如何抓取cookie

2026-03-22 22:37:12Java

使用 HttpServletRequest 获取 Cookie

在 Java Web 应用中,可以通过 HttpServletRequest 对象获取客户端发送的 Cookie。HttpServletRequest 提供了 getCookies() 方法,返回一个 Cookie[] 数组。

import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServletRequest;

public void handleRequest(HttpServletRequest request) {
    Cookie[] cookies = request.getCookies();
    if (cookies != null) {
        for (Cookie cookie : cookies) {
            String name = cookie.getName();
            String value = cookie.getValue();
            System.out.println("Cookie Name: " + name + ", Value: " + value);
        }
    }
}

使用 HttpURLConnection 获取 Cookie

通过 java.net.HttpURLConnection 可以发送 HTTP 请求并获取服务器返回的 Cookie。服务器返回的 Cookie 通常存储在响应头的 Set-Cookie 字段中。

import java.net.HttpURLConnection;
import java.net.URL;
import java.util.List;
import java.util.Map;

public void fetchCookiesFromUrl(String urlString) throws Exception {
    URL url = new URL(urlString);
    HttpURLConnection connection = (HttpURLConnection) url.openConnection();
    connection.setRequestMethod("GET");

    Map<String, List<String>> headers = connection.getHeaderFields();
    List<String> cookies = headers.get("Set-Cookie");

    if (cookies != null) {
        for (String cookie : cookies) {
            System.out.println("Cookie: " + cookie);
        }
    }
}

使用 Apache HttpClient 获取 Cookie

Apache HttpClient 是一个功能强大的 HTTP 客户端库,可以方便地管理 Cookie。通过 CookieStore 可以存储和获取 Cookie。

import org.apache.http.client.CookieStore;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.BasicCookieStore;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.util.EntityUtils;

public void fetchCookiesWithHttpClient(String url) throws Exception {
    CookieStore cookieStore = new BasicCookieStore();
    CloseableHttpClient httpClient = HttpClients.custom()
            .setDefaultCookieStore(cookieStore)
            .build();

    HttpGet httpGet = new HttpGet(url);
    CloseableHttpResponse response = httpClient.execute(httpGet);

    cookieStore.getCookies().forEach(cookie -> {
        System.out.println("Cookie Name: " + cookie.getName() + ", Value: " + cookie.getValue());
    });

    EntityUtils.consume(response.getEntity());
    response.close();
    httpClient.close();
}

使用 OkHttp 获取 Cookie

OkHttp 是另一个流行的 HTTP 客户端库,可以通过 CookieJar 管理 Cookie。

import okhttp3.Cookie;
import okhttp3.CookieJar;
import okhttp3.HttpUrl;
import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.Response;

import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

public void fetchCookiesWithOkHttp(String url) throws IOException {
    List<Cookie> cookieList = new ArrayList<>();
    OkHttpClient client = new OkHttpClient.Builder()
            .cookieJar(new CookieJar() {
                @Override
                public void saveFromResponse(HttpUrl url, List<Cookie> cookies) {
                    cookieList.addAll(cookies);
                }

                @Override
                public List<Cookie> loadForRequest(HttpUrl url) {
                    return cookieList;
                }
            })
            .build();

    Request request = new Request.Builder()
            .url(url)
            .build();

    try (Response response = client.newCall(request).execute()) {
        cookieList.forEach(cookie -> {
            System.out.println("Cookie Name: " + cookie.name() + ", Value: " + cookie.value());
        });
    }
}

使用 Jsoup 获取 Cookie

Jsoup 是一个 HTML 解析库,同时支持发送 HTTP 请求并获取 Cookie。

Java 如何抓取cookie

import org.jsoup.Connection;
import org.jsoup.Jsoup;

import java.io.IOException;
import java.util.Map;

public void fetchCookiesWithJsoup(String url) throws IOException {
    Connection.Response response = Jsoup.connect(url)
            .method(Connection.Method.GET)
            .execute();

    Map<String, String> cookies = response.cookies();
    cookies.forEach((name, value) -> {
        System.out.println("Cookie Name: " + name + ", Value: " + value);
    });
}

注意事项

  • 在使用 HttpURLConnectionHttpClient 时,需要处理异常和资源关闭,避免内存泄漏。
  • 如果需要持久化 Cookie,可以将 Cookie 存储在文件或数据库中。
  • 某些网站可能对 Cookie 进行加密或设置 HttpOnly 标志,此时无法通过 JavaScript 获取 Cookie。

标签: Javacookie
分享给朋友:

相关文章

Java如何换行

Java如何换行

Java 字符串换行方法 在 Java 中实现字符串换行可以通过多种方式,具体取决于使用场景和需求。 使用转义字符 \n 是 Unix/Linux 系统中的换行符 \r\n 是 Windows 系…

php实现cookie

php实现cookie

PHP 设置 Cookie 使用 setcookie() 函数可以创建 Cookie。该函数需在页面内容输出前调用,通常放在 PHP 脚本开头。 语法: setcookie(name, value…

jquery获取cookie

jquery获取cookie

jQuery获取Cookie的方法 jQuery本身不提供直接操作Cookie的API,但可以通过原生JavaScript的document.cookie属性来实现。以下是几种常见的方法: 使用原生…

java 如何取cookie

java 如何取cookie

获取 Cookie 的方法 在 Java 中,可以通过 HttpServletRequest 对象获取 Cookie。以下是具体实现方式: import javax.servlet.http.Coo…

shell 如何调用Java

shell 如何调用Java

在Shell中调用Java程序 Shell脚本可以直接调用Java程序,通过java命令执行编译后的.class文件或打包的.jar文件。以下是具体实现方法: 编译Java源代码 在调用Java程序…

Java如何添加事件

Java如何添加事件

添加事件的基本方法 在Java中,事件处理通常涉及事件源、事件监听器和事件对象。以下是实现事件处理的基本步骤: 定义事件监听器接口 事件监听器是一个接口,定义了处理特定事件的方法。例如,Action…