/api/v2/client/enableCMCCRightsVerify 获取免流认证码。 /api/v2/client/mp-speeder(配置加速参数接口)authCode。/api/v2/client/multi-mode(流转发策略配置接口),指定转发策略:/api/v2/client/socks5(配置socks5 server接口)开启 socks5 server。curl -X POST "http://127.0.0.1:9801/api/v2/client/mp-speeder/start" -H "accept: */*" -H "Content-Type: application/json"
import jwtfrom datetime import datetime, timedeltafrom typing import Tupleclass JWTGenerator:@classmethoddef generate_sign(cls, secret_key, device_name: str) -> Tuple[str, int]:"""生成JWT签名"""now = datetime.utcnow()payload = {"deviceName": device_name}token = jwt.encode(payload,secret_key,algorithm="HS256")return tokenif __name__ == "__main__":try:# 请替换为控制台获取的APP密钥secret_key = "QGZzL0M6L3dpbmRvd3Mvd2luLmluaT9yYXc/aW1wb3J0Jg=="# 请替换为设备名称,每个设备请使用不通的device_namedevice_name = "test"sign = JWTGenerator.generate_sign(secret_key, device_name)print(f"Signature: {sign}")except Exception as e:print(f"Error generating token: {str(e)}")
package mainimport ("fmt""github.com/golang-jwt/jwt/v4")type JWTGenerator struct{}// GenerateSign 生成JWT签名func (g *JWTGenerator) GenerateSign(secretKey string, deviceName string) (string, error) {// 创建 payloadclaims := jwt.MapClaims{"deviceName": deviceName,}// 创建 tokentoken := jwt.NewWithClaims(jwt.SigningMethodHS256, claims)// 使用密钥签名signedToken, err := token.SignedString([]byte(secretKey))if err != nil {return "", err}return signedToken, nil}func main() {// 请替换为控制台获取的APP密钥secretKey := "QGZzL0M6L3dpbmRvd3Mvd2luLmluaT9yYXc/aW1wb3J0Jg=="// 请替换为设备名称,每个设备请使用不同的device_namedeviceName := "test"generator := &JWTGenerator{}sign, err := generator.GenerateSign(secretKey, deviceName)if err != nil {fmt.Printf("Error generating token: %v\\n", err)return}fmt.Printf("Signature: %s\\n", sign)}
<dependencies><!-- JWT 库 --><dependency><groupId>io.jsonwebtoken</groupId><artifactId>jjwt-api</artifactId><version>0.11.5</version></dependency><dependency><groupId>io.jsonwebtoken</groupId><artifactId>jjwt-impl</artifactId><version>0.11.5</version><scope>runtime</scope></dependency><dependency><groupId>io.jsonwebtoken</groupId><artifactId>jjwt-jackson</artifactId><version>0.11.5</version><scope>runtime</scope></dependency></dependencies>
import io.jsonwebtoken.Jwts;import io.jsonwebtoken.security.Keys;import javax.crypto.SecretKey;import java.nio.charset.StandardCharsets;import java.util.Date;import java.util.HashMap;import java.util.Map;public class JWTGenerator {/*** 生成JWT签名* @param secretKey 密钥字符串* @param deviceName 设备名称* @return JWT token*/public static String generateSign(String secretKey, String deviceName) {// 将密钥字符串转换为 SecretKeySecretKey key = Keys.hmacShaKeyFor(secretKey.getBytes(StandardCharsets.UTF_8));// 创建 payloadMap<String, Object> claims = new HashMap<>();claims.put("deviceName", deviceName);// 构建 JWTreturn Jwts.builder().setClaims(claims).signWith(key).compact();}public static void main(String[] args) {try {// 请替换为控制台获取的APP密钥String secretKey = "QGZzL0M6L3dpbmRvd3Mvd2luLmluaT9yYXc/aW1wb3J0Jg==";// 请替换为设备名称,每个设备请使用不同的device_nameString deviceName = "test";String sign = generateSign(secretKey, deviceName);System.out.println("Signature: " + sign);} catch (Exception e) {System.out.println("Error generating token: " + e.getMessage());e.printStackTrace();}}}
package mainimport ("crypto/sha256""fmt""golang.org/x/crypto/chacha20""net")// 加解密共用func encryptOrdecrypt(ip net.IP, psk []byte) ([]byte, error) {if ip.To4() == nil {return nil, fmt.Errorf("invalid ipv4 address")}key := sha256.Sum256(psk)encryptKey := key[:32]nonce := make([]byte, 12)cipher, err := chacha20.NewUnauthenticatedCipher(encryptKey, nonce)if err != nil {return nil, err}// 原地加密(32bit精确输出)ciphertext := make([]byte, net.IPv4len)cipher.XORKeyStream(ciphertext, ip.To4())return ciphertext, nil}
文档反馈