宝塔在 7.8 版本加入了强制绑定账户,页面元素的限制倒也还好,很简单就能去除,可问题是软件商店的接口加入了登录校验,没登录的情况下获取不到软件列表自然也就无法安装软件了,长远看来用户绑定是必不可少了。当时只是一个强制绑定问题,可万万没想到升级到 7.9 版本后,首页加入了广告:对专业版及其软件的强制推荐,这就有点贴脸输出了,真就恶心人,所以就研究了一下它的页面文件,好在这部分没有加密所以倒可以去掉。

下面是本次使用到的环境:

  • BT:v7.9.0
  • OS:Ubuntu 20.04.4 LTS x86_64(Py3.7.9)

一、页面调整

如下图所示,宝塔开始在首页推荐自家的付费产品了,明晃晃的放在首页。

图源:https://91ai.net/thread-972905-1-1.html

1. 去除首页广告

  • 文件:/www/server/panel/BTPanel/static/js/public.js

① 搜索 get_pay_status 函数,直接修改返回值。

//return { advanced: advanced, is_pay:is_pay,  end_time:end_time };
return { advanced: 'ltd', is_pay: true, end_time: 0 };

② 搜索 get_product_type 函数,在函数调用处 product_recommendinit 方法,直接 return

init:function(callback){
return;
//var _this = this;
//if(location.pathname.indexOf('bind') > -1) return;
//this.get_product_type(function (rdata) {
// _this.data = rdata
// if(callback) callback(rdata)
//})
},
  • 文件:/www/server/panel/BTPanel/static/js/index.js

① 搜索 // 推荐安装软件,清空/注释 try 块。

// 推荐安装软件
// try {
// var recomConfig = product_recommend.get_recommend_type(1)
// ...
// } catch (error) {
// console.log(error)
// }

② 搜索 setTimeout(function () { _this.get_index_list() }, 400),取消这部分注释。

③ 搜索 product_recommend.init 函数,注释如下内容。

product_recommend.init(function(){
//index.get_product_status(function(){
// index.recommend_paid_version()
//});
index.get_index_list();
})

2. 去除没软用的页脚版权提示

  • 文件:/www/server/panel/BTPanel/templates/default/layout.html

① 搜索 class="footer bgw",将整段删除或注释。

<a style="display: none;" id="defaultPath"></a>
<!-- <div class="footer bgw"> &copy;2014- 广东堡塔安全技术有限公司 (bt.cn)<a
style="margin-left:10px;color:#20a53a;" href="http://www.bt.cn/bbs" target="_blank">求助|建议请上宝塔论坛</a>
</div> -->

3. 去除首页邀请奖励

  • 文件:/www/server/panel/BTPanel/templates/default/index.html

① 搜索 https://www.bt.cn/invite 将此部分删除或注释;

<div class="position f12 c6 pull-left" style="background:none;padding-left:15px">
<!-- <span class="bind-user c4"> -->
<!-- <a href="javascript:bt.pub.bind_btname();" class="btlink">宝塔账户</a> -->
<!-- </span> -->
<!-- { % if data['pd'].find('免费版') != -1 % } -->
<!-- <span id="bt-fuli" class="bt-dashi"> -->
<!-- <a class="btlink ml5" href="https://www.bt.cn/invite" target="_blank">邀请奖励</a> -->
<!-- </span> -->
<!-- { % endif % } -->
<span class="ico-system">系统:</span><span id="info" style="margin-left:10px;"></span>&#12288;&#12288; <span id="running"></span>
</div>

② 额外的还可以把顶栏其他项目删除或注释。

<span class="pull-right f12 c6" style="line-height:52px; margin-right:15px">
<!-- <span id="btversion" style="margin-right:10px"><a onclick="index.open_log()"></a></span> -->
<!-- <span id="toUpdate"><a class="btlink" href="javascript:index.check_update();">更新</a></span> -->
<span style="margin:0 10px"><a class="btlink" href="javascript:index.re_panel();">修复</a></span>
<span style="margin-right:10px"><a class="btlink" href="javascript:index.re_server();">重启</a></span>
</span>

4. 去除软件商店的顶栏推广

  • 文件:/www/server/panel/BTPanel/templates/default/soft.html

① 搜索 <div id="updata_pro_info"></div> 并删除或注释。

  • 文件:/www/server/panel/BTPanel/static/js/soft.js

① 搜索 set_soft_tips 清空函数内容;② 搜索 get_dep_list 清空函数内容。

/**
* @description 设置软件信息
* @param {object} rdata 软件列表请求数据
* @param {string} type 列表类型
*/
set_soft_tips: function (rdata, type) {},

get_dep_list: function (p) {},

5. 隐藏侧栏顶部 IP 地址显示

  • 文件:/www/server/panel/BTPanel/templates/default/layout.html

① 搜索 class="mypcip",将 {{session['address']}} 替换成你想修改的内容。

6. 修改安全入口校验失败的默认内容

  • 文件:/www/server/panel/BTPanel/templates/default/autherr.html

① 自行替换你想要的内容。

7. 修改登录页面

  • 文件:/www/server/panel/BTPanel/templates/default/login.html

① 去掉傻 logo:搜索 class="login-images",删除或注释对应内容。

② 去掉扫码登录:搜索 class="entrance",删除或注释对应内容;

③ 去掉变量调用:搜索 切换二维码,修改成 var entrance = {}

④ 去掉忘记密码:搜索 class="forget_pwd",删除或注释对应内容。

8. 避免潜在的缓存

利用 VS Code 在 /www/server/panel 目录下搜索文本:

?version={{g['version']}}&repair={{data['js_random']}}

替换成 ?version=当前时间戳

9. 最终效果图

首页 | 软件商店 | 登录页 | 入口未通过页

二、额外

1. 宝塔面板反代访问时去除端口号

proxy_pass "http://127.0.0.1:PORT";
  • 反代域名监听 80 和 443 端口。
  • 云防火墙关闭面板端口,服务器开启面板端口。
  • Cloudflare 添加域名解析,a 记录到主机 IP。

2. 视频操作

录了一个视频操作过程在哔哩哔哩中,可以查看以上过程:

三、其它

关于面板强制绑定账户,看起来更像是迫于监管的压力,现行制度下,手机号 ≈ 人,而宝塔账户强制手机号注册,所以绑定用户 ≈ 实名认证,真就很扯淡。

评论