当前位置:首页 > 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提供了多种方式实现异步处理,以下是几种常见的方法: 使用CompletableFuture CompletableFuture是Java 8引入的异步编程工具,支…

java 如何取cookie

java 如何取cookie

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

vue实现cookie

vue实现cookie

Vue 中操作 Cookie 的方法 在 Vue 项目中操作 Cookie 可以通过原生 JavaScript 或第三方库实现。以下是几种常见方法: 原生 JavaScript 操作 Cookie…

php cookie 实现

php cookie 实现

设置 Cookie 在 PHP 中,使用 setcookie() 函数设置 Cookie。该函数接受多个参数,包括名称、值、过期时间、路径、域名、安全标志和 HTTPOnly 标志。 setcook…

php cookie实现登录

php cookie实现登录

PHP Cookie 实现登录 在 PHP 中,使用 Cookie 实现登录功能是一种常见的用户认证方式。以下是实现的基本方法和步骤: 设置 Cookie 存储用户信息 使用 setcookie()…

Java如何实现异步处理

Java如何实现异步处理

异步处理的实现方式 Java中实现异步处理有多种方法,包括使用多线程、Future、CompletableFuture以及响应式编程框架等。以下是几种常见的实现方式: 使用多线程 通过创建新线程执行…