请高手过来,能搞定500分相送

daisi 2009-12-24 05:29:29
有高手能模拟登录 北方网:https://secure.enorth.cn/user/login ,没有,用httpwebrequest进行,在下研究了很久,也没有搞定,所以 不得不请教高手!
...全文
1234 89 打赏 收藏 转发到动态 举报
写回复
用AI写文章
89 条回复
切换为时间正序
请发表友善的回复…
发表回复
xiaoxiaoyu2013 2012-01-09
  • 打赏
  • 举报
回复
我想做个WinForm 程序,模拟登录新浪博客,然后写博客,提交博客
wangfeizjk 2010-01-06
  • 打赏
  • 举报
回复
做个标记
daisi 2010-01-04
  • 打赏
  • 举报
回复
请cuike519过来接分啊
xzjxylophone 2009-12-31
  • 打赏
  • 举报
回复
超强人。。。
deyter 2009-12-31
  • 打赏
  • 举报
回复
mark
Aslangg 2009-12-31
  • 打赏
  • 举报
回复
另外需要申明的是,我只是针对此网友的问题做回答,只是出于学习和研究的目的,其他任何事情与我无关

强人 膜拜下
daisi 2009-12-31
  • 打赏
  • 举报
回复
我也明白楼主是怎么获得第二个sessionid的了,你应该就是在设为false的情况下,重新去get重定向后的页面的cookie得到的吧?如果在true的情况下好像没法直接获得第二个sessionid,所以我直接用原来那个无论怎样都不对,有办法在true下获得第二个seesionid没有呢
daisi 2009-12-31
  • 打赏
  • 举报
回复
楼主你是不是重定向将那个 request.AllowAutoRedirect = false; 然后再单独去get从定向后的网页获取第二个sessionid?有办法在设为true的情况下获取第二个sessionid没有?
szj820 2009-12-30
  • 打赏
  • 举报
回复
mark
yongningzh 2009-12-30
  • 打赏
  • 举报
回复
niu
daisi 2009-12-30
  • 打赏
  • 举报
回复
[Quote=引用 54 楼 cuike519 的回复:]
1、登录现在已经完成。
2、模拟发送blog的方法如下:
  由于不知道服务器上到底需要什么数据,首先可以肯定这是一个POST,既然是POST就应该把Form里面的表单项全部POST回去。
  关于Cookie肯定保存了登录的相关信息,确定你获得的Cookie里面是否有这个信息,如果没有没关系,你可以模拟一个Cookie。
  推荐你使用两个工具(Wireshark,ComView)来跟踪,对于HTTPs的可能看到的都是乱码,但是HTTP的都是明文,所以这个POST应该比前面的登陆要稍微简单些。
 
