简单一句话说明就是: 浏览器跟niconico的交互无非get、post, 中间有通过ssh登录后cookie的添加, 浏览器执行nico页面上的javascript导致cookie的增加或修改, 查询(根据番号)和请求(GET)视频文件时需要带上特定的cookie才能请求成功。
那么哪些操作更改了cookie, 自定义的http请求又要怎么写才能把视频文件搞下来呢? 这些信息通过firebug清楚明了。
从结论往回推倒, 先看下载某个文件的GET请求里带上的cookie是这样:
Cookie nicosid=1376560121.1985494370; WT_FPC=id=183.1.222.67-2718089024.30316956:lv=1376563737475:ss=1376563716164; user_session=user_session_5876440_15212688[人工马赛克]029617; __utma=8292653.1210056190.1376560156.1376619137.1376619257.4; __utmz=8292653.1376560156.1.1.utmccn=(direct)|utmcsr=(direct)|utmcmd=(none); nicohistory=sm20892030%3A1376619147%3A1376619352%3Abfccbcfceb510b97%3A5%2Cnm14545546%3A1376618022%3A1376619352%3A71811917e7fba6e4%3A5%2Csm21596305%3A1376560377%3A1376560377%3A8b8813d10b48d5a0%3A1; optimizelySegments=%7B%22281621258%22%3A%22ff%22%2C%22280358707%22%3A%22false%22%2C%22281626694%22%3A%22direct%22%7D; optimizelyEndUserId=oeu1376560363326r0.5227189826598727; optimizelyBuckets=%7B%7D; __utmb=8292653; __utmc=8292653 Host smile-cln15.nicovideo.jp
实际测试其实只需要nicosid和nicohistory这两个就足够了。 nicosid怎么获取? 访问niconico首页就会有nicosid写到cookie里。 nicohistory暂时不管。 另外一个假设的前提是我们已经知道视频文件的地址。 下面是代码:
#include <funct