大家想必都知道,4399小游戏中很多都是可以离线玩的。所以,当我们在网络不好的地方,是不是希望玩一下这些游戏愉悦一下身心呢?本次我就告诉你如何将4399小游戏离线化。
本文为原创(转载请注明作者和原文地址)
本文介绍的不是简单的下载swf文件,因为4399对此有防范。本文的重点是如何破解这个防范。
该方法在2018/8/22仍然是有用的。
下载swf的方法
- 在4399上打开一个游戏(此处以坦克动荡2为例子)
- 点击“全屏2”,进入纯净游戏页面
- 允许网站运行Flash(如果之前允许过,无须再次操作)
- 打开开发者工具的查看器
- 点亮查看器窗口左上角的“选择元素”按钮(如果本来已经点亮无须再次点亮),然后将鼠标放到游戏界面上,点击以选中
- 可以看到src处有一网址(下划线划出的就是)
- 右键网址,“在新标签页中打开”。此时检查网址是否以.swf结尾,如果是,那么从步骤8开始。如果不是,重复步骤3-7,直到找到swf结尾的链接(一般情况下至多重复一次)。
- 记住这个swf结尾的链接(后面要用)
- 在菜单中选择“另存页面为”(此时你应该是位于.swf结尾的网页上),选择一个单独的文件夹保存。
- 至此,“下载swf”的工作就结束了。请确保你下载到的文件后缀是“.swf”
设置base,解除4399的限制
- 现在你可以试试打开你得到的swf(如果有独立版Adobe Flash Player即用这个打开,否则使用浏览器)
如果用独立版Player打开出错,点击“全部取消”即可,没有关系。 - 然后你就会发现一些神奇的事情。
为什么刚才在网上的swf还是好好的,一到本地就error了?
解释:4399为了防止游戏被盗,部分游戏会检测是否在4399的环境下,如果水土异,那就会显示error或者黑屏作为防护。 - 如果电脑系统隐藏了文件的后缀名,请让其显示。该方法在百度上即可找到(也是很基础的操作)。
- 在与swf相同的文件夹中创建文件game.html,用文本编辑器(如果没有就用记事本)打开,放入以下内容。注意将内容中的大括号及大括号内的内容按照自己的情况替换为其他内容。
<html> <head> <script language="JavaScript"> </script> <title>{游戏名}</title> <meta content="text/html; charset=UTF-8" http-equiv="Content-Type"> <base href="{你下载swf的链接去掉最后一个斜杠之后的内容}"> <!--这是关键--> <link rel="icon" href="{图标}"> <!--没有就空着--> </head> <body bottommargin="0" leftmargin="0" topmargin="0" rightmargin="0" scroll="no" oncontextmenu="return false" ondragstart="return false" onselectstart="return false" onselect="document.selection.empty()"> <object id="flashgame" codebase="https://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=7,0,19,0" style="position:fixed;top:0;bottom:0;left:0;right:0;"> <param name="movie" value=""> <param name="quality" value="high"> <param name="allowScriptAccess" value="always"> <param name="allowNetworking" value="all"> <embed id="flashgame1" src="" quality="high" pluginspage="https://www.macromedia.com/go/getflashplayer" type="application/x-shockwave-flash" width="100%" height="100%" allowscriptaccess="always" allownetworking="all"> </object> <script> var gname="{游戏swf文件名}"; document.querySelector("#flashgame1").src=location.href.substring(0,location.href.lastIndexOf('/')+1)+gname; document.querySelector("param[name=movie]").value = location.href.substring(0, location.href.lastIndexOf('/') + 1) + gname; </script> </body>
</html>
示例:
<html> <head> <script language="JavaScript"> </script> <title>坦克动荡2</title> <meta content="text/html; charset=UTF-8" http-equiv="Content-Type"> <base href="https://sda.4399.com/4399swf/upload_swf/ftp14/cwb/20140611/y2/"> <!--这是关键--> <link rel="icon" href=""> <!--没有就空着--> </head> <body bottommargin="0" leftmargin="0" topmargin="0" rightmargin="0" scroll="no" oncontextmenu="return false" ondragstart="return false" onselectstart="return false" onselect="document.selection.empty()"> <object id="flashgame" codebase="https://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=7,0,19,0" style="position:fixed;top:0;bottom:0;left:0;right:0;"> <param name="movie" value=""> <param name="quality" value="high"> <param name="allowScriptAccess" value="always"> <param name="allowNetworking" value="all"> <embed id="flashgame1" src="" quality="high" pluginspage="https://www.macromedia.com/go/getflashplayer" type="application/x-shockwave-flash" width="100%" height="100%" allowscriptaccess="always" allownetworking="all"> </object> <script> var gname="main.swf"; document.querySelector("#flashgame1").src=location.href.substring(0,location.href.lastIndexOf('/')+1)+gname; document.querySelector("param[name=movie]").value = location.href.substring(0, location.href.lastIndexOf('/') + 1) + gname; </script> </body>
</html>
- 在Edge或Internet Explorer中加载此HTML(将HTML拖入浏览器即可)
注意:使用Microsoft的浏览器加载这个HTML至关重要。本人已经测试过,Chrome系列和Firefox都会异常(前者会出现游戏图像缺失,后者根本加载不了) - OK,现在你可以开着飞行模式好好玩了。