Как прочитать архив (.zpprofile)

wizard

Client
Регистрация
04.10.2011
Сообщения
989
Благодарностей
584
Баллы
93
Здравствуйте, в проекте без браузера нужно из профиля(\*******.zpprofile) получить куки и прокси

подскажите, пожалуйста, снипит
 

one

Client
Регистрация
22.09.2015
Сообщения
6 790
Благодарностей
1 264
Баллы
113
экшен загрузить профиль не подходит?
 

wizard

Client
Регистрация
04.10.2011
Сообщения
989
Благодарностей
584
Баллы
93

Adigen

Client
Регистрация
28.07.2014
Сообщения
825
Благодарностей
651
Баллы
93
Здравствуйте, в проекте без браузера нужно из профиля(\*******.zpprofile) получить куки и прокси

подскажите, пожалуйста, снипит
В GAC добавляем:
Код:
System.IO.Compression.dll
System.IO.Compression.FileSystem.dll
System.Xml.dll
В общий код:
C#:
public class ZPProfile
    {

        public string Path { get; } // Путь к профилю
        public string Plugins { get; private set; } // Плагины
        public string Cookies { get; private set; } // Куки
        public string Storage { get; private set; } // Сторадж
        public string Proxy { get; private set; } // Прокси
        public XmlDocument Data { get; } // Общая информация в XML, чтобы удобнее было искать

        private string _entryToString(ZipArchiveEntry entry)
        {
            if (entry == null) return null;
            return new System.IO.StreamReader(entry.Open(), Encoding.UTF8).ReadToEnd();
        }

        /// <summary>
        /// Считываем профиль из указанного файла
        /// </summary>
        private void Load()
        {
            using (ZipArchive zip = ZipFile.Open(Path, ZipArchiveMode.Read))
            {
                Plugins = _entryToString(zip.GetEntry("profileplugins.zpplugin"));
                Cookies = _entryToString(zip.GetEntry("profilecookie.zpcookie"));
                Storage = _entryToString(zip.GetEntry("profilestorage.zpstorage"));
                Proxy = _entryToString(zip.GetEntry("profileproxy.zpproxy"));
                string zpdata = _entryToString(zip.GetEntry("profiledata.zpdata"));
                if (!String.IsNullOrEmpty(zpdata)) Data.LoadXml(zpdata);
            }
        }

        /// <summary>
        /// Загружаем профиль из указанного файла
        /// </summary>
        /// <param name="profilePath">Путь к профилю</param>
        public ZPProfile(string profilePath)
        {
            Path = profilePath;
            Data = new XmlDocument();
            Load();
        }
   }
Вызываем так:
C#:
var profile = new ZPProfile(@"C:\1.zpprofile");
return profile.Cookies;
P.S. Работает только в net 4.5 и выше, если под windows xp надо, то придется использовать стороннюю либу
 
Последнее редактирование:
  • Спасибо
Реакции: Sz5, Yuriy Zymlex и wizard

wizard

Client
Регистрация
04.10.2011
Сообщения
989
Благодарностей
584
Баллы
93
В GAC добавляем:
Код:
System.IO.Compression.dll
System.IO.Compression.FileSystem.dll
System.Xml.dll
В общий код:
C#:
public class ZPProfile
    {

        public string Path { get; } // Путь к профилю
        public string Plugins { get; private set; } // Плагины
        public string Cookies { get; private set; } // Куки
        public string Storage { get; private set; } // Сторадж
        public string Proxy { get; private set; } // Прокси
        public XmlDocument Data { get; } // Общая информация в XML, чтобы удобнее было искать

        private string _entryToString(ZipArchiveEntry entry)
        {
            if (entry == null) return null;
            return new System.IO.StreamReader(entry.Open(), Encoding.UTF8).ReadToEnd();
        }

        /// <summary>
        /// Считываем профиль из указанного файла
        /// </summary>
        private void Load()
        {
            using (ZipArchive zip = ZipFile.Open(Path, ZipArchiveMode.Read))
            {
                Plugins = _entryToString(zip.GetEntry("profileplugins.zpplugin"));
                Cookies = _entryToString(zip.GetEntry("profilecookie.zpcookie"));
                Storage = _entryToString(zip.GetEntry("profilestorage.zpstorage"));
                Proxy = _entryToString(zip.GetEntry("profileproxy.zpproxy"));
                string zpdata = _entryToString(zip.GetEntry("profiledata.zpdata"));
                if (!String.IsNullOrEmpty(zpdata)) Data.LoadXml(zpdata);
            }
        }

        /// <summary>
        /// Загружаем профиль из указанного файла
        /// </summary>
        /// <param name="profilePath">Путь к профилю</param>
        public ZPProfile(string profilePath)
        {
            Path = profilePath;
            Data = new XmlDocument();
            Load();
        }
   }
