内网穿透FRP自带一个仪表盘控制界面 Dashboard
通过仪表盘控制界面 Dashboard 可以方便的查看 FRP 的状态以及代理统计信息展示
很多服务都使用frp进行端口映射,最近客户端掉线情况时有发生,写了个傻妞的插件来方便查看。
使用方法:
放入傻妞replies目录下,重启傻妞即可。
发送命令:frps
当首次使用时会提示输入:frps dashboard接口地址和Authorization,
接口示例:http://XXXXXXX:7500/api/proxy/tcp
Authorization示例:Basic XXXXXXXXXXXXXXXXXXXX==
Authorization获取方式 :F12打开浏览器调试,点击网络NetWork,打开http://XXXXXXX:7500/api/proxy/tcp输入密码登陆,就能看到Response_header里面的Authorization值.
硬是没找到上传文件的地方。
// 查看frps dashboard在线端口
//[rule: frps]
// [cron: 0 9 * * * ] 每天早上9点推送frps dashboard在线端口信息
//set frps Url 接口地址 例如:http://XXXXXXX:7500/api/proxy/tcp 登陆frps dashboard后台,打开这个url就能看到数据就对了
//set frps Authorization 凭证 例如:Basic XXXXXXXXXXXXXXXXXXXX== F12打开浏览器调试,点击网络NetWork,打开http://XXXXXXX:7500/api/proxy/tcp输入密码登陆,就能看到Response_header里面的Authorization
var logs = Logger()
var request = Request();
let geturl = sillyGirl.bucketGet("frps", "Url")
let getauthorization = sillyGirl.bucketGet("frps", "Authorization")
if (geturl == '' || getauthorization == '') {
sendText("未保存frps dashboard信息,请根据提示操作!")
url()
} else {
main()
}
var MYAPP = {};
function url() {
sleep(1000)
sendText("请在30秒内输入frps dashboard后台接口: \n 例如:http://XXXXXXX:7500/api/proxy/tcp");
seturl = input(30000);
var arr = ['q', 'Q', '退出'];
if (seturl != null) {
sillyGirl.bucketSet("frps", "Url", seturl)
sendText("后台接口已记录\n")
authorization()
} else if (arr.indexOf(url) != -1) {} else {
sendText("输入有误, 请重新发送刷步数!");
}
}
function authorization() {
sendText("请在30秒内输入authorization: \n 例如:Basic XXXXXXXXXXXXXXXXXXXX==")
setauthorization = input(30000);
sendText("authorization已记录\n")
sillyGirl.bucketSet("frps", "Authorization", setauthorization)
var arr = ['q', 'Q', '退出'];
main()
}
function main() {
var options = {
'method': 'GET',
'url': sillyGirl.bucketGet("frps", "Url"),
'headers': {
'Authorization': sillyGirl.bucketGet("frps", "Authorization"),
'user-agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.110 Safari/537.36',
},
"json": true,
};
request(options, function(error, response, body) {
//logs.Debug(error,response.proxies)
if (error || response.statusCode != 200) {
sendText("当前url:set frps url " + sillyGirl.bucketGet("frps", "Url"))
sendText("当前authorization:set frps Authorization " + sillyGirl.bucketGet("frps", "Authorization"))
sleep(2000)
sendText("请检查url和authorization是否正确,可直接复制上面的命令发送到窗口修改")
} else if (response.statusCode == 200) {
var name = [];
var cur_conns = [];
for (var key in body.proxies) {
var item = body.proxies[key]
if (item.status == "online") {
name.push(`${+key + 1}. ${item.name} || ${item.conf.remote_port}` + " || 在线\n")
} else {
name.push(`${+key + 1}. ${item.name} ` + " || 离线\n")
}
}
sendText(name.join("") + "\n")
//logs.Info(name.join("")+"\n")
}
});
}
先看看,不明白的地方再问
打卡升级
这真是个好文章,谢谢
七年前来顶贴!
谢谢分享,学习了
谢谢大佬分享,谢谢!
打卡升级
谢谢分享,学习了
谢谢分享!
这真是个好文章,谢谢