C# получить токен авторизации Discord

SlipDez

Client
Регистрация
18.07.2018
Сообщения
453
Реакции
90
Баллы
28
Уже перебрал все варианты которые мог есть задача получить токен авторизации Discord. Решил это сделать с помощью отслеживания трафика (запросы)
и вроде как все правильно но лыжи не едут, подскажите что я не так делаю?

Код который не хочет работать:
Развернуть Свернуть Копировать
var traffic = instance.ActiveTab.GetTraffic();//получение трафика в переменную возможно в аргументах проще указать url фильтры
string k = "https://discord.com/api/v9/science";
string patern = @"(?<=authorization:\ ).*";

foreach(TrafficItem t in traffic)//перебор в цикле
{
 
    string url = t.Url;
    string body =t.ResponseBody;
    if (url==k)// сравнение по url если есть discord Post запрос то тру и в этом запросе будет токен только это значение всегда false почему-то{
        project.SendInfoToLog(url); //вывод в лог url запроса
        string token = System.Text.RegularExpressions.Regex.Match(body,patern); // попытка получить из запроса строку вида authorization: Токен_искомое значение
        
        project.Variables["token"].Value = token; //Token => переменная проекта
    }

}
 
Уже перебрал все варианты которые мог есть задача получить токен авторизации Discord. Решил это сделать с помощью отслеживания трафика (запросы)
и вроде как все правильно но лыжи не едут, подскажите что я не так делаю?

Код который не хочет работать:
Развернуть Свернуть Копировать
var traffic = instance.ActiveTab.GetTraffic();//получение трафика в переменную возможно в аргументах проще указать url фильтры
string k = "https://discord.com/api/v9/science";
string patern = @"(?<=authorization:\ ).*";

foreach(TrafficItem t in traffic)//перебор в цикле
{

    string url = t.Url;
    string body =t.ResponseBody;
    if (url==k)// сравнение по url если есть discord Post запрос то тру и в этом запросе будет токен только это значение всегда false почему-то{
        project.SendInfoToLog(url); //вывод в лог url запроса
        string token = System.Text.RegularExpressions.Regex.Match(body,patern); // попытка получить из запроса строку вида authorization: Токен_искомое значение
    
        project.Variables["token"].Value = token; //Token => переменная проекта
    }

}
Тут смотрели?

Вот так можно много найти
 
Этот вариант работает

C#:
Развернуть Свернуть Копировать
var traffic = instance.ActiveTab.GetTraffic();
var tt = project.Tables["trafficTable"];

tt.AddRow(new List<string>()
{
   "Method",
   "ResultCode",
   "Url",
   "ContentType",
   "RequestHeaders",
   "RequestCookies",
   "RequestBody",
   "ResponseHeaders",
   "ResponseCookies",
   "ResponseBody"
});

foreach(TrafficItem t in traffic)
{
   var row = new List<string>()
   {
     t.Method,
     t.ResultCode.ToString(),
     t.Url,
     t.ResponseContentType,
     t.RequestHeaders,
     t.RequestCookies,
     t.RequestBody,
     t.ResponseHeaders,
     t.ResponseCookies,
     t.ResponseBody == null ? "" : Encoding.UTF8.GetString(t.ResponseBody, 0, t.ResponseBody.Length)
   };
 
   tt.AddRow(row);
}

но хотелось бы не из таблицы выдергивать данные а сразу распарсить в кубике
 
Этот вариант работает

C#:
Развернуть Свернуть Копировать
var traffic = instance.ActiveTab.GetTraffic();
string tt = project.Tables["trafficTable"];

tt.AddRow(new List<string>()
{
   "Method",
   "ResultCode",
   "Url",
   "ContentType",
   "RequestHeaders",
   "RequestCookies",
   "RequestBody",
   "ResponseHeaders",
   "ResponseCookies",
   "ResponseBody"
});