下面是我用ComView跟踪的内容:
0x0030  FF FF 70 5C 00 00 50 4F-53 54 20 68 74 74 70 3A  p\..POST http:
0x0040  2F 2F 75 2E 65 6E 6F 72-74 68 2E 63 6E 2F 63 6F  //u.enorth.cn/co
0x0050  6E 73 6F 6C 65 2F 61 72-74 69 63 6C 65 2E 64 6F  nsole/article.do
0x0060  20 48 54 54 50 2F 31 2E-30 0D 0A 41 63 63 65 70    HTTP/1.0..Accep
0x0070  74 3A 20 69 6D 61 67 65-2F 67 69 66 2C 20 69 6D  t: image/gif, im
0x0080  61 67 65 2F 78 2D 78 62-69 74 6D 61 70 2C 20 69  age/x-xbitmap, i
0x0090  6D 61 67 65 2F 6A 70 65-67 2C 20 69 6D 61 67 65  mage/jpeg, image
0x00A0  2F 70 6A 70 65 67 2C 20-61 70 70 6C 69 63 61 74  /pjpeg, applicat
0x00B0  69 6F 6E 2F 78 2D 73 68-6F 63 6B 77 61 76 65 2D  ion/x-shockwave-
0x00C0  66 6C 61 73 68 2C 20 61-70 70 6C 69 63 61 74 69  flash, applicati
0x00D0  6F 6E 2F 78 2D 6D 73 2D-61 70 70 6C 69 63 61 74  on/x-ms-applicat
0x00E0  69 6F 6E 2C 20 61 70 70-6C 69 63 61 74 69 6F 6E  ion, application
0x00F0  2F 78 2D 6D 73 2D 78 62-61 70 2C 20 61 70 70 6C  /x-ms-xbap, appl
0x0100  69 63 61 74 69 6F 6E 2F-76 6E 64 2E 6D 73 2D 78  ication/vnd.ms-x
0x0110  70 73 64 6F 63 75 6D 65-6E 74 2C 20 61 70 70 6C  psdocument, appl
0x0120  69 63 61 74 69 6F 6E 2F-78 61 6D 6C 2B 78 6D 6C  ication/xaml+xml
0x0130  2C 20 2A 2F 2A 0D 0A 52-65 66 65 72 65 72 3A 20  , */*..Referer:
0x0140  68 74 74 70 3A 2F 2F 75-2E 65 6E 6F 72 74 68 2E  http://u.enorth.
0x0150  63 6E 2F 63 6F 6E 73 6F-6C 65 2F 61 72 74 69 63  cn/console/artic
0x0160  6C 65 45 64 69 74 2E 64-6F 3B 6A 73 65 73 73 69  leEdit.do;jsessi
0x0170  6F 6E 69 64 3D 44 46 30-33 39 42 41 39 44 43 36  onid=DF039BA9DC6
0x0180  34 34 46 45 42 30 31 38-33 37 43 30 45 39 42 32  44FEB01837C0E9B2
0x0190  32 31 44 41 38 3F 61 63-74 69 6F 6E 3D 61 64 64  21DA8?action=add
0x01A0  6E 65 77 26 74 69 63 6B-65 74 3D 53 54 2D 31 39  new&ticket=ST-19
0x01B0  34 38 35 2D 73 63 71 6F-53 75 66 48 44 4C 42 62  485-scqoSufHDLBb
0x01C0  4B 74 35 4B 56 61 74 4D-2D 75 73 65 72 0D 0A 41  Kt5KVatM-user..A
0x01D0  63 63 65 70 74 2D 4C 61-6E 67 75 61 67 65 3A 20  ccept-Language:
0x01E0  7A 68 2D 63 6E 0D 0A 43-6F 6E 74 65 6E 74 2D 54  zh-cn..Content-T
0x01F0  79 70 65 3A 20 61 70 70-6C 69 63 61 74 69 6F 6E  ype: application
0x0200  2F 78 2D 77 77 77 2D 66-6F 72 6D 2D 75 72 6C 65  /x-www-form-urle
0x0210  6E 63 6F 64 65 64 0D 0A-50 72 6F 78 79 2D 43 6F  ncoded..Proxy-Co
0x0220  6E 6E 65 63 74 69 6F 6E-3A 20 4B 65 65 70 2D 41  nnection: Keep-A
0x0230  6C 69 76 65 0D 0A 55 73-65 72 2D 41 67 65 6E 74  live..User-Agent
0x0240  3A 20 4D 6F 7A 69 6C 6C-61 2F 34 2E 30 20        : Mozilla/4.0

这里有很多内容,其中包括Referer,Content-Type等等,你在模拟请求的时候这些信息最好都有。关键看下面:
x00E0  3A 20 6E 6F 2D 63 61 63-68 65 0D 0A 43 6F 6F 6B  : no-cache..Cook
0x00F0  69 65 3A 20 4A 53 45 53-53 49 4F 4E 49 44 3D 44  ie: JSESSIONID=D
0x0100  46 30 33 39 42 41 39 44-43 36 34 34 46 45 42 30  F039BA9DC644FEB0
0x0110  31 38 33 37 43 30 45 39-42 32 32 31 44 41 38 0D  1837C0E9B221DA8.
这里有个JSESSIONID,这个服务器一定是需要的,你登录的时候已经有这个值了,这时候你可以构造一个Cookie一同发送到服务器上。

下面是提交的表单内容:
0x0030  FF FF EE 23 00 00 61 72-74 69 63 6C 65 2E 74 69  ?..article.ti
0x0040  74 6C 65 3D 74 69 74 6C-65 26 61 72 74 69 63 6C  tle=title&articl
0x0050  65 2E 65 78 74 50 72 6F-78 79 2E 61 74 74 44 61  e.extProxy.attDa
0x0060  74 61 25 32 38 63 6F 6E-74 65 6E 74 25 32 39 3D  ta%28content%29=
0x0070  25 33 43 50 25 33 45 74-65 73 74 25 33 43 25 32  %3CP%3Etest%3C%2
0x0080  46 50 25 33 45 26 61 72-74 69 63 6C 65 2E 73 79  FP%3E&article.sy
0x0090  73 74 65 6D 54 79 70 65-49 64 3D 36 26 61 72 74  stemTypeId=6&art
0x00A0  69 63 6C 65 2E 63 61 74-65 67 6F 72 79 49 64 3D  icle.categoryId=
0x00B0  36 35 39 38 34 39 26 63-61 74 65 67 6F 72 79 54  659849&categoryT
0x00C0  69 74 6C 65 3D 26 61 72-74 69 63 6C 65 2E 74 61  itle=&article.ta
0x00D0  67 3D 74 61 6F 62 61 6F-26 61 72 74 69 63 6C 65  g=taobao&article
0x00E0  2E 76 69 65 77 53 63 6F-70 65 3D 32 26 61 72 74  .viewScope=2&art
0x00F0  69 63 6C 65 2E 65 78 74-50 72 6F 78 79 2E 61 74  icle.extProxy.at
0x0100  74 44 61 74 61 25 32 38-64 69 67 65 73 74 25 32  tData%28digest%2
0x0110  39 3D 26 61 72 74 69 63-6C 65 2E 63 6F 6D 6D 65  9=&article.comme
0x0120  6E 74 53 63 6F 70 65 3D-32 26 61 63 74 69 6F 6E  ntScope=2&action
0x0130  3D 61 64 64 6E 65 77 26-61 72 74 69 63 6C 65 2E  =addnew&article.
0x0140  73 74 61 74 65 3D 31 26-61 72 74 69 63 6C 65 2E  state=1&article.
0x0150  61 72 74 69 63 6C 65 49-64 3D 30 26 72 65 66 65  articleId=0&refe
0x0160  72 3D 6E 75 6C 6C 0D 0A-                          r=null..


另外需要申明的是,我只是针对此网友的问题做回答,只是出于学习和研究的目的,其他任何事情与我无关。

按照上面的方法可以发送,现在里面有个test的blog就是我这么发送上去的,剩下的楼主自己搞定吧。
[/Quote]



楼主,麻烦把你代码弄出来我看看,我就是不知道我哪儿出错了一点点,检查了好久,还是没成功,望你再指点一二!
daisi 2009-12-30
  • 打赏
  • 举报
回复
另外楼主,你能否将你测试成功的代码发过来学习学习?
daisi 2009-12-30
  • 打赏
  • 举报
回复
[Quote=引用 73 楼 cuike519 的回复:]
呵呵,俺不是什么高手,刚才又研究了一下,说说我的理解吧,我个人认为是完全可以实现的。

理由很简单,其实就是要模拟一个IE而已,IE能处理为什么自己写的程序不能处理?这个完全没有道理。

分析这个网站可以看出这个网站的登录服务器和内容服务器是相互独立的,登录服务器通过https认证,这个是为了保证登录信息的安全,登录成功以后登录服务器会给客户端发一个ticket,这个ticket再去内容服务器验证(这个验证的过程其实就是一个重定向的过程),所以会有两个jsessionid。

我测试的请求序列如下:
GET: https://secure.enorth.cn/user/login  -- 这里产生第一个Jsessionid,下一个请求会使用
POST:https://secure.enorth.cn/user/login;jsessionid=第一个Jsessionid,同时产生两个Cookie项,CASPRIVACY,CASTGC(这是一个客户端票)
到这里登录完成,开始重定向
GET :http://u.enorth.cn/ -- 这里会获得第二个JSESSIONID
GET :http://u.enorth.cn/console -- 这里是重定向到我的首页

到此从登录到打开首页就完成了。

至于你说的发帖子,其实也是一样的道理,你的代码已经实现了90%了,继续努力吧。特别注意请求时Cookie项一定要正确,并且注意那个jsessionid。

此贴到这为止吧,不再回复了。



[/Quote]


感谢你的回复,我再自己试试,估计就是第二SESSIONid的问题,谢了,请你过几天接分,500分送给你,我连开5贴,每贴100分,你稍后来接!
ggg2009 2009-12-30
  • 打赏
  • 举报
回复
我是进来学习的。。。
lyangelwing 2009-12-30
  • 打赏
  • 举报
回复
这是一个response和request的使用问题,楼主好好学习~~
LutzMark 2009-12-30
  • 打赏
  • 举报
回复
[Quote=引用 14 楼 qldsrx 的回复:]
看来他是通过SSL进行登录的,为了增强安全性,所以这里的所有人都搞不定。
[/Quote]
up
想搞定,以上那些路走不通
antony1029 2009-12-30
  • 打赏
  • 举报
回复
UP
wang1wang2wang3 2009-12-30
  • 打赏
  • 举报
回复
帮顶~~
cuike519 2009-12-30
  • 打赏
  • 举报
回复
呵呵,俺不是什么高手,刚才又研究了一下,说说我的理解吧,我个人认为是完全可以实现的。

理由很简单,其实就是要模拟一个IE而已,IE能处理为什么自己写的程序不能处理?这个完全没有道理。

分析这个网站可以看出这个网站的登录服务器和内容服务器是相互独立的,登录服务器通过https认证,这个是为了保证登录信息的安全,登录成功以后登录服务器会给客户端发一个ticket,这个ticket再去内容服务器验证(这个验证的过程其实就是一个重定向的过程),所以会有两个jsessionid。

我测试的请求序列如下:
GET: https://secure.enorth.cn/user/login -- 这里产生第一个Jsessionid,下一个请求会使用
POST:https://secure.enorth.cn/user/login;jsessionid=第一个Jsessionid,同时产生两个Cookie项,CASPRIVACY,CASTGC(这是一个客户端票)
到这里登录完成,开始重定向
GET :http://u.enorth.cn/ -- 这里会获得第二个JSESSIONID
GET :http://u.enorth.cn/console -- 这里是重定向到我的首页

到此从登录到打开首页就完成了。

至于你说的发帖子,其实也是一样的道理,你的代码已经实现了90%了,继续努力吧。特别注意请求时Cookie项一定要正确,并且注意那个jsessionid。

此贴到这为止吧,不再回复了。




I2Asp_netcs 2009-12-30
  • 打赏
  • 举报
回复
up
加载更多回复(67)

111,119

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

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