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

The_vAe

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

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

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

Ilshakin

Client
Регистрация
14.02.2017
Сообщения
644
Благодарностей
587
Баллы
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 458
Благодарностей
834
Баллы
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 343
Благодарностей
891
Баллы
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)