
最近折腾腾讯云,图省事买的轻量云服务器自带了宝塔面板BTPanel
,账号密码登录后这货居然要我绑定手机号,强制302跳转到了/bind
页面,如上图,我不想用更好的服务,为什么就不能跳过呢?既然这样,那只能改你的代码。
定位代码
首先找入口文件:
1 | /www/server/panel/__init__.py |
这个文件里主要是定义路由和一些检查,发现这个面板居然是Flask
写的。分析代码,在入口文件中搜索bind
关键词,找到重定向的相关代码,如下图:

会发现调用了public.is_bind()
这个方法,然后就向上找public
这个变量的出处,

从上面的截图看到public
来自import
导入,从public
这个名字和public.is_bind()
看这应该是一个自定义的包,于是就在这个项目中找,发现是在/www/server/panel/class/
目录中,其实从上面的截图也看得出一些端倪:
1 | sys.path.insert(0, 'class/') |
class/
目录放在了系统路径最前面,这些就定位到了public具体位置为:
1 | /www/server/panel/class/public.py |
接着,迅速就定位到is_bind()
出处:

这个文件真长,大概在3160行。函数里面,我们也不用去查看get_user_info()
怎么实现的了,函数直接返回True
:

就这一行代码,就解决了强制绑定手机号的困扰!
最后重启BTPanel:
1 | sudo bt |
输入1,选择重启。
最后
重定向问题解决了,但是前端还会有弹窗:

就到这吧,暂时也不影响我使用,弹就弹吧。
后续
重装系统,远离BT Panel~