Closed Yesterday17 closed 4 years ago
iOS 平台上有许多网络调试工具,而这些调试工具很多都可以做到直接修改 http 请求,因此可以考虑使用这些工具进行脚本的注入,这样在任何条件下都可以正常汉化了。
Surge 在 2019 年中旬引入了脚本系统,其可以对 http(s) 请求作直接修改,因此我们可以利用这一点将汉化脚本注入到 </head> 之前执行。简单的脚本如下:
</head>
function insert(str, index, value) { return str.substr(0, index) + value + str.substr(index); } const toInsert = ` <script> (function () { const script = document.createElement("script"); script.src = "https://blhx.danmu9.com/blhxfy/extension.user.js"; document.head.appendChild(script); })(); </script> `; let { body, headers } = $response; const result = {}; if ( body && headers && typeof headers["Content-Type"] === "string" && headers["Content-Type"].includes("text/html") && body.lastIndexOf("</head>") !== -1 ) { result.body = insert(body, body.lastIndexOf("</head>"), toInsert); result.headers = headers; } $done(result);
并且设置匹配的 URL 为 (game\.granbluefantasy\.jp)|(gbf\.game\.mbga\.jp) 即可。
(game\.granbluefantasy\.jp)|(gbf\.game\.mbga\.jp)
其他示例(包括 TestFlight 版本中新引入的模块功能)详见此。
(顺带提一句 SC 应该也可以这么改(
注入存在的问题就是跨域。这里有两种解决方案:
GM_xmlhttpRequest
测试环境为 iOS 13.3.1(iPad mini 5),Surge 版本为 4.10.0(1582),使用的是上面链接中对应的模块(Module),效果如下图所示:
效果差不多所以没截图(
这个方案不错啊, 不过可能没办法和其他游戏加速App一起使用。
确实,不过 Surge/QX 本来就是科学工具了,如果用的节点的话就可以直接用了(
iOS 平台上有许多网络调试工具,而这些调试工具很多都可以做到直接修改 http 请求,因此可以考虑使用这些工具进行脚本的注入,这样在任何条件下都可以正常汉化了。
以 Surge 为例(QuantumultX 操作类似)
Surge 在 2019 年中旬引入了脚本系统,其可以对 http(s) 请求作直接修改,因此我们可以利用这一点将汉化脚本注入到
</head>
之前执行。简单的脚本如下:并且设置匹配的 URL 为
(game\.granbluefantasy\.jp)|(gbf\.game\.mbga\.jp)
即可。其他示例(包括 TestFlight 版本中新引入的模块功能)详见此。
(顺带提一句 SC 应该也可以这么改(
存在的问题
注入存在的问题就是跨域。这里有两种解决方案:
GM_xmlhttpRequest
函数,将其请求的地址修改为一个特定的格式,发送到同域下一个不存在的地址,由额外的脚本识别这种格式后解析出原本的请求、请求并返回。这种方案的问题在于需要引入新的脚本,可能会降低一定的运行效率。效果
测试环境为 iOS 13.3.1(iPad mini 5),Surge 版本为 4.10.0(1582),使用的是上面链接中对应的模块(Module),效果如下图所示:
SkyLeap
Chrome
Safari
效果差不多所以没截图(