mirror of
https://github.com/pppscn/SmsForwarder
synced 2025-08-03 01:17:41 +08:00
更新readme
This commit is contained in:
parent
0727ef8bf0
commit
7418a937c6
@ -18,6 +18,8 @@
|
|||||||
|
|
||||||
* 如果任何单位或个人认为该项目的代码/APK可能涉嫌侵犯其权利,则应及时通知并提供身份证明,所有权证明,我们将在收到认证文件后删除相关代码/APK。
|
* 如果任何单位或个人认为该项目的代码/APK可能涉嫌侵犯其权利,则应及时通知并提供身份证明,所有权证明,我们将在收到认证文件后删除相关代码/APK。
|
||||||
|
|
||||||
|
* 隐私声明:SmsForwarder 不会收集任何您的隐私数据!!!APP启动时发送版本信息发送到友盟统计;手动检查新版本时发送版本号用于检查新版本;除此之外,没有任何数据!!!
|
||||||
|
|
||||||
--------
|
--------
|
||||||
|
|
||||||
## 特点和准则:
|
## 特点和准则:
|
||||||
@ -77,7 +79,7 @@
|
|||||||
|
|
||||||
> ⚠ 该APP打开后会自动后台运行并在任务栏显示运行图标,请勿强杀,退出后请重新开启,并加入到系统白名单中,并允许后台运行
|
> ⚠ 该APP打开后会自动后台运行并在任务栏显示运行图标,请勿强杀,退出后请重新开启,并加入到系统白名单中,并允许后台运行
|
||||||
|
|
||||||
> ⚠ 近期接收到部分用户反馈,`SmsForwarder`无法正确转发通知类短信,涉及 ROM 有华为 EMUI 和 小米 MIUI。这两个系统提供了验证类短信安全保护功能,导致验证码不能正常通过广播获得。以下是解决方案。
|
> ⚠ 近期接收到部分用户反馈,`SmsForwarder`无法正确转发通知类短信(普通短信正常),涉及 ROM 有华为 EMUI、小米 MIUI、VIVO OriginOS、OPPO ColorOS等。国内厂商定制系统提供了验证类短信安全保护功能,导致验证码不能正常通过广播获得。以下是解决方案:
|
||||||
|
|
||||||
> ⚠ 风险警示:转发验证码可能导致您的个人隐私、账户安全受到损害,如果您已经知晓该风险,请继续进行以下操作。
|
> ⚠ 风险警示:转发验证码可能导致您的个人隐私、账户安全受到损害,如果您已经知晓该风险,请继续进行以下操作。
|
||||||
|
|
||||||
@ -91,6 +93,10 @@
|
|||||||
|
|
||||||
> 安全中心 > 授权管理 > `短信转发器` > 权限 > 勾选通知类短信
|
> 安全中心 > 授权管理 > `短信转发器` > 权限 > 勾选通知类短信
|
||||||
|
|
||||||
|
> vivo 手机:
|
||||||
|
|
||||||
|
> 信息 > 左上角3个点 > 设置 > 隐私保护 > 关闭验证码安全保护开关
|
||||||
|
|
||||||
### 发送方设置参考
|
### 发送方设置参考
|
||||||
|
|
||||||
#### 钉钉机器人
|
#### 钉钉机器人
|
||||||
|
@ -3,7 +3,7 @@
|
|||||||
buildscript {
|
buildscript {
|
||||||
repositories {
|
repositories {
|
||||||
google()
|
google()
|
||||||
jcenter()
|
mavenCentral()
|
||||||
maven { url "https://jitpack.io" }
|
maven { url "https://jitpack.io" }
|
||||||
maven { url 'https://repo1.maven.org/maven2/' }
|
maven { url 'https://repo1.maven.org/maven2/' }
|
||||||
}
|
}
|
||||||
@ -16,7 +16,7 @@ buildscript {
|
|||||||
allprojects {
|
allprojects {
|
||||||
repositories {
|
repositories {
|
||||||
google()
|
google()
|
||||||
jcenter()
|
mavenCentral()
|
||||||
maven { url "https://jitpack.io" }
|
maven { url "https://jitpack.io" }
|
||||||
maven { url 'https://repo1.maven.org/maven2/' }
|
maven { url 'https://repo1.maven.org/maven2/' }
|
||||||
}
|
}
|
||||||
|
@ -3,8 +3,8 @@
|
|||||||
> ⚠ 有一个已经实现好的站点[消息通知](https://msg.allmything.com)
|
> ⚠ 有一个已经实现好的站点[消息通知](https://msg.allmything.com)
|
||||||
|
|
||||||
### 请求体如下
|
### 请求体如下
|
||||||
> post form
|
|
||||||
参数:
|
> post form 参数:
|
||||||
|
|
||||||
| key | 类型 | 说明 |
|
| key | 类型 | 说明 |
|
||||||
| ---- | ---- | ---- |
|
| ---- | ---- | ---- |
|
||||||
@ -17,19 +17,21 @@
|
|||||||
* sign部分参考借鉴了[阿里钉钉群机器人的sign生成](https://developers.dingtalk.com/document/app/custom-robot-access)
|
* sign部分参考借鉴了[阿里钉钉群机器人的sign生成](https://developers.dingtalk.com/document/app/custom-robot-access)
|
||||||
|
|
||||||
### sign校验规则
|
### sign校验规则
|
||||||
把timestamp+"\n"+密钥当做签名字符串,使用HmacSHA256算法计算签名,然后进行Base64 encode,最后再把签名参数再进行urlEncode,得到最终的签名(需要使用UTF-8字符集)
|
|
||||||
| 参数 | 说明 |
|
把timestamp+"\n"+密钥当做签名字符串,使用HmacSHA256算法计算签名,然后进行Base64 encode,最后再把签名参数再进行urlEncode,得到最终的签名(需要使用UTF-8字符集) | 参数 | 说明 | | ---- | ---- | | timestamp | 当前时间戳,单位是毫秒,(建议验证与请求调用时间误差不能超过1小时,防止重放欺骗) | | secret | 密钥,web通知设置页面,secret |
|
||||||
| ---- | ---- |
|
|
||||||
| timestamp | 当前时间戳,单位是毫秒,(建议验证与请求调用时间误差不能超过1小时,防止重放欺骗) |
|
|
||||||
| secret | 密钥,web通知设置页面,secret |
|
|
||||||
|
|
||||||
示例:
|
示例:
|
||||||
|
|
||||||
```Java
|
```Java
|
||||||
//java
|
//java
|
||||||
|
|
||||||
import javax.crypto.Mac;
|
import javax.crypto.Mac;
|
||||||
import javax.crypto.spec.SecretKeySpec;
|
import javax.crypto.spec.SecretKeySpec;
|
||||||
|
|
||||||
import org.apache.commons.codec.binary.Base64;
|
import org.apache.commons.codec.binary.Base64;
|
||||||
|
|
||||||
import java.net.URLEncoder;
|
import java.net.URLEncoder;
|
||||||
|
import java.nio.charset.StandardCharsets;
|
||||||
|
|
||||||
public class Test {
|
public class Test {
|
||||||
public static void main(String[] args) throws Exception {
|
public static void main(String[] args) throws Exception {
|
||||||
@ -38,9 +40,9 @@ public class Test {
|
|||||||
|
|
||||||
String stringToSign = timestamp + "\n" + secret;
|
String stringToSign = timestamp + "\n" + secret;
|
||||||
Mac mac = Mac.getInstance("HmacSHA256");
|
Mac mac = Mac.getInstance("HmacSHA256");
|
||||||
mac.init(new SecretKeySpec(secret.getBytes("UTF-8"), "HmacSHA256"));
|
mac.init(new SecretKeySpec(secret.getBytes(StandardCharsets.UTF_8), "HmacSHA256"));
|
||||||
byte[] signData = mac.doFinal(stringToSign.getBytes("UTF-8"));
|
byte[] signData = mac.doFinal(stringToSign.getBytes(StandardCharsets.UTF_8));
|
||||||
String sign = URLEncoder.encode(new String(Base64.encodeBase64(signData)),"UTF-8");
|
String sign = URLEncoder.encode(new String(Base64.encodeBase64(signData)), "UTF-8");
|
||||||
System.out.println(sign);
|
System.out.println(sign);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -67,6 +69,7 @@ print(timestamp)
|
|||||||
print(sign)
|
print(sign)
|
||||||
|
|
||||||
```
|
```
|
||||||
|
|
||||||
```python
|
```python
|
||||||
#python 2.7
|
#python 2.7
|
||||||
import time
|
import time
|
||||||
|
Loading…
x
Reference in New Issue
Block a user