From 7a78d69e791b4e61ce498225d82636990ffdca20 Mon Sep 17 00:00:00 2001 From: cssxsh Date: Tue, 23 May 2023 22:10:24 +0800 Subject: [PATCH] feat: salt --- .../arknights/bilibili/VideoDataHolder.kt | 21 +++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/src/main/kotlin/xyz/cssxsh/arknights/bilibili/VideoDataHolder.kt b/src/main/kotlin/xyz/cssxsh/arknights/bilibili/VideoDataHolder.kt index 1ef0209..df0953b 100644 --- a/src/main/kotlin/xyz/cssxsh/arknights/bilibili/VideoDataHolder.kt +++ b/src/main/kotlin/xyz/cssxsh/arknights/bilibili/VideoDataHolder.kt @@ -11,6 +11,7 @@ import kotlinx.serialization.* import kotlinx.serialization.json.* import xyz.cssxsh.arknights.* import java.io.* +import java.security.* import java.util.* import kotlin.collections.* import kotlin.properties.* @@ -26,6 +27,16 @@ public class VideoDataHolder(override val folder: File, override val ignore: sus private val AcceptAllCookiesStorage.container: MutableList by reflect() + private val salt: String + get() = kotlin.run { + val file = File("data/xyz.cssxsh.mirai.plugin.bilibili-helper/salt.txt") + if (file.exists()) { + file.readText() + } else { + "" + } + } + init { http.launch { val cookies = with(File("data/xyz.cssxsh.mirai.plugin.bilibili-helper/cookies.json")) { @@ -51,6 +62,16 @@ public class VideoDataHolder(override val folder: File, override val ignore: sus parameter("order", "pubdate") parameter("tid", key.tid) parameter("jsonp", "jsonp") + parameter("wts", System.currentTimeMillis() / 1000) + + val digest = MessageDigest.getInstance("MD5") + val parameters = url.parameters.entries() + .flatMap { e -> e.value.map { e.key to it } } + .sortedBy { it.first }.formUrlEncode() + + val md5 = digest.digest((parameters + salt).encodeToByteArray()) + + parameter("w_rid", md5.joinToString("") { "%02x".format(it) }) header(HttpHeaders.Origin, "https://space.bilibili.com") header(HttpHeaders.Referrer, "https://space.bilibili.com/161775300/video")