foreach(TrafficItem t in traffic)
{
   var row = new List<string>()
   {
     t.Method,
     t.ResultCode.ToString(),
     t.Url,
     t.ResponseContentType,
     t.RequestHeaders,
     t.RequestCookies,
     t.RequestBody,
     t.ResponseHeaders,
     t.ResponseCookies,
     t.ResponseBody == null ? "" : Encoding.UTF8.GetString(t.ResponseBody, 0, t.ResponseBody.Length)
   };

   tt.AddRow(row);
}

но хотелось бы не из таблицы выдергивать данные а сразу распарсить в кубике


ChatGPT не пытались мучать? Вот вместо вас попытался, не тестировал, так как не на чем.
C#:
Развернуть Свернуть Копировать
var traffic = instance.ActiveTab.GetTraffic();
string result = "";

foreach(TrafficItem t in traffic)
{
   result += $"Method: {t.Method}\n";
   result += $"ResultCode: {t.ResultCode}\n";
   result += $"Url: {t.Url}\n";
   result += $"ContentType: {t.ResponseContentType}\n";
   result += $"RequestHeaders: {t.RequestHeaders}\n";
   result += $"RequestCookies: {t.RequestCookies}\n";
   result += $"RequestBody: {t.RequestBody}\n";
   result += $"ResponseHeaders: {t.ResponseHeaders}\n";
   result += $"ResponseCookies: {t.ResponseCookies}\n";
   result += $"ResponseBody: {(t.ResponseBody == null ? "" : Encoding.UTF8.GetString(t.ResponseBody, 0, t.ResponseBody.Length))}\n\n";

   // Нашли первый элемент трафика, записали его и выходим
   if (result.Length > 0) {
      project.Variables["trafficResult"].Value = result;
      break;
   }
}

// Если ничего не нашли, выходим по ошибке
if (result.Length == 0) {
   throw new Exception("Traffic not found.");
}
 
ChatGPT не пытались мучать? Вот вместо вас попытался, не тестировал, так как не на чем.
C#:
Развернуть Свернуть Копировать
var traffic = instance.ActiveTab.GetTraffic();
string result = "";

foreach(TrafficItem t in traffic)
{
   result += $"Method: {t.Method}\n";
   result += $"ResultCode: {t.ResultCode}\n";
   result += $"Url: {t.Url}\n";
   result += $"ContentType: {t.ResponseContentType}\n";
   result += $"RequestHeaders: {t.RequestHeaders}\n";
   result += $"RequestCookies: {t.RequestCookies}\n";
   result += $"RequestBody: {t.RequestBody}\n";
   result += $"ResponseHeaders: {t.ResponseHeaders}\n";
   result += $"ResponseCookies: {t.ResponseCookies}\n";
   result += $"ResponseBody: {(t.ResponseBody == null ? "" : Encoding.UTF8.GetString(t.ResponseBody, 0, t.ResponseBody.Length))}\n\n";

   // Нашли первый элемент трафика, записали его и выходим
   if (result.Length > 0) {
      project.Variables["trafficResult"].Value = result;
      break;
   }
}

// Если ничего не нашли, выходим по ошибке
if (result.Length == 0) {
   throw new Exception("Traffic not found.");
}
Это чат сразу код под зеннопостер выдал, или это код от чата переделанный под ZP?
 
ChatGPT не пытались мучать? Вот вместо вас попытался, не тестировал, так как не на чем.
C#:
Развернуть Свернуть Копировать
var traffic = instance.ActiveTab.GetTraffic();
string result = "";

foreach(TrafficItem t in traffic)
{
   result += $"Method: {t.Method}\n";
   result += $"ResultCode: {t.ResultCode}\n";
   result += $"Url: {t.Url}\n";
   result += $"ContentType: {t.ResponseContentType}\n";
   result += $"RequestHeaders: {t.RequestHeaders}\n";
   result += $"RequestCookies: {t.RequestCookies}\n";
   result += $"RequestBody: {t.RequestBody}\n";
   result += $"ResponseHeaders: {t.ResponseHeaders}\n";
   result += $"ResponseCookies: {t.ResponseCookies}\n";
   result += $"ResponseBody: {(t.ResponseBody == null ? "" : Encoding.UTF8.GetString(t.ResponseBody, 0, t.ResponseBody.Length))}\n\n";

   // Нашли первый элемент трафика, записали его и выходим
   if (result.Length > 0) {
      project.Variables["trafficResult"].Value = result;
      break;
   }
}

