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

The_vAe

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

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

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

Ilshakin

Client
Регистрация
14.02.2017
Сообщения
653
Благодарностей
615
Баллы
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 521
Благодарностей
884
Баллы
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 361
Благодарностей
903
Баллы
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)