[Python] 纯文本查看 复制代码 private static List<String> chats = new ArrayList<>();
static {
//生成 [a, b, c, d, e, f, g, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
for (int i = 0; i < 7; i++) {
char c = (char) (i + 97);
chats.add(String.valueOf(c));
}
for (int i = 0; i < 10; i++) {
char c = (char) (i + 48);
chats.add(String.valueOf(c));
}
}
/**
* 获取一次性访问key,参考js方法:
* De = function() {
return "xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g, (function(e) {
var t = 16 * Math.random() | 0,
n = "x" === e ? t: 3 & t | 8;
return n.toString(16)
}))}
*
* @return
*/
private static String onceKey() {
List<String> strs = new ArrayList<>();
Random rd = new Random();
for (int i = 0; i < 30; i++) {
strs.add(chats.get(rd.nextInt(chats.size())));
}
return String.format("%s%s%s%s%s%s%s%s-%s%s%s%s-4%s%s%s-9%s%s%s-%s%s%s%s%s%s%s%s%s%s%s%s", strs.toArray());
} [Python] 纯文本查看 复制代码 private static String sign(String fullUrl, String method, String onceKey) throws Exception {
final String ekey = "9znpamsyl2c7cdrr9sas0le9vbc3r6ba";
final String xcakey = "203803574"; // 开发工具 network 请求头 x-ca-key
String[] wholdUrl = fullUrl.split("\\?");
String url, params = "";
if ("get".equals(method)) {
url = wholdUrl[0];
params = wholdUrl[1];
} else {
url = wholdUrl[0];
}
String _url = url + (!"".equals(params) ? "?" + params : "");
String to_enc = "";
if ("get".equals(method)) {
to_enc = String.format("GET\napplication/json, text/plain, */*\n\n\n\nx-ca-key:%s\nx-ca-nonce:%s\n%s", xcakey, onceKey, _url);
} else {
// to_enc = String.format("POST\n%s\n\n{content_type}\n\nx-ca-key:%s\nx-ca-nonce:%s\n%s"
// , accept, content_type, xcakey, onceKey, _url);
}
return getSHA256StrJava(to_enc, ekey);
}
private static String getSHA256StrJava(String content, String secret) throws Exception {
Mac mac = Mac.getInstance("HmacSHA256");
SecretKeySpec secret_key = new SecretKeySpec(secret.getBytes(), "HmacSHA256");
mac.init(secret_key);
// System.out.println("key: " + secret + " | 内容是:\n" + content);
byte[] binaryData = mac.doFinal(content.getBytes());
return Base64.encodeBase64String(binaryData);
}
|