iFun (iF 视频) 去广告 & 增强
※ 最新版本请前往 一帆视频去广告 & 增强 | Jixun 的项目集 获得。
碎碎念
原《多瑙影院去广告 & 增强》,网站现在改版叫做《iFun 视频》了,也不知道为啥。
新版的网页前端使用 Angular 开发 + webpack 打包;要改代码就得想办法注入进去。
这个网站用到的 webpack-runtime.js
我给简单的拆解了下:
(function(modules) {
let cachedModules = {};
let chunksLoaded = {
1: 0
};
let entryPoints = [];
function installChunk(data) {
let chunkId;
let chunkIds = data[0];
let moreModules = data[1];
let entryPoint = data[2];
let resolves = [];
for (let chunkIdIdx = 0; chunkIdIdx < chunkIds.length; chunkIdIdx++) {
chunkId = chunkIds[chunkIdIdx];
if (Object.prototype.hasOwnProperty.call(chunksLoaded, chunkId) && chunksLoaded[chunkId]) {
resolves.push(chunksLoaded[chunkId][0]);
}
chunksLoaded[chunkId] = 0;
}
for (let moduleId in moreModules) {
if (Object.prototype.hasOwnProperty.call(moreModules, moduleId)) {
modules[moduleId] = moreModules[moduleId];
}
}
if (origPush) {
origPush(data);
}
while(resolves.length) {
resolves.shift()();
}
entryPoints.push.apply(entryPoints, entryPoint || []);
return attemptResolve();
}
function attemptResolve() {
let result;
for (let i = 0; i < entryPoints.length; i++) {
let runtimeFn = entryPoints[i];
if (runtimeFn.slice(1).every(x => x === 0)) {
entryPoints.splice(i--, 1);
webpackRequire.s = runtimeFn[0];
result = webpackRequire(runtimeFn[0]);
}
}
return result;
}
function webpackRequire(moduleName) {
if (cachedModules[moduleName])
return cachedModules[moduleName].exports;
const module = cachedModules[moduleName] = {
i: moduleName,
l: false,
exports: {}
};
modules[moduleName].call(module.exports, module, module.exports, webpackRequire);
module.l = true;
return module.exports;
}
// 可忽略
// ...
})([]);
有兴趣的话可以对照用户脚本来改一改来自己实现;我个人也备份了一份脚本副本。
脚本功能
基本上实现了去广告;部分广告的去除需要登录一个普通用户。
脚本的原理是将当前登陆的用户伪装成 VIP - 相信你从截图里也能看出来了,啊哈。
如果脚本失效,大概率是不会更新的 - 有兴趣可以对比代码以及上面的副本更新,应该就是改几个字符的关系。
安装
安装脚本:主站 | GreasyFork