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

Gunjubasik

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

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

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

Ilshakin

Client
Регистрация
14.02.2017
Сообщения
639
Благодарностей
581
Баллы
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 248
Благодарностей
673
Баллы
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 304
Благодарностей
864
Баллы
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

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