-
Notifications
You must be signed in to change notification settings - Fork 1
本地服务器相关
本地服务器充当 4399 游戏资源服务器的反向代理,并提供一些有用的接口。
出于安全考虑,以及防止其他设备滥用服务,本地服务器仅绑定 127.0.0.1 这个 IP,这意味着该服务无法直接从公网/内网其他设备访问。如果需要从其他设备访问该服务,可以利用运行在同一机器上的 Nginx 等工具进行端口转发(拥有配置适当的端口转发功能的远程开发环境(如 GitHub Codespaces、code-server)用户无须考虑此问题)。
本地服务器不会为大多数请求设置 access-control-allow-origin
,此时浏览器可能会阻止发往本地服务器的跨域请求。
如果用户使用本地 VSCode,且未更改设置,则以下接口一般均位于 http://127.0.0.1:44399
上。
Warning: 请不要尝试猜测接口的
hostname
和port
,因为用户既可能修改设置,又可能在 GitHub Codespaces 或其他奇怪的环境上使用 4399 on VSCode。请求路径区分大小写。
重定向到 H5 小游戏入口页或 <Flash 游戏的 .swf 文件所在路径>/_4ov-flash-player.htm
。
v0.3.0 及更高版本
--- 请求 ---
method: GET
path: /
--- 响应 ---
code: 302
headers:
Location: /4399swf/upload_swf/ftp39/cwb/20220706/01a/index.html
body: <空>
重定向到最近玩的 H5 页游。
v0.3.0 及更高版本
--- 请求 ---
method: GET
path: /_4ov/webGame
--- 响应 ---
code: 302
headers:
Location: https://client-zmxyol.3304399.net/client/?account=username123&gameId=100060323&nick=blue&20sky&userId=1145141919&userName=blue&20sky&time=1690000000&sign=0123456789abcdef0123456789abcdef&pc=0&device=undefined&addiction=0
body: <空>
重定向到最近玩的 Flash 游戏的 .swf
文件。
v0.3.0 及更高版本
--- 请求 ---
method: GET
path: /_4ov/flash
--- 响应 ---
code: 302
headers:
Location: /4399swf/upload_swf/ftp41/liuxinyu/20221201/14.swf
body: <空>
代理。发出请求时会强制使用 HTTPS。
默认情况下,通过代理发往 4399.com 域的请求不会带上 cookie,即使已指定 cookie 请求头。
代理支持所有请求方法(GET、POST 等)。
如果用户禁用了代理,发往此处的请求会被重定向到被代理的 URL。
默认情况下,您发往非本地服务器的请求会经过 4399 on VSCode 的 ServiceWorker,而后经过代理。满足部分条件的请求会绕过 ServiceWorker。
v0.3.0 及更高版本
--- 请求 ---
method: GET
path: /_4ov/proxy/https://www.4399.com/
--- 响应 ---
code: <原样提供>
headers: <原样提供>
body:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<meta http-equiv="Cache-Control" content="no-siteapp" />
<title>小游戏,4399小游戏,小游戏大全,双人小游戏大全 - www.4399.com</title>
...
打开链接。如果要打开的链接是某个 4399 游戏,则直接启动游戏。
请求该接口后立即返回 200 状态码。
默认情况下,该操作需要征得用户同意。
该功能默认开启,但可以被用户禁用。
在 HTML 代码片段中,您可以直接调用已经重写的
open()
函数。
v0.3.0 及更高版本
--- 请求 ---
method: GET
path: /_4ov/openUrl/https://www.4399.com/
--- 响应 ---
code: 200
headers: <默认响应头>
body: <空>
询问用户是否允许执行某些操作,用户禁用设置项或点击允许 4399-on-vscode.confirm
则返回 200 状态码,用户关闭通知或点击拒绝则返回 403 状态码,缺少 URL 参数 reason
则返回 400 状态码。
请不要使用此接口要求用户决定是否执行敏感或高危操作。
v0.3.4 及更高版本
--- 请求 ---
method: GET
path: /_4ov/confirm?reason=某个游戏想要播放激励广告
--- 响应 1 (用户已允许) ---
code: 200
headers: <默认响应头>
body: <空>
--- 响应 2 (用户已拒绝) ---
code: 403
headers: <默认响应头>
body: <空>
停止本地服务器,<secret>
为 4399 on VSCode 启动时生成的随机数,可在控制台日志中找到。
无论成功与否,均返回 200 状态码。
v0.3.0 及更高版本
--- 请求 ---
method: GET
path: /_4ov/stop/0.1145141919810114
--- 响应 ---
code: 200
headers: <默认响应头>
body: <空>
返回 ServiceWorker 代码。
v0.3.0 及更高版本
--- 请求 ---
method: GET
path: /_4ov/stop/0.1145141919810114
--- 响应 ---
code: 200
headers: <默认响应头>
body:
/** Copyright (c) 2022-2023 dsy4567. See License in the project root for license information. */
const whiteList = [
"cdnjs.cloudflare.com",
"jsdelivr.net",
"onmicrosoft.cn",
"ruffle",
"unpkg.com",
];
self.addEventListener("activate", ev => {
ev.waitUntil(clients.claim());
});
self.addEventListener("install", ev => {
self.skipWaiting();
});
...
返回 Flash 播放器页面
v0.3.0 及更高版本
--- 请求 ---
method: GET
path: /4399swf/upload_swf/ftp41/liuxinyu/20221201/_4ov-flash-player.html
--- 响应 ---
code: 200
headers: <默认响应头>
body:
<!DOCTYPE html>
<html style="height: 100%;margin: 0;padding: 0;">
<head>
<meta charset="UTF-8" />
<meta
name="viewport"
content="width=device-width, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0, user-scalable=0"
/>
<meta http-equiv="X-UA-Compatible" content="ie=edge" />
<title>flash 播放器(Ruffle 引擎)</title>
<style>
::-webkit-scrollbar {
display: none !important;
}
html, body {
overflow: hidden;
margin: 0;
padding: 0;
}
</style>
...
向 4399 的游戏资源服务器请求资源(仅 GET 方法)
全部版本
--- 请求 ---
method: GET
path: /4399swf/upload_swf/ftp38/cwb/20220425/02/index.html
--- 响应 ---
code: <原样提供>
headers: <原样提供>
body:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1, minimum-scale=1, maximum-scale=1, user-scalable=no, minimal-ui"
/>
<meta http-equiv="Pragma" content="no-cache" />
<meta http-equiv="Cache-Control" content="no-cache" />
<meta http-equiv="Expires" content="0" />
<meta http-equiv="Access-Control-Allow-Origin" content="*" />
<meta http-equiv="x-rim-auto-match" content="none" />
<meta name="mobile-web-app-capable" content="yes" />
<meta name="apple-mobile-web-app-capable" content="yes" />
<meta name="format-detection" content="telephone=no" />
<meta content="false" id="twcClient" name="twcClient" />
<meta name="full-screen" content="true" />
<meta name="screen-orientation" content="true" />
<meta name="x5-fullscreen" content="true" />
<meta name="360-fullscreen" content="true" />
<meta name="renderer" content="webkit" />
<title>4399游戏</title>
</head>
<body>
<div id="app"></div>
<script type="text/javascript" src="https://cdn.h5wan.4399sj.com/h5mini-2.0/dist/static/js/index.js"></script>
</body>
</html>