Java 如何抓取cookie
使用 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。

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);
});
}
注意事项
- 在使用
HttpURLConnection或HttpClient时,需要处理异常和资源关闭,避免内存泄漏。 - 如果需要持久化 Cookie,可以将 Cookie 存储在文件或数据库中。
- 某些网站可能对 Cookie 进行加密或设置
HttpOnly标志,此时无法通过 JavaScript 获取 Cookie。






