HttpsURLConnection and Cookies

Basically, I just want to receive cookies from the server. The code here is simple, but I think this is not enough to get every cookie, like sessionID, etc.

import java.net.*; import java.util.*; public class Cookie { public static void main(String[] args) { try { URL url = new URL("http://www.google.com/"); URLConnection conn = url.openConnection(); System.out.println(con.getHeaderField("Set-Cookie")); } catch (Exception e) { } } } 

The result shows that I get only one cookie:

 NID=61=nNSsAl4g7DfxqHE7t__ghfoCc_J-RmY7PaTNoPOd_khLdvvuqI-fnteHgnQXMzmxj_C5HdMozcGfOTt8PvePLKpbDdUlzdVZiRKwNpQIej6_T69jt9C7Oi6E4F-gWPHD; expires=Mon, 14-Jan-2013 17:16:40 GMT; path=/; domain=.google.pl; HttpOnly 

Firefox receives NID and PREF, so it does not work.

Is there a way to get a PREF cookie?

Can someone tell me this is the correct way (code below) to send a POST.

 import java.io.*; import java.net.URL; import java.util.Iterator; import java.util.List; import java.util.Map; import javax.net.ssl.HttpsURLConnection; public class Cookie_Example { public static void main(String[] args){ try{ String https_url = "https://ssl.filmweb.pl/j_login"; URL url = new URL(https_url); String post = "_login_redirect_url=http%253A%252F%252Fwww.filmweb.pl%252F&j_username=test.filmweb%40gmail.com&j_password=test.filmweb&_rememberMe=on&pass=zaloguj"; HttpsURLConnection con = (HttpsURLConnection)url.openConnection(); con.setInstanceFollowRedirects(false); con.setDoInput(true); con.setDoOutput(true); con.setRequestMethod("GET"); con.setRequestProperty("Host", "ssl.filmweb.pl"); con.setRequestProperty("User-Agent", "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:13.0) Gecko/20100101 Firefox/13.0.1"); con.setRequestProperty("Accept","text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8"); con.setRequestProperty("Accept-Language","pl,en-us;q=0.7,en;q=0.3"); con.setRequestProperty("Accept-Encoding","gzip, deflate"); con.setRequestProperty("Connection","keep-alive"); con.setRequestProperty("Referer","https://ssl.filmweb.pl/login"); con.setRequestProperty("Content-Type","application/x-www-form-urlencoded"); con.setRequestProperty("Content-Length",post.length()+""); DataOutput output = new DataOutputStream(new BufferedOutputStream(con.getOutputStream())); output.write(post.getBytes()); Map<String, List<String>> hf = con.getHeaderFields(); Iterator it = hf.entrySet().iterator(); while (it.hasNext()) { Map.Entry pairs = (Map.Entry)it.next(); System.out.println(pairs.getKey() + " = " + pairs.getValue()); } } catch (Exception e) { } } } 

The result is an empty cookie,

 Set-Cookie = [_artuser_rememberMe=;Path=/;Domain=filmweb.pl;Expires=Thu, 01-Jan-1970 00:00:00 GMT] 

http://img72.imageshack.us/img72/1134/testgof.jpg

Screen from Tamper Data

This means that this code also does not work. How can I get __utma, __utmz, etc. Cookie? Can someone help me? What books will be useful?

+6
source share
1 answer

I think that with your con.getHeaderField("Set-Cookie")" statement you get only one header. But maybe the server sends you two cookies in two different headers.

I use another operator to retrieve all cookie headers:

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

To find out what you are sending to the server and what the server is sending to you, I recommend using a proxy server between your program (or web browser) and the server. Maybe Charles proxy can help you.

+8
source

Source: https://habr.com/ru/post/920539/


All Articles