Null's Notebook

疯狂的电脑爱好者...

用户操作
[即时聊天] [发私信] [加为好友]
NullID:HeTaoOS
31612次访问,排名3729好友0人,关注者0
HeTaoOS的文章
原创 13 篇
翻译 0 篇
转载 0 篇
评论 7 篇
最近评论
banxia2005:对我要做的数据库有点帮助
HeTaoOS:可以到这里
http://download.csdn.net/source/161936

http://www.skycn.com/soft/33189.html

下载该程序。

如有意见和建议,请 Email 给我。
dwp008:
binbinW:厉害啊
shoutor:不错
文章分类
    收藏
      相册
      分析图片
      软件截图
      友情链接
      我的博客(RSS)
      存档
      软件项目交易
      订阅我的博客
      XML聚合  FeedSky
      订阅到鲜果
      订阅到Google
      订阅到抓虾
      订阅到BlogLines
      订阅到Yahoo
      订阅到GouGou
      订阅到飞鸽
      订阅到Rojo
      订阅到newsgator
      订阅到netvibes

      原创 网易相册列表分析收藏

      新一篇: 四则运算计算器 C 语言完美版源码 | 旧一篇: CNZZ 统计代码及作弊分析

       网易相册以无限容量,速度快,资源丰富等特色深受网友喜爱,但是因为相册网站本身没有提供批量下载功能,使得批量保存自己喜欢的相片成为一个问题。
      我是通过抓包和文件调用跟踪分析,来摸清网易相册的列表方式的。
      值得注意的是,网易相册的相片地址列表并不是由服务器处理后再发过来的,而是通过脚本控制,服务器只是发个框架和一些控制脚本过来~~~
      用 FireFox 2.0 + JSView 浏览茜茜的网易相册 http://photo.163.com/photos/docrack/
      再单击 JSView 的任务栏图标,发现以下JS 列表:
      ²         albumsinfo.php?user=docrack
      ²         browser.js
      ²         global.consts.js
      ²         global.urls.js
      ²         global.utils.js
      ²         paginate.js
      ²         pholders.consts.js
      ²         pholders.html.js
      ²         pholders.js
      ²         pholders.utils.js
      ²         utils.js
      ²         photo_ad.js
      ²         v51,js

      在这个 JS 脚本列表中,带参数那个最可疑,那就先打开他来看看:
      albumsinfo.php?user=docrack
      内容如下:
      var hasAlbum = true;
      var hasCover = true;
      var gAlbumsInfo = {};
      var gAlbumsIds = [106175945,106179880];
      var datas = [["705.2449719279.1.450x600",1,9,"我喜欢的... ","这可是我喜欢的.."],["0.0.0.130x98",2,31,"也是我喜欢的... ","也是我喜欢的图片哦... "]];
      for(var i=0; i<gAlbumsIds.length; i++){
       gAlbumsInfo[gAlbumsIds[i]] = datas[i];
      }
      datas = null;
       
      很好,和预想中的一样,这文件中包含有相册目录的整体信息,我分析得到:
      ²        粗体部分是相册目录的 ID,一共有两个,
      ²        斜体部分,是第一个目录的介绍信息~~~
      现在解析一下目录介绍信息:
      ²        //封面
      ²        705                 封面相片所在服务器 SID
      ²        2449719279          封面相片 ID,如果为空,就表示是加密相册
      ²        1                   封面相片相片后缀名类型,1,jpg;2,gif,如果为空,就表示是加密相册
      ²        450x600             封面相片原始图片尺寸,如果为空,就表示是加密相册
       
      ²        //简介
      ²        1                   相册权限,0 私有;1,公开;2,加密
      ²        9                   相册中相片总数
      ²        我喜欢的..          相册名称
      ²        这可是我喜欢的..    相册简介
       
      就是通过本地脚本来获取服务器上相册信息的。打开 global.consts.js 相面这句话,一看就知道:
      var PHOTO_SERVER_DOMAIN = "http://img%SID%.photo.163.com";
      上面的 705 就是其中的 SID ,即服务器序号。
      从上面综合,从
      http://photo.163.com/js/albumsinfo.php?user=用户名
      就能获取指定用户的相册信息~~~
       
      由此,在程序的设计时,只有使用一个网络通讯函数向远程服务器请求 “http://photo.163.com/js/albumsinfo.php?user=用户名”就能获取获取当前用户的相册目录信息了,这就有 NetEaseAlbum 类的 GetAlbums 来控制获取,由GetDate 来完成网络操作;再有 Imports 函数来解析相册目录列表信息。就可以完成相册目录列表的获取了。具体看下面的 NetEaseAlbum 类介绍。
      点入第一个没有加密的相册,也就是 ID 为 106175945 的相册,这回查看到的 JS 脚本更多了,但还是带参数那个有意思。
      photosinfo.php?user=docrack&aid=106175945
      明显,
      user 后面跟用户名
      aid 后面跟相册 ID
      打开看看:
      var hasPhoto = true;
      var hasCover = true;
      var hasPermission = true;
       
      var gAlbumInfo = {'cover':"705.2449719279.1.450x600",'privacy':1,'title':"我喜欢的... ",'descr':"这可是我喜欢的.. "};
       
      var gPhotosInfo = {};
      var gPhotosIds = [2449722584,2449722395,2449721659,2449721495,2449721208,2449720964,
      2449719654,2449719514,2449719279];
      var datas = [[705,1,"470x326","BB_1 "],[705,1,"450x600","BB_2 "],[705,1,"425x562","BB_3 "],[705,1,"404x579","BB_4 "],[705,1,"404x539","BB_5 "],[705,1,"640x640","AA_1 "],[705,1,
      "400x533","AA_2 "],[705,1,"450x600","AA_3 "],[705,1,"450x600","AA_4 "]];
      for(var i=0; i<gPhotosIds.length; i++){
       gPhotosInfo[gPhotosIds[i]] = datas[i];
      }
      datas = null;
      我的分析如下:
      ²        粗体部分就是说包含的全部相片的 ID 了。
      ²        斜体部分就是一张相片的介绍信息
      现在解析一下一张相片的介绍信息:
      ²        705                 相片所在服务器 SID
      ²        1                   封面相片相片后缀名类型,1,jpg;2,gif
      ²        470x326             原始图片尺寸
      ²        BB_1                相片标题
       
      从上面综合,从
      http://photo.163.com/js/photosinfo.php?user=用户名&aid=相册ID
      就能获取指定用户的指定相册内的相片信。
       
      由此,在程序的设计时,只有使用一个网络通讯函数向远程服务器请求 “http://photo.163.com/js/photosinfo.php?user=用户名&aid=相册ID”就能获取获取当前用户的指定相册内的相片信息了,这就有 NetEaseAlbum 类的 GetAlbums 来控制获取,由GetDate 来完成网络操作;再有 AlbumsInfo 类的Imports 函数来解析相册内的相片信息。就可以完成相册内的相片信息的获取了。具体看下面的 NetEaseAlbum 类介绍。
       
      获取了信息,该入和整合成相片的具体下载链接?
      打开第一张相片,查看它的链接
      http://img705.photo.163.com/docrack/106175945/2449722584.jpg
      看看就明白了,
      相片真实地址格式如下:
      http://imgSID.photo.163.com/用户名/相册ID/图片ID.jpg
      相片缩略图地址格式如下:
      http://imgSID.photo.163.com/用户名/相册ID/__scale__1_图片ID.jpg
      知道这些,就可以使用 PhotosInfo 类中的 BuildURL 来重建相片真实地址和相片缩略图地址了。
       
      一下内容是通过使用 WSockExper 抓包分析得的。
       
      对于加密的相册,有点麻烦,大概如下:
      先向服务器 POST 密码到:
      http://photo.163.com/photos/用户名/相册ID/
      数据格式如下:
      checking=1&pass=密码&submit=%D1%E9%D6%A4
      如果密码正确,服务器返回一个 Cookie,其内容如下:
      HALFORDER=41826293c391c246f4566b04807f05f8d
      然后,再向服务器发送这段信息,以及要提取的相片列表,此时将返回那个加密相册的全部内容了,如果没有发送 Cookies ,那么取回的 JS 脚本,里面的数据段是空的。
      以上验证过程,是通过 NetEaseAlbum 类的 Decrypt 函数来实现。
       
      对于登陆,也需要使用到 Cookie ,过程如下。
      先向服务器 POST 用户名和密码到:
      http://reg.163.com/in.jsp?url=http://photo.163.com/myalbum.php
      数据格式如下:
      username=用户名&password=密码&
      如果用户名和密码正确,服务器返回四个 Cookie,其内容如下:
      NTES_SEDD=(Hash值)
      NTTEASE_SSN=用户名
      NTTEASE_ADV=(Hash值)
      VRSJSSIONID=(Hash值)
      然后,再向服务器发送这段信息,以及要提取的相册目录列表,此时将返回全部相册的全部内容了,
      以上登陆过程,是通过 NetEaseAlbum 类的 Login 函数来实现。
       
      综合上面全部,我已经分析了网易相册的通讯协议,包括获取相册、相片信息,验证加密相册,登陆,已经地址分析。由此就可以完成 NetEaseAlbum 类以及其他子类的设计框架了。 

      发表于 @ 2007年03月02日 15:14:00|评论(loading...)|编辑

      新一篇: 四则运算计算器 C 语言完美版源码 | 旧一篇: CNZZ 统计代码及作弊分析

      评论

      #dsj1234 发表于2007-03-02 20:43:16  IP: 59.36.15.*
      牛,收藏。
      #hero4u 发表于2007-03-04 20:25:30  IP:
      不会过了几天 163改了吧- -b
      #shoutor 发表于2007-03-05 13:12:01  IP:
      不错
      #binbinW 发表于2007-03-06 09:50:45  IP: 222.184.232.*
      厉害啊
      #dwp008 发表于2007-03-06 18:37:13  IP: 218.72.13.*
      #HeTaoOS 发表于2007-03-08 17:04:00  IP:
      可以到这里
      http://download.csdn.net/source/161936

      http://www.skycn.com/soft/33189.html

      下载该程序。

      如有意见和建议,请 Email 给我。
      #banxia2005 发表于2007-05-14 15:31:31  IP: 221.215.84.*
      对我要做的数据库有点帮助
      发表评论  


      当前用户设置只有注册用户才能发表评论。如果你没有登录,请点击登录
      Csdn Blog version 3.1a
      Copyright © Null