网易相册以无限容量,速度快,资源丰富等特色深受网友喜爱,但是因为相册网站本身没有提供批量下载功能,使得批量保存自己喜欢的相片成为一个问题。

我是通过抓包和文件调用跟踪分析,来摸清网易相册的列表方式的。
值得注意的是,网易相册的相片地址列表并不是由服务器处理后再发过来的,而是通过脚本控制,服务器只是发个框架和一些控制脚本过来~~~
用 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 类以及其他子类的设计框架了。 

转自: http://blog.csdn.net/HeTaoOS/archive/2007/03/02/1519291.aspx

网易相册列表分析 (转)相关推荐

  1. 网易相册辅助工具netease album v0.1 是什么

    Welcome to my blog! <script language="javascript" src="http://avss.b15.cnwg.cn/cou ...

  2. ALAssetsLibrary获取相册列表

    之前一篇博客,说了下通过ALAssetsLibrary获取全部图片的方法,这里再说说获取相册列表的方法. 代码如下: -(void)test { ALAssetsLibrary* theLibrary ...

  3. 旅程落幕!网易相册将停止运营 这里有你的回忆吗?

    [TechWeb]网易相册让不少用户留下了美好的回忆,很多人都把自己最珍惜的图片素材保留在该平台上,遗憾的是,网易相册从3月6日起停止新用户注册,将于5月8日00:00停止运营. 网易相册表示,如果说 ...

  4. android 分页列表,android获取相册列表并分页获取

    有时候需要获取到系统所有图片,但一次性获取太多了,需要分批分页获取,网上很多资料都没有说到分页,作为一个数据库达人,怎么能受此折磨,因此尝试出来了以下方案: /** * 从本地获取相册列表 * @pa ...

  5. android+获取相册列表,android 获取相册列表的实现(一)

    该项目实现的功能如下: 获取手机相册,点击每个相册之后进入该相册的图片列表界面,在图片列表界面可以实现图片多选,然后进入所选择的图片界面,在该界面内可以实现所选图片的上传等功能. 该项目最大特色: 1 ...

  6. 微信图片服务器逻辑,微信小程序[第八篇] -- 实现完整的相册列表逻辑(小程序端服务器端)...

    这一讲过一围多元示一能近讲提下了多素效个外近章要进行的东西还蛮多的,从小程序navigator到wx.request,再到后台的restful进行数据集的通讯,前后台一起实战,和老沙一起做一个全栈工程 ...

  7. 网易相册找回服务器,再见了,网易相册!24日起关闭服务器,不保留数据

    2003年推出的网易相册在走过了十六年的岁月之后,在其官方网站上发布公告,宣布将于2019年5月停止网易相册的运营. 付世凯是一名互联网行业的从业人员,早在2008年他为了和同学分享聚会照片,注册成为 ...

  8. 才发现网易相册已于2019年5月8号停止运营,如何导出相册照片:http://photo.163.com/transfer/html/login , 使用相册帐号登录,提供真实姓名、手机号码

    网易相册已于2019年5月8号停止运营. 如果您想找回网易相册信息,麻烦您点击这里下载app之后登录邮箱, 在app中点击[我的]页面-[帮助与反馈]进入帮助中心, 点击[博客与相册]-[如何导出相册 ...

  9. 使用163网易相册的朋友注意啦!

    尊敬的网易相册用户, 为了能更好的服务广大用户,从7月1日起,网易相册系统将对于3个月以上未登录使用的用户帐号进行冻结,5个月以上未登录使用的用户帐号将不再保留其相册的照片. 感谢广大用户对网易相册的 ...

最新文章

  1. ISP PIPLINE (九_2) Denoise 之 time domain denoise
  2. 中间件事务码R3AC1里Block Size的含义
  3. AtomicInteger源码注释
  4. 嵌入式驱动开发应具备的三大基础
  5. 分布式事务在Sharding-Sphere中的实现
  6. 实训三(cocos2dx 3.x 打包apk)
  7. eclipse调试的时候查看变量出现com.sun.jdi.InvocationException occurred invoking method.
  8. LINUX的文件按时间排序
  9. 在.net中使用GAC
  10. 盘点(腾讯字节谷歌等大厂)面试中常见的智力题
  11. PHP细说(加强版)
  12. cad尺寸标注快捷键_CAD中还能这样快速标注尺寸?怪不得同事天天准时下班
  13. Lync 2013安装要点
  14. 短信系统通道路由的设计和思路-移讯云短信系统
  15. (对对碰)软工结对作业
  16. Xshell下载文件到本地
  17. oracle使用decode实现竖表转横表 (列转行)
  18. postgresql 计算时间差
  19. 犹他大学支付45万美元赎金以阻止被盗数据泄露
  20. vim gvim技巧大全

热门文章

  1. 第三章-集合论 3.2-Russell 悖论(选读)
  2. 《30岁之前的每一天》阅读笔记(一)
  3. Chinaren校友录所用的左边弹出式菜单
  4. BZOJ2054疯狂的馒头
  5. 功放前级的左右_Altitude32前级功放题 - 什么是全景声功放_全景声功放有哪些
  6. html5 指南针,html5指南针实现
  7. 123457123456#0#-----com.threeapp.MakerHanBao01----儿童汉堡制作游戏
  8. 关于tomcat点击startup.bat出现闪退,输入http://localhost:8080网页打不开的解决方法
  9. 树莓派安装迅雷xware的失败经验
  10. 架构师小跟班:SSL证书免费申请及部署,解决页面样式错乱问题