我是通過抓包和檔案呼叫跟蹤分析,來摸清網易相簿的列表方式的。
值得注意的是,網易相簿的相片位址列表並不是由伺服器處理後再發過來的,而是通過指令碼控制,伺服器只是發個框架和一些控制指令碼過來~~~
用 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
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 相面這句話,一看就知道:
上面的705 就是其中的 sid ,即伺服器序號。
從上面綜合,從
使用者名稱
就能獲取指定使用者的相簿資訊
~~~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 =;
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
gphotosinfo[gphotosids[i]] = datas[i]; }
datas = null;
我的分析如下:
²粗體部分就是說包含的全部相片的
id 了。
²斜體部分就是一張相片的介紹資訊
²705
相片所在伺服器
sid²1 封面相片相片字尾名型別,
原始尺寸
²bb_1
相片標題
從上面綜合,從
使用者名稱&aid=相簿id
就能獲取指定使用者的指定相簿內的相片信。
http://photo.163.com/js/photosinfo.php?user=使用者名稱&aid=相簿id」就能獲取獲取當前使用者的指定相簿內的相片資訊了,這就有 neteasealbum 類的 getalbums 來控制獲取,由getdate 來完成網路操作;再有 albumsinfo 類的imports 函式來解析相簿內的相片資訊。就可以完成相簿內的相片資訊的獲取了。具體看下面的 neteasealbum 類介紹。
開啟第一張相片,檢視它的鏈結
看看就明白了,
使用者名稱/相簿id/id.jpg
使用者名稱/相簿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 使用者名稱和密碼到:
資料格式如下:
username=
使用者名稱&password=密碼&
如果使用者名稱和密碼正確,伺服器返回四個
cookie,其內容如下:
ntes_sedd=(hash值)
nttease_ssn=
使用者名稱
nttease_adv=(hash值)
vrsjssionid=(hash值)
然後,再向伺服器傳送這段資訊,以及要提取的相簿目錄列表,此時將返回全部相簿的全部內容了,
以上登陸過程,是通過
neteasealbum 類的 login 函式來實現。
neteasealbum 類以及其他子類的設計框架了。
相簿磁碟快取分析
相簿磁碟快取主要是imgcache.0,imgcache.1,imgcache.idx三個檔案 其中imgcache.idx位索引檔案,其餘兩個位資料檔案 存放縮圖內容 索引檔案格式 magic max entries max bytes active region active entries a...
20 網易新聞列表
本文是在學習css時做的學習筆記,所有筆記內容為 css學習筆記 仿寫如上所示列表 en utf 8 meta title stylesheet href css reset.css 統一去除下劃線 awidth 300px height 358px 設定居中 margin 0px auto 設定上...
網易相簿 停止新使用者註冊 5月8日停止運營
techweb 3月7日訊息,網易相簿日前發布公告稱,2019年3月6日起,網易相簿 將會停止新使用者註冊 vip充值服務,並且關閉 部分功能 2019年5月8日,網易相簿將會全面停止運營,關閉伺服器。據悉,網易相簿於2003年推出,截至2009年3月31日,網易相簿總使用者數超過3600萬,上傳相...