/api/v2/client/enableCMCCRightsVerify to get the authentication code for data-free access./api/v2/client/mp-speeder (parameter interface for acceleration configuration).authCode returned by the first step mobile rights and interests authentication API./api/v2/client/multi-mode (stream forwarding policy configuration API), specify the forwarding policy:/api/v2/client/socks5 (configure socks5 server interface) to enable 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]:Generate JWT signaturenow = datetime.utcnow()payload = {"deviceName": device_name}token = jwt.encode(payload,secret_key,algorithm="HS256")return tokenif __name__ == "__main__":try:# replace with the APP key retrieved from consolesecret_key = "QGZzL0M6L3dpbmRvd3Mvd2luLmluaT9yYXc/aW1wb3J0Jg=="# Replace with device name, each device please use a different 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 generates JWT signaturefunc (g *JWTGenerator) GenerateSign(secretKey string, deviceName string) (string, error) {// Create payloadclaims := jwt.MapClaims{"deviceName": deviceName,}// Create tokentoken := jwt.NewWithClaims(jwt.SigningMethodHS256, claims)// Use key signaturesignedToken, err := token.SignedString([]byte(secretKey))if err != nil {return "", err}return signedToken, nil}func main() {// replace with the APP key retrieved from consolesecretKey := "QGZzL0M6L3dpbmRvd3Mvd2luLmluaT9yYXc/aW1wb3J0Jg=="// Replace with device name, each device please use a different 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 Library --><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 {/*** Generate JWT signature* @param secretKey Key string* @param deviceName Device name* @return JWT token*/public static String generateSign(String secretKey, String deviceName) {// Convert the key string to SecretKeySecretKey key = Keys.hmacShaKeyFor(secretKey.getBytes(StandardCharsets.UTF_8));// Create payloadMap<String, Object> claims = new HashMap<>();claims.put("deviceName", deviceName);// Build JWTreturn Jwts.builder().setClaims(claims).signWith(key).compact();}public static void main(String[] args) {try {// replace with the APP key retrieved from consoleString secretKey = "QGZzL0M6L3dpbmRvd3Mvd2luLmluaT9yYXc/aW1wb3J0Jg==";// Replace with device name, each device please use a different 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")// share encryption and decryptionfunc 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}// in-place encryption (32bit exact output)ciphertext := make([]byte, net.IPv4len)cipher.XORKeyStream(ciphertext, ip.To4())return ciphertext, nil}
フィードバック