Вызываем так:
C#:
var profile = new ZPProfile(@"C:\1.zpprofile");
return profile.Cookies;
P.S. Работает только в net 4.5 и выше, если под windows xp надо, то придется использовать стороннюю либу
что я не так сделал ?
Ошибка при компиляции общего кода "CS0246" "Не удалось найти имя типа или пространства имен "XmlDocument" (пропущена директива using или ссылка на сборку?)". [Строка: 40; Cтолбец: 16]
Ошибка при компиляции общего кода "CS0246" "Не удалось найти имя типа или пространства имен "ZipArchiveEntry" (пропущена директива using или ссылка на сборку?)". [Строка: 42; Cтолбец: 39]
P.S. Класная вещь ) Может и сохранять данные в профаил возможно без мороки ?
 

Adigen

Client
Регистрация
28.07.2014
Сообщения
825
Благодарностей
651
Баллы
93
что я не так сделал ?

P.S. Класная вещь )
Это я ошибся, зенка компилирует код в Net 4.0 поэтому подключаться подключается, но код при компиляции пишет что нет таких методов, у меня просто в длл вынесен код, поэтому все норм работает.
Т.е. надо или код выносить в свою длл, или использовать стороннюю длл для работы с зип архивами, например: http://dotnetzip.codeplex.com/.

Может и сохранять данные в профаил возможно без мороки ?
Сохранять можно, открываем для записи файл, а не для чтения и пишем что хотим.
 
  • Спасибо
Реакции: inkognitosss

inkognitosss

Client
Регистрация
23.03.2015
Сообщения
102
Благодарностей
9
Баллы
18
Это я ошибся, зенка компилирует код в Net 4.0 поэтому подключаться подключается, но код при компиляции пишет что нет таких методов, у меня просто в длл вынесен код, поэтому все норм работает.
Т.е. надо или код выносить в свою длл, или использовать стороннюю длл для работы с зип архивами, например: http://dotnetzip.codeplex.com/.


Сохранять можно, открываем для записи файл, а не для чтения и пишем что хотим.
могли бы вы залить сюда ваш dll файл?
 

Sz5

Client
Регистрация
10.12.2012
Сообщения
157
Благодарностей
186
Баллы
43
Последнее редактирование:
  • Спасибо
Реакции: SilverSun и inkognitosss

inkognitosss

Client
Регистрация
23.03.2015
Сообщения
102
Благодарностей
9
Баллы
18

inkognitosss

Client
Регистрация
23.03.2015
Сообщения
102
Благодарностей
9
Баллы
18
Еще раз подниму эту тему. Все отлично работает в ProjectMaker но при запуске шаблона в ZennoPoster в лог вываливается вот такая ошибка:
Выполнение действия CSharp OwnCode Ссылка на объект не указывает на экземпляр объекта.
Путь к dll указан в GAC, в общем коде тоже dll подключен, версия ZennoPoster последняя. Буду благодарен за ответ.
 

zhekan3

Client
Регистрация
27.12.2015
Сообщения
32
Благодарностей
4
Баллы
8
Последнее редактирование:

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