Как я могу получить все куки с сайта, используя Java - PullRequest
1 голос
/ 22 марта 2020

Я хочу получить все файлы cookie с веб-сайта, используя Java У повара ie есть:

  • _ga
  • _gid
  • PHPSESSID

Я попробовал этот код, но он дал только PHPSESSID.

 CookieManager cookieManager = new CookieManager();
 CookieHandler.setDefault(cookieManager);

 URL url = new URL("https://example.com/");

 URLConnection connection = url.openConnection();
 connection.getContent();

 List<HttpCookie> cookies = cookieManager.getCookieStore().getCookies();
 for (HttpCookie cookie : cookies) {
     System.out.println(cookie.getDomain());
     System.out.println(cookie);
 }

Как я могу решить эту проблему?

1 Ответ

1 голос
/ 22 марта 2020

Приведенный выше пример кода устанавливает URL-соединение с указанным c сайтом (example.com).

Поэтому при вызове cookieManager будут получены только файлы cookie, установленные указанным c веб-сайтом (example.com) только. Он не будет считывать код повара ie, созданный другим веб-сайтом.

Чтобы получить все файлы cookie, необходимо обновить программу, чтобы установить URL-соединения со всеми веб-сайтами, участвующими в создании файлов cookie.

Вот рабочий пример:

// File name:  GetCookies.java

import java.io.*; 
import java.net.*; 

public class GetCookies { 

    public static void showCookies(String websiteURL)  throws IOException {
        CookieManager cookieManager = new CookieManager(); 
        CookieHandler.setDefault(cookieManager); 

        // Access the website
        URL url = new URL(websiteURL); 
        URLConnection urlConnection = url.openConnection(); 
        urlConnection.getContent();

        // Get CookieStore 
        CookieStore cookieStore = cookieManager.getCookieStore(); 

        // Get cookies 
        for (HttpCookie cookie : cookieStore.getCookies()) { 
            System.out.println("\n Cookie: " + cookie.getName()); 
            System.out.println("\t Domain: " + cookie.getDomain()); 
            System.out.println("\t Value: " + cookie.getValue());
        } 
    }
    public static void main(String[] args) throws IOException { 

        showCookies("https://stackoverflow.com/");
        showCookies("https://www.google.com/");
    } 
} 

Выход:

> javac GetCookies.java

> java GetCookies

 Cookie: prov
         Domain: .stackoverflow.com
         Value: ece1201b-b714-98ef-c063-0015fcc6440b

 Cookie: NID
         Domain: .google.com
         Value: 200=Mhc_xgGU-7HFK243aESiUxBhUPOcsJ_eNiLSeQhrfA0   

 Cookie: 1P_JAR
         Domain: .google.com
         Value: 2020-03-22-01
...