免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 7771 | 回复: 14
打印 上一主题 下一主题

用c以http服务器的通信问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-03-11 07:08 |只看该作者 |倒序浏览
我想c写一个程序和http服务器通信,脱离浏览器.服务器是要认证的,因此要处理cookies.但是我感觉cookies很麻烦,有些值仅从服务器传给我的信息中根本没有办法得到,不知道怎么弄了,还是他们是经过某种运算得到的.
[2009-3-11 4:29:41:876]
POST /interface/userlogin.aspx HTTP/1.1
Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/x-shockwave-flash, application/msword, application/x-silverlight, */*
Referer: http://game.cs.js.cn/dgyz/enter/1/
Accept-Language: zh-cn
Content-Type: application/x-www-form-urlencoded
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; CIBA)
Host: s1.diguo.popwan.com
Content-Length: 100
Connection: Keep-Alive
Cache-Control: no-cache
Cookie: LNAME=uid635%404254; ADVALUE=84001A242807

userid=uid654@4254&name=popowan&Timestamp=1236716987&Sign=884ae0182370effedd62d7d329362a98&gameId=56
[2009-3-11 4:29:41:996]
HTTP/1.1 302 Found
Date: Tue, 10 Mar 2009 20:29:45 GMT
Server: Microsoft-IIS/6.0
X-Powered-By: ASP.NET
X-AspNet-Version: 2.0.50727
Location: http://s1.diguo.popwan.com/empire/login.cfm?uname=%75%69%64%36%35%34%40%34%32%35%34&vcode=D9D4277240F89CAC944E4CA0380DBFAD&eflag=login&serverid=1
Cache-Control: private
Content-Type: text/html; charset=utf-8
Content-Length: 274

<html><head><title>Object moved</title></head><body>
<h2>Object moved to <a href="http://s1.diguo.popwan.com/empire/login.cfm?uname=%75%69%64%36%35%34%40%34%32%35%34&vcode=D9D4277240F89CAC944E4CA0380DBFAD&eflag=login&serverid=1">here</a>.</h2>
</body></html>

[2009-3-11 4:29:41:996]
GET /empire/login.cfm?uname=%75%69%64%36%35%34%40%34%32%35%34&vcode=D9D4277240F89CAC944E4CA0380DBFAD&eflag=login&serverid=1 HTTP/1.1
Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/x-shockwave-flash, application/msword, application/x-silverlight, */*
Referer: http://game.cs.js.cn/dgyz/enter/1/
Accept-Language: zh-cn
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; CIBA)
Host: s1.diguo.popwan.com
Connection: Keep-Alive
Cache-Control: no-cache
Cookie: LNAME=uid635%404254; ADVALUE=84001A242807


[2009-3-11 4:29:42:217]
HTTP/1.1 302 Moved Temporarily
Connection: close
Date: Tue, 10 Mar 2009 20:29:45 GMT
Server: Microsoft-IIS/6.0
X-Powered-By: ASP.NET
Set-Cookie: CFID=347899;expires=Thu, 03-Mar-2039 20:29:45 GMT;path=/
Set-Cookie: CFTOKEN=55299945;expires=Thu, 03-Mar-2039 20:29:45 GMT;path=/
Set-Cookie: LNAME=uid654%404254;expires=Sun, 28-Mar-2077 23:43:52 GMT;path=/
Set-Cookie: ADVALUE=84001A242807A242993;expires=Sun, 28-Mar-2077 23:43:52 GMT;path=/
location: index.cfm?page=proclaim
Content-Language: zh-CN
Content-Type: text/html; charset=UTF-8
比如红笔标出的,我就不知道如何从服务器的信息中得到.虽然我大致知道是什么意思.
希望大家帮我,弄了一个晚上 ,就卡在这里了

我是在vc6.0下写的

[ 本帖最后由 uid500 于 2009-3-11 07:09 编辑 ]

