Как достать домены из куков?

The_vAe

Client
Регистрация
30.05.2019
Сообщения
3 685
Благодарностей
1 438
Баллы
113
Доброго времени.

Подскажите, пожалуйста, есть команда для получения списка куков:
return string.Join("\n", instance.GetCookie("", false));

Возможно есть отдельная команда как получить все домены из куков? Так как регуляркой вырезать домена не совсем нормально выходит, особенно когда есть куча поддоменов.
 

Ilshakin

Client
Регистрация
14.02.2017
Сообщения
653
Благодарностей
611
Баллы
93
Доброго времени.

Подскажите, пожалуйста, есть команда для получения списка куков:
return string.Join("\n", instance.GetCookie("", false));

Возможно есть отдельная команда как получить все домены из куков? Так как регуляркой вырезать домена не совсем нормально выходит, особенно когда есть куча поддоменов.
C#:
project.Lists["1"].AddRange(project.Profile.CookieContainer.Domains);
 
  • Спасибо
Реакции: Alex.A

Sherminator

Client
Регистрация
10.09.2021
Сообщения
1 502
Благодарностей
869
Баллы
113
Доброго времени.

Подскажите, пожалуйста, есть команда для получения списка куков:
return string.Join("\n", instance.GetCookie("", false));

Возможно есть отдельная команда как получить все домены из куков? Так как регуляркой вырезать домена не совсем нормально выходит, особенно когда есть куча поддоменов.
Задрочил чат gpt и вышло вот так

C#:
      public int Execute(Instance instance, IZennoPosterProjectModel project)
      {
          string cookiesString = instance.GetCookie();
          List<string> domains = CookieParser.GetDomainsFromNetscapeCookies(cookiesString);

          foreach (var domain in domains)
          {
              project.SendInfoToLog("Domain: " + domain);
          }

          return 0;
      }

      public class CookieParser
      {
          public static List<string> GetDomainsFromNetscapeCookies(string cookiesString)
          {
              var domains = new List<string>();
              var cookiesArray = cookiesString.Split('\n');

              foreach (var cookieLine in cookiesArray)
              {
                  var cookieParts = cookieLine.Split('\t');

                  if (cookieParts.Length >= 3)
                  {
                      var domain = cookieParts[0].Trim();
                      if (!string.IsNullOrEmpty(domain) && !domains.Contains(domain))
                      {
                          domains.Add(domain);
                      }
                  }
              }

              return domains;
          }
      }
 

Dr.Pipetka

Client
Регистрация
12.12.2017
Сообщения
1 360
Благодарностей
901
Баллы
113
Задрочил чат gpt и вышло вот так

C#:
      public int Execute(Instance instance, IZennoPosterProjectModel project)
      {
          string cookiesString = instance.GetCookie();
          List<string> domains = CookieParser.GetDomainsFromNetscapeCookies(cookiesString);

          foreach (var domain in domains)
          {
              project.SendInfoToLog("Domain: " + domain);
          }

          return 0;
      }

      public class CookieParser
      {
          public static List<string> GetDomainsFromNetscapeCookies(string cookiesString)
          {
              var domains = new List<string>();
              var cookiesArray = cookiesString.Split('\n');

              foreach (var cookieLine in cookiesArray)
              {
                  var cookieParts = cookieLine.Split('\t');

                  if (cookieParts.Length >= 3)
                  {
                      var domain = cookieParts[0].Trim();
                      if (!string.IsNullOrEmpty(domain) && !domains.Contains(domain))
                      {
                          domains.Add(domain);
                      }
                  }
              }

              return domains;
          }
      }
Выше ведь дали ответ:-) Все гораздо проще
C#:
foreach (var domain in project.Profile.CookieContainer.Domains)
{
    project.SendInfoToLog(domain);
}
 
  • Спасибо
Реакции: p-sergei

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