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

Gunjubasik

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

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

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

Ilshakin

Client
Регистрация
14.02.2017
Сообщения
631
Благодарностей
543
Баллы
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 014
Благодарностей
540
Баллы
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 239
Благодарностей
806
Баллы
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)