HttpURLConnection 得不到cookie里的sessionID?

yjheeq 2010-11-12 11:19:29
目标网站:http://shua.zhuzhuxc.com
访问时,用wireshark抓包,可以看到 Cookie:AJSTAT_ok_times=8; AJSTAT_ok_pages=17; ASP.NET_SessionId=fq0cag55golsxin5xzndadzg
可是用HttpURLConnection时,就是得不到,查了资料后,发现,.net里好像是在第一次访问时,给客户分配一个非永久性的 cookie,不会放在cookies文件夹里,只放在内存中,是不是这样,就没法用程序得到这个ASP.NET_SessionId了呢? 顺便问一下,在抓包中看到提交的数据中LoginBtn.x=12&LoginBtn.y=58,请问这两个数据是怎么来的,我在提交的表单中硬是没找到啊,我是学java,对net不是很熟,谢谢帮助!
我用的java,代码如下:

public static void main(String[] args) throws Exception {
URL url = new URL("http://shua.zhuzhuxc.com/login.aspx");
HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection();
Map map = urlConnection.getHeaderFields();
Set ks = map.keySet();
for (Iterator iterator = ks.iterator(); iterator.hasNext();) {
String key = (String) iterator.next();
System.out.println(key+":"+map.get(key));
}
}

得到的结果如下:
null:[HTTP/1.1 200 OK]
X-AspNet-Version:[2.0.50727]
Date:[Fri, 12 Nov 2010 03:17:48 GMT]
Content-Length:[15881]
Content-Type:[text/html; charset=utf-8]
Server:[Microsoft-IIS/6.0]
X-Powered-By:[ASP.NET]
Cache-Control:[private]

...全文
471 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
孟子E章 2010-11-12
  • 打赏
  • 举报
回复
LoginBtn.x=12&LoginBtn.y

是点击<input name="LoginBtn" type=image src="x.gif">这样的提交按钮生成的
孟子E章 2010-11-12
  • 打赏
  • 举报
回复
其实,你清空浏览器的Cookie,第一次访问这个地址,你也是检测不到Cookie的
孟子E章 2010-11-12
  • 打赏
  • 举报
回复
试试这个
http://www.hijava.org/code/httpurlconnection-cookie-usage

yjheeq 2010-11-12
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 zthsn 的回复:]

Cookies:
Response.Cookies["username"].Value = TextBox1.Text.Trim(); //保存
Response.Cookies["username"].Expires = DateTime.Now.AddDays(1);//过期时间
this.Label1.Text = "用户名:" + Request.Cookies["userna……
[/Quote]
谢谢你,不过,我是想用java程序访问网站,得到该网站的sessionId,我是不可能去改别人网站服务端的代码的
zthsn 2010-11-12
  • 打赏
  • 举报
回复
Cookies:
Response.Cookies["username"].Value = TextBox1.Text.Trim(); //保存
Response.Cookies["username"].Expires = DateTime.Now.AddDays(1);//过期时间
this.Label1.Text = "用户名:" + Request.Cookies["username"].Value;//获取

Session:
Session["SessionID"]=TextBox1.Text.Trim(); //保存
TextBox1.Text=Session["SessionID"].ToString();//获取
WM_JAWIN 2010-11-12
  • 打赏
  • 举报
回复
LoginBtn.x=12&LoginBtn.y=58
这个我知道,就是图像按钮 LoginBtn,点鼠标点击位置。

浪子-无悔 2010-11-12
  • 打赏
  • 举报
回复
这个不懂,帮你顶下,别沉了。。。
hch126163 2010-11-12
  • 打赏
  • 举报
回复
服务器响应的 set-cookie 就是 cookie 值
String cookieVal = null;
String key=null;
for (int i = 1; (key = http.getHeaderFieldKey(i)) != null; i++ ) {
if (key.equalsIgnoreCase("set-cookie")) {
cookieVal = http.getHeaderField(i);
cookieVal = cookieVal.substring(0, cookieVal.indexOf(";"));
sessionId=sessionId+cookieVal+";";
}
}

如果客户端禁用cookie ,会用URL重写的方式来实现session. 可以看看url
孟子E章 2010-11-12
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 yjheeq 的回复:]

引用 6 楼 net_lover 的回复:
其实,你清空浏览器的Cookie,第一次访问这个地址,你也是检测不到Cookie的

要是没有Cookie,那抓包软件是怎么抓到这个sessionId的呢?不管你是什么时候访问这个网站,软件都能抓到sessionID
[/Quote]

你清空客户端Cookie再测试,我测试的结果是:清空Cookie'之后,第一次访问是没有Cookie的,以后的访问才会有
yjheeq 2010-11-12
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 net_lover 的回复:]
其实,你清空浏览器的Cookie,第一次访问这个地址,你也是检测不到Cookie的
[/Quote]
要是没有Cookie,那抓包软件是怎么抓到这个sessionId的呢?不管你是什么时候访问这个网站,软件都能抓到sessionID

62,272

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