// Если ничего не нашли, выходим по ошибке
if (result.Length == 0) {
   throw new Exception("Traffic not found.");
}
К сожалению не работает(
 
трафик нужно включать заранее
Да, решил не мучиться, немного дополнил решение под себя, хоть кривоватое, но работает

C#:
Развернуть Свернуть Копировать
instance.UseTrafficMonitoring = true; //начинаем запись трафика
Переход на https://discord.com/channels/@me
C#:
Развернуть Свернуть Копировать
// Установленная пауза
System.Threading.Thread.Sleep(2 * 1000);

var traffic = instance.ActiveTab.GetTraffic(); // заносим весь трафик в переменную
var tt = project.Tables["trafficTable"]; // таблицу в переменную



foreach(TrafficItem t in traffic)
{
    var row = new List<string>()
    {
        //состоящего из:
        t.Method,
        t.ResultCode.ToString(),
        t.Url,
        t.ResponseContentType,
        t.RequestHeaders,
        t.RequestCookies,
        t.RequestBody,
        t.ResponseHeaders,
        t.ResponseCookies,
        t.ResponseBody == null ? "" : Encoding.UTF8.GetString(t.ResponseBody, 0, t.ResponseBody.Length)
    };
    // Если составляющая url запроса содержит /api..
    if(t.Url.Contains("/api/v9/science")){
        tt.AddRow(row);//добавляем строку
        
    }
    
}

string q = tt.GetCell("E",0); // берем значение ячейки где находится токен
if (q!="") project.Variables["token"].Value = q;
else project.Variables["token"].Value = tt.GetCell("E",1);
tt.Clear(); //очистка временной таблицы

и следующим кубиком получение значения из body
C#:
Развернуть Свернуть Копировать
string str = project.Variables["token"].Value;
string patern = @"(?<=uthorization:\ ).*"; //регулярка для поиска значения
project.Variables["token"].Value = System.Text.RegularExpressions.Regex.Match(str,patern).Value; //в переменную значение поиска
 
Есть такой js скрипт, возможно, понадобится прописать return.
JavaScript:
Развернуть Свернуть Копировать
(webpackChunkdiscord_app.push([[''],{},e=>{m=[];for(let c in e.c)m.push(e.c[c])}]),m).find(m=>m?.exports?.default?.getToken!==void 0).exports.default.getToken()
 
  • Спасибо
Реакции: SlipDez и djaga
Такой код у меня работает
C#:
Развернуть Свернуть Копировать
var traffic = instance.ActiveTab.GetTraffic();
foreach(var t in traffic)
{
    if(t.Url == "https://discord.com/api/v9/science")
    {
        project.Variables["token"].Value = Regex.Match(t.RequestHeaders, @"(?<=Authorization:\ ).*").Value.Trim();
        break;
    }
}
 
  • Спасибо
Реакции: SlipDez
Такой код у меня работает
C#:
Развернуть Свернуть Копировать
var traffic = instance.ActiveTab.GetTraffic();
foreach(var t in traffic)
{
    if(t.Url == "https://discord.com/api/v9/science")
    {
        project.Variables["token"].Value = Regex.Match(t.RequestHeaders, @"(?<=Authorization:\ ).*").Value.Trim();
        break;
    }
}
Хорошее короткое решение, я пытался нечто такое писать, но у меня почему-то все время в условии был false
 
Есть такой js скрипт, возможно, понадобится прописать return.
JavaScript:
Развернуть Свернуть Копировать
(webpackChunkdiscord_app.push([[''],{},e=>{m=[];for(let c in e.c)m.push(e.c[c])}]),m).find(m=>m?.exports?.default?.getToken!==void 0).exports.default.getToken()
Код отлично работает, но ничего не понятно что написано)):-)
 

Кто просматривает тему: (Всего: 0, Пользователи: 0, Гости: 0)