mirror of
https://github.com/mamoe/mirai.git
synced 2025-01-08 17:20:11 +08:00
troop List
This commit is contained in:
parent
288d0df738
commit
0b01fd7b36
@ -1,5 +1,6 @@
|
||||
package net.mamoe.mirai.qqandroid.network
|
||||
|
||||
import io.ktor.client.HttpClient
|
||||
import kotlinx.atomicfu.AtomicRef
|
||||
import kotlinx.atomicfu.atomic
|
||||
import kotlinx.coroutines.*
|
||||
@ -98,6 +99,7 @@ internal class QQAndroidBotNetworkHandler(bot: QQAndroidBot) : BotNetworkHandler
|
||||
suspend fun doInit() {
|
||||
//start updating friend/group list
|
||||
bot.logger.info("Start updating friend/group list")
|
||||
|
||||
/*
|
||||
val data = FriendList.GetFriendGroupList(
|
||||
bot.client,
|
||||
@ -106,11 +108,14 @@ internal class QQAndroidBotNetworkHandler(bot: QQAndroidBot) : BotNetworkHandler
|
||||
0,
|
||||
2
|
||||
).sendAndExpect<FriendList.GetFriendGroupList.Response>()
|
||||
*/
|
||||
val data = FriendList.GetTroopList(
|
||||
*/
|
||||
|
||||
val data = FriendList.GetTroopListSimplify(
|
||||
bot.client
|
||||
).sendAndExpect<FriendList.GetFriendGroupList.Response>()
|
||||
).sendAndExpect<FriendList.GetTroopListSimplify.Response>(100000)
|
||||
println(data.contentToString())
|
||||
|
||||
|
||||
}
|
||||
|
||||
doLogin()
|
||||
|
@ -0,0 +1,81 @@
|
||||
package net.mamoe.mirai.qqandroid.network.http
|
||||
|
||||
import io.ktor.client.HttpClient
|
||||
import io.ktor.client.request.*
|
||||
import io.ktor.client.response.HttpResponse
|
||||
import io.ktor.http.ContentType
|
||||
import io.ktor.http.URLProtocol
|
||||
import io.ktor.http.setCookie
|
||||
import io.ktor.http.userAgent
|
||||
import kotlinx.coroutines.Dispatchers
|
||||
import kotlinx.coroutines.io.readRemaining
|
||||
import kotlinx.coroutines.withContext
|
||||
import net.mamoe.mirai.qqandroid.QQAndroidBot
|
||||
import net.mamoe.mirai.qqandroid.network.QQAndroidClient
|
||||
import net.mamoe.mirai.utils.cryptor.contentToString
|
||||
import net.mamoe.mirai.utils.currentTimeMillis
|
||||
import net.mamoe.mirai.utils.io.readRemainingBytes
|
||||
import net.mamoe.mirai.utils.io.toUHexString
|
||||
|
||||
/**
|
||||
* 好像不需要了
|
||||
*/
|
||||
object HttpRequest {
|
||||
private lateinit var cookie: String
|
||||
}
|
||||
|
||||
|
||||
internal suspend fun HttpClient.getPTLoginCookies(
|
||||
client: QQAndroidClient
|
||||
): String {
|
||||
//$"https://ssl.ptlogin2.qq.com/jump?pt_clientver=5593&pt_src=1&keyindex=9&ptlang=2052&clientuin={QQ}&clientkey={Util.ToHex(TXProtocol.BufServiceTicketHttp, "", "{0}")}&u1=https:%2F%2Fuser.qzone.qq.com%2F417085811%3FADUIN=417085811%26ADSESSION={Util.GetTimeMillis(DateTime.Now)}%26ADTAG=CLIENT.QQ.5593_MyTip.0%26ADPUBNO=26841&source=namecardhoverstar"
|
||||
// "https://ssl.ptlogin2.qq.com/jump?pt_clientver=5509&pt_src=1&keyindex=9&clientuin={0}&clientkey={1}&u1=http%3A%2F%2Fqun.qq.com%2Fmember.html%23gid%3D168209441",
|
||||
val res = post<HttpResponse> {
|
||||
println(client.wLoginSigInfo.userStWebSig.data.toUHexString().replace(" ", "").toLowerCase())
|
||||
url {
|
||||
protocol = URLProtocol.HTTPS
|
||||
host = "ssl.ptlogin2.qq.com"
|
||||
path(
|
||||
"/jump?pt_clientver=5509&pt_src=1&keyindex=9&clientuin=${client.uin}&clientkey=${client.wLoginSigInfo.userStWebSig.data.toUHexString().replace(
|
||||
" ",
|
||||
""
|
||||
)}&u1=http%3A%2F%2Fqun.qq.com%2Fmember.html%23gid%3D168209441&FADUIN=417085811&ADSESSION=${currentTimeMillis}&source=namecardhoverstar"
|
||||
)
|
||||
}
|
||||
headers {
|
||||
userAgent("Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/64.0.3282.186 Safari/537.36")
|
||||
}
|
||||
}
|
||||
|
||||
println(res.status)
|
||||
println(res.setCookie())
|
||||
println(res.content.readRemaining().readRemainingBytes().toUHexString())
|
||||
return "done";
|
||||
}
|
||||
|
||||
|
||||
internal suspend fun HttpClient.getGroupList(
|
||||
client: QQAndroidClient
|
||||
): String {
|
||||
// "https://ssl.ptlogin2.qq.com/jump?pt_clientver=5509&pt_src=1&keyindex=9&clientuin={0}&clientkey={1}&u1=http%3A%2F%2Fqun.qq.com%2Fmember.html%23gid%3D168209441",
|
||||
val res = get<HttpResponse> {
|
||||
url {
|
||||
protocol = URLProtocol.HTTPS
|
||||
host = "ssl.ptlogin2.qq.com"
|
||||
path("jump")
|
||||
parameters["pt_clientver"] = "5509"
|
||||
parameters["pt_src"] = "1"
|
||||
parameters["keyindex"] = "9"
|
||||
parameters["u1"] = "http%3A%2F%2Fqun.qq.com%2Fmember.html%23gid%3D168209441"
|
||||
parameters["clientuin"] = client.uin.toString()
|
||||
parameters["clientkey"] = client.wLoginSigInfo.userStWebSig.data.toUHexString()
|
||||
}
|
||||
headers {
|
||||
userAgent("Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/64.0.3282.186 Safari/537.36")
|
||||
}
|
||||
}
|
||||
|
||||
println(res.status)
|
||||
println(res.setCookie())
|
||||
return "done";
|
||||
}
|
@ -67,7 +67,7 @@ internal object KnownPacketFactories : List<PacketFactory<*>> by mutableListOf(
|
||||
MessageSvc.PushForceOffline,
|
||||
MessageSvc.PbSendMsg,
|
||||
FriendList.GetFriendGroupList,
|
||||
FriendList.GetTroopList
|
||||
FriendList.GetTroopListSimplify
|
||||
) {
|
||||
// SvcReqMSFLoginNotify 自己的其他设备上限
|
||||
// MessageSvc.PushReaded 电脑阅读了别人的消息, 告知手机
|
||||
|
@ -15,7 +15,6 @@ import net.mamoe.mirai.qqandroid.network.protocol.packet.OutgoingPacket
|
||||
import net.mamoe.mirai.qqandroid.network.protocol.packet.PacketFactory
|
||||
import net.mamoe.mirai.qqandroid.network.protocol.packet.buildOutgoingUniPacket
|
||||
import net.mamoe.mirai.utils.cryptor.contentToString
|
||||
import net.mamoe.mirai.utils.io.debugPrint
|
||||
import net.mamoe.mirai.utils.io.discardExact
|
||||
import net.mamoe.mirai.utils.io.readRemainingBytes
|
||||
import net.mamoe.mirai.utils.io.toUHexString
|
||||
@ -23,8 +22,9 @@ import net.mamoe.mirai.utils.io.toUHexString
|
||||
|
||||
internal class FriendList {
|
||||
|
||||
internal object GetTroopList : PacketFactory<GetTroopList.Response>("friendlist.GetTroopListReqV2") {
|
||||
override suspend fun ByteReadPacket.decode(bot: QQAndroidBot): GetTroopList.Response {
|
||||
internal object GetTroopListSimplify :
|
||||
PacketFactory<GetTroopListSimplify.Response>("friendlist.GetTroopListReqV2") {
|
||||
override suspend fun ByteReadPacket.decode(bot: QQAndroidBot): GetTroopListSimplify.Response {
|
||||
println("获取到了GetTroopList的回信")
|
||||
println(this.readRemainingBytes().toUHexString())
|
||||
return Response()
|
||||
@ -65,7 +65,6 @@ internal class FriendList {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
internal object GetFriendGroupList : PacketFactory<GetFriendGroupList.Response>("friendlist.getFriendGroupList") {
|
||||
|
||||
class Response : Packet {
|
||||
|
@ -276,6 +276,9 @@ fun ByteReadPacket.decodeUni() {
|
||||
//return
|
||||
readBytes(readInt() - 4).debugPrint("head").toReadPacket().apply {
|
||||
val commandName = readString(readInt() - 4).also { PacketLogger.warning("commandName=$it") }
|
||||
if(commandName.contains("GetTroopList")){
|
||||
println("!\n".repeat(100))
|
||||
}
|
||||
println(commandName)
|
||||
println(" unknown4Bytes=" + readBytes(readInt() - 4).toUHexString())
|
||||
// 00 00 00 1A 43 6F 6E 66 69 67 50 75 73 68 53 76 63 2E 50 75 73 68 52 65 73 70
|
||||
|
@ -219,6 +219,9 @@ private fun parseSsoFrame(input: ByteReadPacket): KnownPacketFactories.IncomingP
|
||||
|
||||
commandName = readString(readInt() - 4)
|
||||
DebugLogger.warning("commandName=$commandName")
|
||||
if(commandName.contains("GetTroopList")){
|
||||
println("!\n".repeat(100))
|
||||
}
|
||||
val unknown = readBytes(readInt() - 4)
|
||||
//if (unknown.toInt() != 0x02B05B8B) DebugLogger.debug("got new unknown: ${unknown.toUHexString()}")
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user