【利用宝塔WebHook插件、SmsForwarder(短信转发器)、quicker实现电脑端自动输入手机短信验证码登录】


前言

最近公司各种系统有一些小改动,闲置几分钟就得重新登录,然后每次登录得:打开手机→查看验证码短信→在电脑上手动输入,实在是太影响效率(心情)。为了更好地搬砖(摸鱼),利用一些小工具实现了手机验证码转发并自动输入。


一、整体流程

服务器设定weebhook——手机验证码自动转发到服务器——电脑从服务器获取验证码——自动输入到当前窗口

二、实现步骤

1.服务器设置

我用的是虚拟机,Linux系统(CetnOS7.9),安装宝塔面板、httpd服务等操作就不一一展示了,百度都有。安装好宝塔面板,宝塔软件商店里有一个webhook插件,下载好插件,添加webhook:
1

编辑脚本(这里把验证码存到index页面,linux系统要记得装httpd):

#!/bin/bash  
echo ""
#输出当前时间
date --date='0 days ago' "+%Y-%m-%d %H:%M:%S"
if [ "$1" = "" ]; then  
    echo "code is empty"
    exit 1
else
    FILENAME="/var/www/html/index.html"
    echo "$1" > "$FILENAME"  
    echo "$1 code saved successfully as $FILENAME"
    exit 1  
fi

记住webhook地址:
2
要注意它给的示例链接里面包含空格和中文字符,复制下来后自己改一下,可以先测试,看看日志情况
在这里插入图片描述

到此接收验证码的webhook设置好了,按原计划,电脑端获取验证码也是使用webhook的,但是这个插件非常坑爹,访问webhook后,无论是否设置返回值永远是一个状态码,类似这样:在这里插入图片描述
也就是说,无论webhook脚本怎么写,电脑收到的永远是“{“code”: 1}”这么一串字符,上宝塔论坛查了下,好多年前就有人提出这个问题,官方也一直没解决。好吧,那就换一条路,我把验证码存到服务器http首页(/var/www/html/index.html)这个文件,电脑访问该网址,就能获得验证码了。当然用不用首页无所谓,要用其它的html自己改一下就好。

2.手机验证码自动转发

说到手机短信转发当然是用SmsForwarder(短信转发器)了,该软件github项目地址:https://github.com/pppscn/SmsForwarder
软件安装、设置等操作就不详细说了,官方文档都有,这里直接说关键的:虚拟机网络做端口映射、建立转发通道、编辑转发规则

2.1端口映射

如果你服务器有公网地址的话就不需要这一步了。
这里我的服务器是建立在虚拟机上的,相应的上文生成的webhook地址其实是个192.168.3.1这样开头的私网地址,仅限于本地局域网访问,但是手机软件想使用webhook需要的是一个公网的地址,我这里用端口转发的方式解决。我电脑连接的是路由器,登上路由器设置端口转发,将内部端口(服务器宝塔面板端口)转发到外部端口,比如我服务器宝塔面板地址为192.168.1.2:12345,路由器公网地址为12.34.56.78,设置好端口转发后,在外网环境下使用就把webhook地址里面的192.168.1.2:12345换成12.34.56.78:12345即可。(外部端口可以随意设置,最好不要跟内部端口一致。如果你无法登路由器或者路由器不支持该功能的话,也可以使用DDNS的方式,要么就搞一台云服务器)

2.2建立转发通道

添加发送通道,使用webhook,请求方式用GET就行,webhook server这里换成你自己的webhook地址(注意要使用外网能访问的地址),param变量可以不写(写了也没事,下面消息模板里可以再写一次param覆盖掉)
在这里插入图片描述

2.3建立转发规则

1.选择刚才建立的转发通道;
2.根据个人情况,选择卡槽;
3.匹配字段这里,由于我不同的系统登录短信的内容不一样,有的叫验证码,有的叫动态密码啥的,这里选择正则匹配,正则表达式可以后续接着完善;
4.自定义模板得开,因为宝塔的webhook传入参数不支持中文字符,如果不开自定义模板,我们使用的param=[content],这里的[content]其实是软件定义的模板,类似这样:(来信手机号)12345678910【通道名称】(短信内容)(时间)2024-03-01 11:07:29(手机型号)Honor 10,当这么一串内容传入webhook里,会导致webhook访问失败。
后期查询软件wiki文档,发现可以把[content]改成[org_content]来解决,要么我们就直接自定义模板,只选择{短信内容}就行。
5.最后,添加正则替换内容,由于短信内容含有中文字符,我们就在这里把内容给处理一下,只上传验证码,把其它的内容删掉。验证码一般是6位数字,直接使用^(.)(\d{6}).$===$2就好。