论坛徽章:
0
2 [报告]
发表于 2009-03-11 07:11 |只看该作者
在这之前的一个通信是这样的
[2009-3-11 4:29:41:566]
GET /dgyz/enter/1/ HTTP/1.1
Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/x-shockwave-flash, application/msword, application/x-silverlight, */*
Referer: http://game.cs.js.cn/dgyz/gotogame/
Accept-Language: zh-cn
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; CIBA)
Host: game.cs.js.cn
Connection: Keep-Alive
Cookie: cnzz_a1040180=2; vw1040180=%3A41711522%3A; sin1040180=; rtime=1; ltime=1236716951052; cnzz_eid=26280641-1233667793-; cnzz_a988069=2; vw988069=%3A41711522%3A; sin988069=; {popwan_dvbbs_ClientId}=399f70c4622def72cea5448c4399567f; GameUnion_=gameuid=1067020&gameusername=uid654&gamepassword=pRiNQ%2bbx9%2fxsuz5bpmhmmA%3d%3d&gameencryptkey=0cf3216c237596ab07839885c2bcf139&DateTime=20090311042944&BBsKey=ec01d1bd7501ff3caba4fcdb0e89c2ef


[2009-3-11 4:29:41:746]
HTTP/1.1 200 OK
Connection: close
Date: Tue, 10 Mar 2009 20:29:47 GMT
Server: Microsoft-IIS/6.0
X-Powered-By: ASP.NET
X-AspNet-Version: 2.0.50727
Cache-Control: private
Content-Type: text/html; charset=utf-8
Content-Length: 1066



<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title></title>
<script language="javascript" type="text/javascript">
   
    window.onload = function SaveData()
    {         
        document.getElementById("form1").submit();
           
    }
   
    </script>
</head>
<body>


    <form id="form1" method="post" action="http://s1.diguo.popwan.com/interface/userlogin.aspx">
    <div>
    <input type="hidden" id="url" value="http://s1.diguo.popwan.com/interface/userlogin.aspx" />
    <input type="hidden" id="userid" name="userid" value="uid654@4254" />
    <input type="hidden" id="name" name="name" value="popowan" />
    <input type="hidden" id="Timestamp" name="Timestamp" value="1236716987" />
    <input type="hidden" id="Sign" name="Sign" value="884ae0182370effedd62d7d329362a98" />
<input type="hidden" id="gameId" name="gameId" value="56" />
   
    </div>
    </form>
    </body>
</html>

论坛徽章:
0
3 [报告]
发表于 2009-03-11 07:56 |只看该作者
cookies不是由http服务器发给brower的吗?
肯定是经过加密处理的。
通过数据包头Set-Cookie发送吧。

论坛徽章:
0
4 [报告]
发表于 2009-03-11 08:45 |只看该作者
从抓包来看,我的cookies好象没有加密啊,另外我想在tcp协议上实现啊:wink:

论坛徽章:
0
5 [报告]
发表于 2009-03-11 08:50 |只看该作者
那cookies应该在本地,但是我在本地找不到,我的C:\Documents and Settings\yonghu\Cookies没有什么东西,还是系统里有没有环境变量....有点晕啊

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
6 [报告]
发表于 2009-03-11 09:04 |只看该作者

论坛徽章:
0
7 [报告]
发表于 2009-03-11 09:14 |只看该作者
原帖由 flw 于 2009-3-11 09:04 发表

呵呵 什么意思啊?我哪里错了.还是本来就很简单的问题啊

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
8 [报告]
发表于 2009-03-11 09:21 |只看该作者
原帖由 uid500 于 2009-3-11 09:14 发表

呵呵 什么意思啊?我哪里错了.还是本来就很简单的问题啊

你先花点儿功夫看看 RFC,搞清楚 cookie 的本质是什么,历史背景是什么。
同学,每当你首次接触一样技术的时候,多了解一点儿周边的东西,会帮助你写出 BUG 更少的程序。

论坛徽章:
0
9 [报告]
发表于 2009-03-11 10:07 |只看该作者
谢谢指点啊  看了,有一个问题想问一下,在c里面用cookie是不是只能操作文件啊??

论坛徽章:
0
10 [报告]
发表于 2009-03-11 11:22 |只看该作者
GET /empire/login.cfm?uname=%75%69%64%36%35%34%40%34%32%35%34&vcode=D9D4277240F89CAC944E4CA0380DBFAD&eflag=login&serverid=1 HTTP/1.1
Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/x-shockwave-flash, application/msword, application/x-silverlight, */*
Referer: http://game.cs.js.cn/dgyz/enter/1/
Accept-Language: zh-cn
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; CIBA)
Host: s1.diguo.popwan.com
Connection: Keep-Alive
Cache-Control: no-cache
Cookie: LNAME=uid635%404254; ADVALUE=84001A242807


Set-Cookie是由服务器设定的,也叫sesion,我自己的http服务器的用户登陆就是用它做的,每次连接
我都会检查http头里有没有这个项 ,如果有,取出它的值,查找服务器存放session的hash表,如果找到,
合法,更新对应的最后访问时刻;否则,一律禁止访问,默认过期时间20分钟,如最后访问时间与当前时刻
差超过20分钟,从hash表中移除。

我好像记得(不一定对):
Cookie应该是在客户端由javascript设置的吧(个人理解),
在http头信息中和Set-Cookie应该是有区别的
所以你可以吧Cookie改为Set-Cookie试试!
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP