发展过程
2000年之前,到处寄生于免费个人主页空间的大杂烩,有点像今天的Blog。
2000年4月,启用shooter.com.cn域名。只不过,其实最初其实是想做一个书评网站。那时候我还很爱读书,网站名叫“书途”。
2000年7月,很快忍不住加入了很多自己喜爱的元素,除了DivX之外,还有DVD封面、DC封面、DC游戏、漫画的下载。之后不久又开始加入视频技术制作文章和软件。
2001年9月,开始加入字幕下载的部分。主要还是从DVD上Rip下来的字幕,很多字幕翻译质量都不高。此时已经基本停止维护封面、游戏、漫画和电影下载的部分。
2002年,开始出现自主原创翻译。在此特别向长期以来翻译和发布字幕的贡献者们致敬。
2003年7月,启用shooter.cn域名。
2004年9月,因为生活和工作的原因,没有足够的精力维护文档和软件更新。好在字幕的自助上传和下载系统已经稳定,就像终结者里面的天网那样,不用人管理也可以运行。
2005年12月,长期积累的大量字幕和每天的海量访问与搜索令服务器不堪重负,几乎每天晚上都像死机一样。连自己也看不下去了,终于决定进行一次推倒重来的大改版。
2014年11月22日,正式宣布关闭。
财务
射手网是一个纯粹的个人网站,因此也没有资本更没有运营经费。
在2006年之前,所有服务器均是友人帮助提供,其余网络费和运营经费由站长自掏腰包。期间曾启用海外paypal的捐款通道,不过历史上收到的捐款很少来。干脆取消了。
2006年改版之后,网站启用GoogleAdsense,虽然点击不高,总算开始有些收入,主要用于弥补网络带宽费用。未来盈余希望可以满足添置数据库和Web服务器的需要。
特点
射手网在Web服务上最大的特点,也是最大的困难,就是在极度缺乏经费的情况下,只能靠朋友“借”服务器。因此,服务器配置不理想、可用的服务器少、难以稳定运行、地理位置分散、网络条件参差不齐,难以承受庞大的访问量负载是最大的困难。
2006年改版后,射手网的整个系统将静态Web服务器,和其他下载服务器、搜索数据库、计数器模块分开。带来的好处不仅是可以扩张负载能力应付巨量访问请求。更有趣的是,即使其中部分服务器死机,网站的其他模块仍然可以不受影响,可以继续访问和浏览。
另外一个长期困扰射手网的问题是,中文、异体文件名的存储障碍。射手网的服务器空间都不大,所以所有的文件常常去要分配到不同的服务器上存储。这里就有个非常严重的问题,每个系统的文件名编码并不相同,多数是GB2312,但是也有ISO或BIG5或UTF-8的可能。港台朋友上传的字幕可能还有繁体字或异体字,常常造成文件名存储乱码,最终无法下载。同时由于Windows和Linux的命名规则不同,有时候Windows下被允许的文件名,在Linux下会完全不被接受而造成文件丢失。
为了解决这个问题,2006改版后的系统,采用了全新的文件存储方式。所有的文件全都不再按原文件名存储,而是使用一个唯一的目录+hash串码来存储。仅在收到用户下载请求时,根据需要移动(Link)到下载缓存区供下载。这也是为什么新版的射手网采用hash码下载而且下载有了时间限制。而“安全”下载方式,就是提供一个不包含中文字符的文件名来给使用不同编码的操作系统浏览器的人们来下载,以免一些用户因为文件名乱码而出现下载不到文件的情况。有些人以为这是为了防止盗链,其实站长才没有必要为了这么小气的原因花这么大力气做一套全新的文件存储系统。
为了应付大量的页面请求,自然需要对页面静态化。改版最初,并没有想到用XML和Ajax。但是渐渐的,传统的静态页面方法展现弊端――哪怕是对页面布局做一点微小的修改,就要花费大量时间重新生成几十万个页面。对于经常要对页面作微调的我,实在是万分痛苦。更何况服务器负载资源已经非常紧张,每次重建网站的开销也令人无法承受。很快,在现实的压迫下,整个系统转向XML+Ajax。
XML+Ajax的优势是静态级别的负载,做到动态页面的效果。使用静态XML+Ajax之后,不夸张地说,射手网的负载开销下降到原来的1/50-1/100,松了一大口气。唯一的遗憾是浏览器之间对Ajax的实现方式总有细微的差别,由此针对某些浏览器,带来不少兼容问题。LinuxFreeBSDvs.Windows
所有的射手网服务器里面,没有一台使用Windows,全部采用*nix架构的服务器。未来也不会使用Windows的服务器,因此请不要来Email提一些只会在Windows服务器上发生的疑问――99.9%的病毒都是为Windows设计的,而且Windows的病毒不能在*nix系统上运行。
不知道几时起,病毒、木马、流氓软件的门槛这么低。有些人有点聪明才智,就爱往这种事情上用。在上传文件时夹杂病毒、木马,当真困扰了射手网好几个星期。解决方式就是在服务器上加挂zip和rar支持,检查每个上传文件中,是否包含有可能带来危险的可执行文件或病毒载体。一旦发现、不仅删除文件,同时记录上传IP存档+Ban。
射手网是个个人网站,因此不光服务器资源紧张,而且人力资源也异常紧张――只有一个人。因此难以一一审核上传的文件。所以诞生了举报系统。举报系统的工作流程是这样的,用户发现并举报后,系统先作加权判断,之后再定期检查审核,删除或者恢复。
下载
文件服务器
射手网采用动态分布式的文件服务。当下载文件时,浏览器将需要调用下列域名:
file0.shooter.cnfile1.shooter.cn...(电信)
cncfile0.shooter.cncncfile1.shooter.cn...(网通)
edufile0.shooter.cnedufile1.shooter.cn...(教育网)
能否正常解析这些域名至正确的IP地址,关系着能否正常访问文件服务器并下载文件。
检查您的系统能否正确解析这些域名,可以使用nslookup命令。方法是通过“开始”菜单,选择“运行...”->CMD进入命令行模式,输入nslookupfile0.shooter.cn。看看系统是否可以正确获得解析IP。
如果系统DNS无法正确获得IP,也可以手动通过修改系统hosts文件,强行为域名指定IP。
中文文件名
默认下载模式并没有过滤中文文件名,而中文文件名也常常是导致无法正常下载文件的重要原因。这是因为各个OS、服务器和浏览器对网址URL中的中文处理方式都不同。例如繁体系统可能会把中文编码为big5传送,简体系统则会使用gb2312,而比较新的浏览器可能会使用UTF-8,有的下载工具则可能不对中文进行url编码。这样一来,尽管是完全相同的中文文字,对于传送网络请求来说,却有可能变化为4-6种不同的可能。而对服务器来说,只能接受其中的一种。所以,中文文件名也是导致无法正常下载的主要原因。
这也就是为什么射手网有个“备选模式”的下载方式。“备选模式”会过滤掉文件名中的中文文字,将“ABC中文.rar”变换为“ABC.rar”的url以供下载,这样虽然损失了文件名中可能包含的说明信息,但是却可以保证可以正常下载。
hash过期
射手网的文件下载系统的主要设计目的主要是为了,可以无限扩展至多个或许配置并不高的服务器均衡工作,同时又有较高的免维护性。射手网的服务器通常硬盘都不大,所以下载流程大致是这样:
1.主服务器收到下载请求,针对该文件生成hash码作为ID,同时命令文件服务器准备该文件;
2.用户访问文件服务器并提供hash码ID;
3.文件服务器将对应的文件调入服务器上的下载目录,并供下载;4.hash过期后,将对应文件清出文件下载目录。
采用这样的下载流程主要是为了在服务器空间有限的情况下,有控制的最大限度的合理利用资源。但是这也带来一个附加条件,就是一个hash码是有时限的,如果一个hash码的生命期已经结束,就会文件服务器就会提示hash码已经过期而不能下载,而需要重新回到网站请求文件并获得新的下载链接(部分浏览器可能会缓存网页链接而使用户得到的是旧hash码而导致无法下载,此时可以通过清空浏览器缓存或刷新网页解决)。
射手影音播放器
是一款开源的多媒体播放器,以GNU通用公共许可证发布。与大部分开源媒体播放器一样采用FFmpeg解/编码技术,不过与多数开源播放器不同的是它只能运行在 Windows 上。除了运行于 Windows的SPlayer专案外,另有正在开发的的运行于Mac OS X 的 SplayerX专案(改建于MPlayerX)
正式关闭
知识产权法治语境中射手网关闭的原因,从规范视角看,在于“书本上的”与“行动中的”两种知识产权法长期、巨大的张力,而其存在涉嫌违法只是表面原因。从实证视角看,在于国情的巨变,即宏观上,知识产权制度的原生性需求空前高涨;微观上,我国网络视频产业正处于繁荣前夜;从哲学视角看,在于知识产权自然法正当性观念在我国广泛深入地传播。展望未来,射手网的主动关闭,可能打开我国迈向创造强国新时代的机会之门。