在这里插入图片描述

3.电脑端获取验证码

直接访问服务器网站就能获取到验证码了,由于我是将验证码放到服务器网站首页,先到Linux里面调整一下http的端口。
vi /etc/httpd/conf/httpd.conf
Listen 80改成任意端口(例如33333)
此时访问192.168.1.2:33333就能看到如下内容:
在这里插入图片描述

4.自动输入验证码

电脑获取到手机验证码以后,总不能每次都手动去复制粘贴吧,用一个小脚本就能解决:

@echo off  
setlocal  

curl -s 192.168.1.2:33333 | clip

endlocal

保存为bat文件运行即可,作用是获取验证码并将验证码复制到剪贴板,此时Ctrl+V就可以输入验证码啦。
虽然可以不用看手机了,但是每次登录都得运行一次脚本,还是觉得麻烦。
可以借助一些快捷工具软件,Mac有Alfred,Windows有utools或者quicker。我用的quicker,这玩意儿虽然没有utools好看,但是容易上手。
使用quicker创建一个组合动作,只需要添加两个动作:在这里插入图片描述

4.1第一个动作:运行脚本

动作内容多种方式大家自行选择
(1)运行bat文件:在这里插入图片描述
(2)quicker支持运行bat命令,直接运行命令:
在这里插入图片描述
(3)quicker还可以将输出保存到变量里,所以我们可以不用clip命令了,使用一个内置变量就行,脚本类型这里可以选择隐藏窗口,就不用看到一闪而过的CMD黑框了:
在这里插入图片描述
不建议使用这个运行后延迟,多次测试后发现运行后延迟会导致一些莫名其妙的BUG,延迟建议加在后面的动作里。

4.2第二个动作,自动输入

如果上面使用的是clip剪贴板的方式,这里的变量就选择[clip_text],我使用的是内置变量,所以选择aaa。
需要注意的是延时选项,如果不加延时的话,可能导致脚本执行太快,前一个动作还没完就执行了粘贴,结果就是粘贴了之前保存到剪贴板的错误内容或空内容。
在这里插入图片描述

三、运行效果

验证码登录示范

其它

可以修改正则表达式或者添加多条转发规则来匹配不通的短信内容,文中的正则已经能匹配大部分平台的验证码短信,如果各位登录的网站验证码短信内容不同,可以自行完善规则。
关于quicker脚本,可以单独为此动作设个快捷键。
写在最后,其实大可不用这破宝塔插件,使用java或者python启个web服务器就可以写webhook了,比这简单又好用多了哈哈哈

  • 11
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
可以使用Node.js的Express框架来搭建Web服务器,并使用Webhook实现自动化部署。具体步骤如下: 1. 使用Express框架,创建一个Web服务器: ```javascript const express = require('express'); const app = express(); app.listen(3000, () => { console.log('Server started on port 3000'); }); ``` 2. 创建一个路由,用于接收Webhook请求: ```javascript app.post('/webhook', (req, res) => { console.log('Webhook received'); // 执行自动化部署的代码 res.send('Webhook received'); }); ``` 3. 在GitHub或其他代码托管平台上,配置Webhook,将请求发送到服务器的`/webhook`路由。 4. 在Webhook请求中,包含有关代码更新的信息。您可以使用shell脚本来执行自动化部署的任务。例如: ```javascript app.post('/webhook', (req, res) => { console.log('Webhook received'); const { spawn } = require('child_process'); const deploy = spawn('sh', ['./deploy.sh']); deploy.stdout.on('data', data => { console.log(data.toString()); }); deploy.on('close', code => { console.log(`Child process exited with code ${code}`); }); res.send('Webhook received'); }); ``` 5. 在部署脚本`deploy.sh`中,可以执行您需要的部署任务。例如,您可以使用`git pull`命令来获取最新的代码更新: ```bash #!/bin/bash cd /path/to/project git pull origin master npm install pm2 restart app ``` 6. 使用PM2或其他进程管理工具,启动您的Node.js应用程序。例如: ```bash pm2 start app.js ``` 这样,您就可以使用Webhook自动触发部署任务,并自动化部署您的应用程序。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值