现在手机大多使用流量比较多,但是又有老号码不舍得丢掉(不敢丢,绑定了银行、微信QQ,各种密报等),然后手机📱却又不想佩戴两个手机,于是乎,你可能也和我一样需要将手上的保号手机里面的短信、电话转发到正在使用的手机上面。

如果你新老手机都是iPhone的话,你就可以直接使用帐号之间的同步,直接查看丢在家里的手机短信验证码,而安卓机怎么解决呢🤨

实现原理:

短信转发推送流程图

我们需要现在安卓手机里面安装一个叫做短信转发器开源转发软件,安装之后设置好post设置,将短信等信息提交到api服务器上面,然后将接受到的信息通过 go-cqhttp 发送到新手机上面,其中如果你需要将所有的短信做备份的话,可以在旧手机接收到短信的时候,先保存在api服务器上面的数据库里面。

POST到Api服务器设置说明,下面是我在服务器上面的入库代码:

<?php
header("Content-type: application/json; charset=utf-8"); 
/* post raw data {
"from": "13312345678",
"content": "13312345678\n晓怒网站(https://xiao.nu)蛮不错的\nSIM1_13512345678\n2021-11-25 22:59:15\nk30u"
}*/
$from = $_POST["from"];
$content = $_POST["content"];
$array = explode("\n", $content);

$sent_to = $array[1];
$message = $array[0];
$d_id = $array[3];
$time = strtotime($array[2]);
$hash = md5($from . $content);
$m_id = $hash;

require_once 'mysql.php';
$config = array(
    'DB_HOST'     => 'localhost',
    'DB_PORT'     => '3306',
    'DB_USER'     => 'xiao.nu.mysql.user',
    'DB_PWD'      => 'xiao.nu.mysql.pwd',
    'DB_NAME'     => 'sms',
    'DB_CHARSET'  => 'utf8'
);

$db = DB::getInstance($config);
$sql = "INSERT INTO `sms` (`message_id`, `hash`, `from`, `sent_to`, `message`, `device_id`, `sent_timestamp`) VALUES ('$m_id', '$hash', '$from', '$sent_to', '$message', '$d_id', '$time')";

$res = $db->query($sql);
if($res!=false){
    echo "success";
}else{
    echo "fail";
}
?>

将短信内容通过go-cqhttp发送给自己的QQ上面(可以使用wechaty推送到微信)

QQ推送接口:

字段名描述
user_id新手机上面接收的QQ号码
group_id群号码(这个不要留空)
message要发送的短信内容
auto_escape消息内容是否作为纯文本发送 ( 即不解析 CQ 码 ) , 只在 message 字段是字符串时有效
<?php
// 指定本地go-cqhttp post接口url
$url = "http://localhost:5700/send_private_msg";
$post_data = array(
  "user_id" => "123456789",
  "group_id" => "",
  "message" => "13312345678\n晓怒网站(https://xiao.nu)蛮不错的\nSIM1_13512345678\n2021-11-25 22:59:15\nk30u",
  "auto_escape" => false
);
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $post_data);
$ret = curl_exec($ch);
curl_close($ch);
?>

然后,你就可以在新手机上面收到自己需要收短信验证码、通话记录的信息。