use correct http method to get xsp

This commit is contained in:
Wave Dev 2026-03-12 17:06:40 +00:00 committed by GitHub
parent 18558909e2
commit 06117adf47
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

@ -69,90 +69,61 @@ public class DiscordClient(
tokenKind == TokenKind.Bot ? $"Bot {token}" : token tokenKind == TokenKind.Bot ? $"Bot {token}" : token
); );
// add browser headers like x-super-properties and user-agent // add browser headers like x-super-properties and user-agent
// discord flags requests that don't look like a real browser // discord flags requests that don't look like a real browser
if (tokenKind != TokenKind.Bot) if (tokenKind != TokenKind.Bot)
{
try
{ {
try using var apiReq = new HttpRequestMessage(
HttpMethod.Post,
"https://cordapi.dolfi.es/api/v2/properties/web"
);
using var apiRes = await Http.Client.SendAsync(apiReq, innerCancellationToken);
apiRes.EnsureSuccessStatusCode();
var apiJson = await apiRes.Content.ReadAsStringAsync(innerCancellationToken);
using var doc = JsonDocument.Parse(apiJson);
var root = doc.RootElement;
string xspBase64 = root.GetProperty("encoded").GetString()!;
var properties = root.GetProperty("properties");
string userAgent = proprties.GetProperty("user_agent").GetString()!;
string browserVersion = proprties.GetProperty("browser_version").GetString()!;
string osType = properties.GetProperty("os").GetString()!;
string chromeMajor = browserVersion.Split('.')[0];
var headers = new Dictionary<string, string>
{ {
var apiJson = await Http.Client.GetStringAsync( ["sec-ch-ua-platform"] = $"\"{osType}\"",
"https://cordapi.dolfi.es/api/v2/properties/web", ["referer"] = "https://discord.com/app",
innerCancellationToken ["x-debug-options"] = "bugReporterEnabled",
); ["accept-language"] = "en-US,en;q=0.9",
using var doc = JsonDocument.Parse(apiJson); ["sec-ch-ua"] =
$"\"Chromium\";v=\"{chromeMajor}\", \"Not;A=Brand\";v=\"99\"",
var client = doc.RootElement.GetProperty("client"); ["sec-ch-ua-mobile"] = "?0",
var browser = doc.RootElement.GetProperty("browser");
var os = browser.GetProperty("os");
string userAgent = browser.GetProperty("user_agent").GetString()!; ["x-discord-timezone"] = "Europe/Warsaw",
string browserVersion = browser.GetProperty("version").GetString()!; ["x-context-properties"] = "eyJsb2NhdGlvbiI6Ii9hcHAifQ==",
string browserType = browser.GetProperty("type").GetString()!; ["x-discord-locale"] = "en-US",
string osType = os.GetProperty("type").GetString()!;
string osVersion = os.GetProperty("version").GetString()!;
int buildNumber = client.GetProperty("build_number").GetInt32(); ["user-agent"] = userAgent,
string releaseChannel = client.GetProperty("release_channel").GetString()!; ["x-super-properties"] = xspBase64,
};
string chromeMajor = browserVersion.Split('.')[0]; foreach (var kv in headers)
request.Headers.TryAddWithoutValidation(kv.Key, kv.Value);
var xsp = new Dictionary<string, object?>
{
["os"] = osType,
["browser"] = browserType,
["device"] = "",
["system_locale"] = "en-US",
["browser_user_agent"] = userAgent,
["browser_version"] = browserVersion,
["os_version"] = osVersion,
["referrer"] = "",
["referring_domain"] = "",
["referrer_current"] = "https://www.google.com/",
["referring_domain_current"] = "www.google.com",
["search_engine_current"] = "google",
["mp_keyword_current"] = "discord",
["release_channel"] = releaseChannel,
["client_build_number"] = buildNumber,
["client_event_source"] = null,
["has_client_mods"] = false,
["client_launch_id"] = GenerateUuid(),
["launch_signature"] = GenerateLaunchSignature(),
["client_heartbeat_session_id"] = GenerateUuid(),
};
var xspJson = JsonSerializer.Serialize(xsp);
var xspBase64 = Convert.ToBase64String(Encoding.UTF8.GetBytes(xspJson));
var headers = new Dictionary<string, string>
{
["sec-ch-ua-platform"] = $"\"{osType}\"",
["referer"] = "https://discord.com/app",
["x-debug-options"] = "bugReporterEnabled",
["accept-language"] = "en-US,en;q=0.9",
["sec-ch-ua"] =
$"\"Chromium\";v=\"{chromeMajor}\", \"Not;A=Brand\";v=\"99\"",
["sec-ch-ua-mobile"] = "?0",
["x-discord-timezone"] = "Europe/Warsaw",
["x-context-properties"] = "eyJsb2NhdGlvbiI6Ii9hcHAifQ==",
["x-discord-locale"] = "en-US",
["user-agent"] = userAgent,
["x-super-properties"] = xspBase64,
};
foreach (var kv in headers)
request.Headers.TryAddWithoutValidation(kv.Key, kv.Value);
}
catch { }
} }
catch { }
}
var response = await Http.Client.SendAsync( var response = await Http.Client.SendAsync(
request, request,