<?xml version="1.0" encoding="utf-8" ?><rss version="2.0" xmlns:tt="http://teletype.in/" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:media="http://search.yahoo.com/mrss/"><channel><title>WADIM</title><generator>teletype.in</generator><description><![CDATA[WADIM]]></description><image><url>https://img4.teletype.in/files/3f/4e/3f4e01d8-8fac-4974-95a8-7eeb6cb6a8d8.png</url><title>WADIM</title><link>https://teletype.in/@midaw007</link></image><link>https://teletype.in/@midaw007?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=midaw007</link><atom:link rel="self" type="application/rss+xml" href="https://teletype.in/rss/midaw007?offset=0"></atom:link><atom:link rel="next" type="application/rss+xml" href="https://teletype.in/rss/midaw007?offset=10"></atom:link><atom:link rel="search" type="application/opensearchdescription+xml" title="Teletype" href="https://teletype.in/opensearch.xml"></atom:link><pubDate>Wed, 03 Jun 2026 03:41:16 GMT</pubDate><lastBuildDate>Wed, 03 Jun 2026 03:41:16 GMT</lastBuildDate><item><guid isPermaLink="true">https://teletype.in/@midaw007/comparison_of_solutions</guid><link>https://teletype.in/@midaw007/comparison_of_solutions?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=midaw007</link><comments>https://teletype.in/@midaw007/comparison_of_solutions?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=midaw007#comments</comments><dc:creator>midaw007</dc:creator><title>Сравнение решений WraithCore, InfiniteServer, AntyZenno</title><pubDate>Wed, 15 Apr 2026 07:12:39 GMT</pubDate><media:content medium="image" url="https://img3.teletype.in/files/23/b2/23b2839f-6ed3-453d-9035-1a566d033a26.png"></media:content><description><![CDATA[<img src="https://img1.teletype.in/files/80/a2/80a2ab0d-da9b-4f89-8b0a-4661d515508f.png"></img>В данной статье мы расмотрим основные отличия наших решений, посмотрим на их плюсы и минусы, а так же поможем вам определится с выбором (проекты идут в порядке от более старого до более нового)]]></description><content:encoded><![CDATA[
  <p id="Gcq7">В данной статье мы расмотрим основные отличия наших решений, посмотрим на их плюсы и минусы, а так же поможем вам определится с выбором (проекты идут в порядке от более старого до более нового)</p>
  <h2 id="3Upj">1) Плагин AntyZenno</h2>
  <figure id="vrSy" class="m_retina">
    <img src="https://img3.teletype.in/files/ac/85/ac85cbf1-d7d9-414b-84c4-fdf16099fb5f.png" width="595" />
  </figure>
  <section style="background-color:hsl(hsl(199, 50%, var(--autocolor-background-lightness, 95%)), 85%, 85%);">
    <p id="AYXQ"><strong>Плюсы:</strong></p>
    <ul id="koy3">
      <li id="0fgU">Удобный и понятный интерфейс</li>
      <li id="8Ghb">Не нужно ничего настраивать и доустанавливать, достаточно всего лишь загрузить плагин в ZennoPoster, и все готово</li>
      <li id="7P2f">Встроенный запуск некоторых антидетект браузеров</li>
      <li id="GreJ">Возможность подключиться к любому антидетект браузеру по протоколу CDP</li>
    </ul>
  </section>
  <section style="background-color:hsl(hsl(34,  84%, var(--autocolor-background-lightness, 95%)), 85%, 85%);">
    <p id="WtVz"><strong>Минусы:</strong></p>
    <ul id="koy3">
      <li id="uQiM">Сложность обновлений, мельчайшее изменение исходного кода (плагина) и загрузки новой версии может привести к ошибкам и непредсказуемости работы шаблона, приходиться проверять весь шаблон заново</li>
      <li id="Wsfz">Из-за наличия интерфейса, могут происходить сбои в отображении элементов управления</li>
      <li id="6Glb">Сам интерфейс может прогружаться до 2 секунд по времени, что при разработке шаблона в котором имеется 100+ экшенов (кубиков) приводит к потере большого количества времени</li>
      <li id="n6se">Устаревший драйвер</li>
      <li id="cznv">Проблемы работоспособности браузеров c версией ядра &gt; 138</li>
      <li id="XLlk">Проблемы обновлений, устранения багов и добавления новых функций (связано с пунктом №1 данного раздела) </li>
      <li id="owYK">Достаточно ограниченный набор функций и возможностей</li>
      <li id="ugiK">Невозможность выписать ZennoBox</li>
      <li id="IV90">Устаревшие методы скрытия автоматизации, большинство сайтов могут видеть процесс автоматизации</li>
      <li id="wJ7P">Низкий уровень эмуляции действий человека</li>
      <li id="208h">Ограниченная настройка действий</li>
    </ul>
  </section>
  <p id="zO6V">Как видно выше, данное решение имеет больше минусов чем плюсов, поэтому я считаю, что на данный момент его использования является не рациональным и не удобным, исходя из этого, я не считаю нужным продолжать поддержку данного решения (AntyZenno все еще доступен и работает)</p>
  <h2 id="h8ov"></h2>
  <h2 id="Exj4">2) InfiniteServer.exe</h2>
  <figure id="TqTf" class="m_original">
    <img src="https://img2.teletype.in/files/de/6b/de6b0f9e-df93-4b45-b6fe-e6f89af464c6.png" width="249" />
  </figure>
  <h3 id="e3Zn"><a href="https://teletype.in/@midaw007/InfiniteServerHelp" target="_blank"><strong>Установка и запуск InfiniteServer.exe</strong></a></h3>
  <p id="3v3y">Принцип работы данного решения был продиктован проблемами ZennoPoster и плагина AntyZenno, из-за чего весь исходных код программы был разделен на 2 части: </p>
  <ol id="GGgB">
    <li id="xTPB">Библиотека InfiniteClient.dll - по сути это просто C# оболочка, для отправки данных из ZennoPoster в InfiniteServer.exe.</li>
    <li id="a4c4">InfiniteServer.exe - исполняемый файл, который обрабатывает команды от ZennoPoster(подсредством InfiniteClient.dll), на своей стороне выполняет получнные команды (клик, ввод текста, парсинг, навигация по страницам, работа со вкладками и тд.) после чего отсылает результат выполненного действия обратно в ZennoPoster</li>
  </ol>
  <section style="background-color:hsl(hsl(199, 50%, var(--autocolor-background-lightness, 95%)), 85%, 85%);">
    <p id="AwVM"><strong>Плюсы:</strong></p>
    <ul id="MRYr">
      <li id="h3dC">Вынос обработки всех команд из ZennoPoster позволил использовать более новый драйвер, и увеличить производительность</li>
      <li id="liWg">Большое количество функций</li>
      <li id="We2M">Встроенный запуск некоторых антидетект браузеров</li>
      <li id="2HKG">Возможность быстрых обновлений и устранения багов, которые практически никогда не затрагивают работу шаблона</li>
      <li id="uCra">Возможность выполнять несколько действий в одном экшене, а так же добавлять дополнительную логику (при желании, весь шаблон можно написать в одном экшене)</li>
      <li id="2jC4">Наличие шаблона с базовыми примерами</li>
      <li id="cwKV">Возможность подключиться к любому антидетект браузеру по протоколу CDP</li>
      <li id="7U6H">Возможность выписать ZennoBox</li>
      <li id="KUn9">Возможность помощи написания кода нейросетями</li>
    </ul>
  </section>
  <section style="background-color:hsl(hsl(34,  84%, var(--autocolor-background-lightness, 95%)), 85%, 85%);">
    <p id="LS4X"><strong>Минусы:</strong></p>
    <ul id="MRYr">
      <li id="y5Bc">Требует добавления библиотеки InfiniteClient.dll в ZennoPoster (на самом деле, это занимает буквально 30 секунд, но у новичков часто возникают проблемы с этим)</li>
      <li id="YHW7">Программа написана на .NET 8, и при его отсутсвии на ПК, требует дополнительного скачивания и установки</li>
      <li id="sAGB">Драйвер автоматизации без дополнительных настроек, что может определяться сайтами как автоматизация </li>
      <li id="qMzE">Каждый поток ZennoPoster запускает отдельную коппию InfiniteServer.exe что приводит к значительному потреблению ресурсов ПК</li>
      <li id="2oNj">Достаточно слабый уровень эмуляции действий человека</li>
      <li id="ftFq">Ограниченые настройки</li>
      <li id="pJDA">Сложности при работе с C#</li>
    </ul>
  </section>
  <p id="Uut1">InfiniteServer.exe является <strong>не плохим</strong> решением, в котором были решены многие фундаментальные проблемы AntyZenno, основной проблемой является то, что на C# (а InfiniteServer.exe  и InfiniteClien.dll написаны на нем) нет подходящих форков популярных драйверов, которые могли бы достаточно хорошо скрывать признаки автомацизации. </p>
  <p id="BqvX">Так же многих пугает то, что шаблоны приходится писать используя C#, который большиство пользователей не знают, ведь вся суть ZennoPoster заключается в том, что бы создавать проекты без написания кода. Я прекрастно понимаю тех, кого это пугает, но на это были свои причины. C# библиотека сильно упрощает создания самого решения, так как можно очень легко и удобно добавлять новые функции, исправлять баги и многое другое. Так же очередным плюсом такого подхода является то, что если вы допустили где-то ошибку в написании кода, то компилятор сам выдаст вам ошибку, а так же укажет на точное место в шаблоне, где она появилась. </p>
  <p id="yiOQ">Я очень старался сделать API InfiniteClient.dll максимально простым и понятным, даже для тех, кто далек от программирования, потратив 1-2 часа времени, можно достаточно просто изучить все функции. Посмотрев на скриншоты ниже, я думаю достаточно просто разобраться с тем, что делают те или инные функции (к тому же вместе с InfiniteClient.dll поставляется InfiniteClient.xml, которая выводит текстовые подсказки). Хотя изначально все выглядит сложно, на самом деле все достаточно просто и понятно, нужно всего лишь потратить немного времени и разобраться.</p>
  <section style="background-color:hsl(hsl(236, 74%, var(--autocolor-background-lightness, 95%)), 85%, 85%);">
    <p id="fbsL">P.S. Можно отправить InfiniteClient.xml любой нейросети, она изучит документацию и сможет вам помогать писать код (смотри пример ниже)</p>
  </section>
  <section style="background-color:hsl(hsl(24,  24%, var(--autocolor-background-lightness, 95%)), 85%, 85%);">
    <figure id="PvsR" class="m_column" data-caption-align="center">
      <img src="https://img4.teletype.in/files/30/cd/30cdcd43-6997-4aca-a11a-177f257cda49.png" width="811" />
      <figcaption>Пример ввода текста</figcaption>
    </figure>
  </section>
  <section style="background-color:hsl(hsl(24,  24%, var(--autocolor-background-lightness, 95%)), 85%, 85%);">
    <figure id="miLt" class="m_column" data-caption-align="center">
      <img src="https://img4.teletype.in/files/b6/58/b6582f89-3e06-4609-8d37-dd306bc0582e.png" width="836" />
      <figcaption>Стрелки указывают на имя параметра (верхняя стрелка)  и его описание (нижняя стрелка)</figcaption>
    </figure>
  </section>
  <section style="background-color:hsl(hsl(24,  24%, var(--autocolor-background-lightness, 95%)), 85%, 85%);">
    <figure id="DOVH" class="m_original" data-caption-align="center">
      <img src="https://img3.teletype.in/files/e9/37/e9373e1a-db69-4235-9c80-9e8c44ed1aa1.png" width="656" />
      <figcaption>Пример написания кода через нейросеть DeepSeek</figcaption>
    </figure>
  </section>
  <h2 id="WBi0">3) WraithCore.exe</h2>
  <figure id="Q07I" class="m_original">
    <img src="https://img2.teletype.in/files/18/82/1882dd89-ff9f-4443-89a3-8c0d1968bd6d.png" width="139" />
  </figure>
  <figure id="r36A" class="m_column">
    <img src="https://img4.teletype.in/files/b5/7e/b57ef07b-4c91-4247-8014-2d8a42b3717f.png" width="1058" />
  </figure>
  <p id="2N8y">Данное решение <strong>ОЧЕНЬ </strong>схоже с InfiniteServer.exe, но является его полным переосмыслением и дополнением.</p>
  <section style="background-color:hsl(hsl(199, 50%, var(--autocolor-background-lightness, 95%)), 85%, 85%);">
    <p id="mXPG"><strong>Плюсы:</strong></p>
    <ul id="8lt3">
      <li id="6Wdh">Вынос обработки всех команд из ZennoPoster позволил использовать более новый драйвер, и увеличить производительность</li>
      <li id="xi4H">Количество функций еще больше чем в InfiniteServer.exe</li>
      <li id="E2OG">Возможность быстрых обновлений и устранения багов, которые практически никогда не затрагивают работу шаблона</li>
      <li id="5DLA">Возможность выполнять несколько действий в одном экшене, а так же добавлять дополнительную логику (при желании, весь шаблон можно написать в одном экшене)</li>
      <li id="Uctn">Наличие шаблона с базовыми примерами</li>
      <li id="hpFm">Возможность подключиться к любому антидетект браузеру по протоколу CDP</li>
      <li id="jWis">Максимальная эмуляция действий человека, движения мыши по кривым, умный ввод текста (вместо обычных пауз между вводом символов), микро колебания мыши при наведении, эмуляция нажатия реальных системных клавиш, вместо вставки символов</li>
      <li id="1xx2">В режиме ожидания, мышь делает микро движения и может периодически двигать курсором, что усложняет определить бота на сайте</li>
      <li id="9Lwb">Вместо тяжеловесных процессов, каждый поток ZennoPoster создает свою собственную изолированную сессию</li>
      <li id="BODU">Очень гибкая настройка (глобальное время ожидания элемента, уровень эмуляции, уровень прогрузки страницы и тд.)</li>
      <li id="bNwM">Максимальная маскировка средств автоматизации для сайтов</li>
      <li id="0hAH">Улучшенная производитльность и скорость работы</li>
      <li id="Qu4r">Возможность выписать ZennoBox</li>
      <li id="RzhT">Максимальная совместимость ваших старых проектов на InfiniteServer.exe</li>
      <li id="owdJ">Улучшен и дополнен InfiniteClient.dll (добавлеенны новые перегрузки методов, упрощены старые перегрузки методов, добавлены новые enum)</li>
      <li id="DcZM">Документация на нескольких языках</li>
      <li id="FuEg">Наличие интерактивного локального конструктора для автоматического написания кода (generator.html)</li>
      <li id="eued">Возможность выполнять <strong>ВАШ </strong>python код прямо из программы и на лету, что дает вам неограниченные возможности при работе</li>
      <li id="dFBI">В отличии от самописного TCP соединения, реализован полноценный REST API</li>
      <li id="rO34">Возможность помощи написания кода нейросетями</li>
      <li id="qLzP">Дорабатывается и улучшается метод работы с мобильными профилями антидетект браузеров</li>
    </ul>
  </section>
  <p id="J4c3"></p>
  <section style="background-color:hsl(hsl(34,  84%, var(--autocolor-background-lightness, 95%)), 85%, 85%);">
    <p id="P4w5"><strong>Минусы:</strong></p>
    <ul id="BnZ5">
      <li id="wyLj">Требует добавления библиотеки InfiniteClient.dll в ZennoPoster (на самом деле, это занимает буквально 30 секунд, но у новичков часто возникают проблемы с этим)</li>
      <li id="PLrj">Сложности при работе с C#</li>
      <li id="DTXw">Отсутсвие встроенного запуска антидетект браузеров</li>
    </ul>
  </section>
  <p id="DXUi">В данном решении соотношение минусов и плюсов в значительной степени отличается (возможно даже что-то не вспомнил), еще немного более подробно расскажу о тонких моментах WraithCore.exe и постараюсь ответить на вопросы, которые у вас могли возникнуть по ходу чтения данной статьи.</p>
  <p id="l4wA"></p>
  <section style="background-color:hsl(hsl(24,  24%, var(--autocolor-background-lightness, 95%)), 85%, 85%);">
    <h3 id="cXAW" data-align="center">1) Почему и в InfiniteServer.exe и в WraithCore.exe присутсвует какая-то InfiniteClient.dll ?</h3>
  </section>
  <p id="jtJ8"><strong>InfiniteClient.dll</strong> - это C# библиотека (модуль или проще говоря штука, в которой вы пишите одну строку, а у нее под капотом выполняется много всего сложного, что упрощает вам жизнь, как пользователю) которая добавляется в корневую папку ZennoPoster (чтобы он смог ее увидеть и понимал, что вы от него хотите, когда пишите код). </p>
  <p id="8dgP">Изначально эта библиотека разрабатывалаcь для InfiniteServer.exe что бы реализовать передачу информации (отправку команд в браузер и получение результатов) между ZennoPoster и InfiniteServer.exe, что и позволила вынести всю обработку и выполнения кода из ZennoPoster. </p>
  <p id="K8tr">Зачем нужны были такие сложности? Просто поверьте, из-за огромного количества факторов на мой взгляд это было самое рациональное и правильно решение. И по сколько WraithCore.exe максимально похож на InfiniteServer.exe я решил, что правильно было сохранить (или по крайней мере постараться сохранить) максимальную совместимость проектов написанных на InfiniteServer.exe с новым WraithCore.exe.</p>
  <p id="NI1d">Проще говоря, если бы я назвал библиотеку новым именем, то глобально ничего не изменилось бы, просто в каждом кубике старых проектов пришлось бы изменять названия библиотеки на другое, что привело бы к бессмысленной трате вашего времени</p>
  <p id="abvm"></p>
  <section style="background-color:hsl(hsl(24,  24%, var(--autocolor-background-lightness, 95%)), 85%, 85%);">
    <h3 id="JVZZ" data-align="center">2) Почему в WraithCore.exe нет встроенного запуска браузеров?</h3>
  </section>
  <p id="afvr">Да, наверное многие заметили, что в AntyZenno и в InfiniteServer.exe были реализованы функции запуска некоторых браузеров &quot;из коробки&quot; (AdsPower, Dolphin, OctoBrowser, IxBrowser). Не спорю, в какой-то степени это было удобно, но на это были свои паричины, основной же является следующее:</p>
  <blockquote id="4xAs">Я решил изолировать новое решение и не быть завязанным на API и документациях сторонних сервисов (в данном случае антидетект браузеров). У всех браузеров свой API, свои задержки, баги, артефакты при запуске и закрытии браузеров, поэтому мною было принято решение, переложить эту ответственность на Вас, как на разработчиков. WraithCore.exe является сугубо посредником в <strong>управлении</strong> между БРАУЗЕРОМ и ZennoPoster (хочу отметить что в тестовом шаблоне я все же указал способы запуска некоторых браузеров с помощью POST/GET запросов)</blockquote>
  <p id="wGy7"></p>
  <section style="background-color:hsl(hsl(24,  24%, var(--autocolor-background-lightness, 95%)), 85%, 85%);">
    <h3 id="jyCQ" data-align="center">3) Если я не разбираюсь в коде, могу ли я как-то сам писать проекты не используя постоянно нейросети?</h3>
  </section>
  <p id="hwH5">Да, для этого был создан локальный конструктор <strong>generator.html</strong>, который поможет вам быстро и просто писать код</p>
  <figure id="mKKO" class="m_column">
    <img src="https://img4.teletype.in/files/bc/38/bc387415-a7b5-4e7e-b183-c6f3cee2bfbf.png" width="1157" />
  </figure>
  <p id="gpaQ"></p>
  <section style="background-color:hsl(hsl(24,  24%, var(--autocolor-background-lightness, 95%)), 85%, 85%);">
    <h3 id="pCpF" data-align="center">4) Почему не сделать что-то боле удобное чем библиотека, писать кодом не удобно</h3>
  </section>
  <p id="Vxcd">Я перепробовал много различных вариантов, и в нашей связке с ZennoPoster данное решение мне кажется наиболее выгодным и правильным. Вот основные мои аргументы:</p>
  <ul id="KH2L">
    <li id="XTLD">В ZennoPoster уже встроен экшен C#, что позволяет просто и быстро создавать новые действия</li>
    <li id="jwR0">Быстрая прогрузка интерфейса (экшена C#)</li>
    <li id="AHpL">Очень удобно мне, как разработчику решения вносить новые идеи, фиксить баги и тд.</li>
    <li id="jijW">Очень удобно обновляться до новых версий, вам достаточно просто запустить новый WraithCore.exe и закинуть InfiniteClient.dll в корневую папку ZennoPoster, что занимает меньше минуты времени</li>
    <li id="UfBQ">Если все же получилось так, что был обновлен какой-то метод, функция, свойство и тд, то вам не нужно будет бегать по проекту и искать эти места, ZennoPoster сам покажет вам эти кубики на этапе компиляции (но в целом я стараюсь не менять ничего в основном API, в ином случае просто пытаюсь добавить перегрузку метода или продублировать что-то в отдельном свойстве)</li>
    <li id="4Zhy">Возможность комбинации действий. В самом деле, это беезумно удобно, если вы хотябы немного умеете програмировать или общатся с нейросетями, то можете сами убедится в том, что создание проетов с помощью кода, очень сильно упрощает работу, в частности обслуживание шаблонов. Вместо создания 10, 20, 30, ... кубиков бессконечных циклов, проверок, создания временных переменных и многое другое, мы можете сделать огромную часть локиги всего лишь в ОДНОМ кубике и не нужно будет бесконечно скролить шаблон, в поиске нужного кубика (пример будет чуть ниже) </li>
  </ul>
  <figure id="1kLg" class="m_custom">
    <img src="https://img2.teletype.in/files/96/29/96294e75-a9d5-4ece-a40e-731f06615c13.png" width="1291" />
    <figcaption>В одном кубике прописаны несколько условий, и исходя из этого, шаблон знает, что ему делать дальше, что экономит огромное количеество времени и упрощает отладку, а так же делает ваш шаблон проще и читабельнее</figcaption>
  </figure>
  <section style="background-color:hsl(hsl(323, 50%, var(--autocolor-background-lightness, 95%)), 85%, 85%);">
    <h2 id="oRgZ" data-align="center">ВАЖНО!!!</h2>
  </section>
  <p id="C5mp">Не скачивайте наши решения на сторонних ресурсах, не скачивайте версии которые Вам присылают в личные сообщения и в чатах. Не покупайте ни у кого &quot;лицензию&quot;. Все вопросы по покупке, продлению лицензий и т.д. <a href="https://t.me/Midaw007" target="_blank">@Midaw007</a></p>

]]></content:encoded></item><item><guid isPermaLink="true">https://teletype.in/@midaw007/wraith_core_install_help</guid><link>https://teletype.in/@midaw007/wraith_core_install_help?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=midaw007</link><comments>https://teletype.in/@midaw007/wraith_core_install_help?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=midaw007#comments</comments><dc:creator>midaw007</dc:creator><title>WraithCore.exe</title><pubDate>Mon, 13 Apr 2026 18:30:08 GMT</pubDate><description><![CDATA[<img src="https://img2.teletype.in/files/57/f6/57f66020-bd22-4882-ad38-7931494e7f5a.png"></img>WraithCore.exe – это приложение, созданное для автоматизации &quot;антидетект браузеров&quot; с помощью программы ZennoPoster(взаимодействие происходит по принципу клиент-сервер, где клиент это Zennoposer, который отправляет команду и ждет ответ, а WraithCore.exe - сервер, который ждет команду, выполняет ее и  отправляет ответ обратно клиенту, то есть в ZennoPoster)]]></description><content:encoded><![CDATA[
  <section>
    <h2 id="r9Qj" data-align="center">Что такое WraithCore.exe?</h2>
  </section>
  <p id="mnaZ"><strong>WraithCore.exe</strong> – это приложение, созданное для автоматизации &quot;антидетект браузеров&quot; с помощью программы ZennoPoster(взаимодействие происходит по принципу клиент-сервер, где клиент это Zennoposer, который отправляет команду и ждет ответ, а WraithCore.exe - сервер, который ждет команду, выполняет ее и  отправляет ответ обратно клиенту, то есть в ZennoPoster)</p>
  <section>
    <h2 id="FY38" data-align="center">Что мне нужно чтобы начать работу?</h2>
  </section>
  <h2 id="gQTq"><strong>1) Убедиться в том, что оно вам действительно надо... </strong></h2>
  <p id="RkRz">Данное решение рассчитано для людей имеющих базовые представление об автоматизации и о том, что такое ZennoPoster и как с ним работать. WraithCore.exe не является панацеей для всех ваших задач и проблем, и это не дает вам гарантию того, что вы сразу же побежите регистрировать гугл аккаунты тысячами или ваши аккаунты никогда не будут блокировать.</p>
  <p id="hfxE">Всё взаимодействие с браузером происходит исключительно с помощью C# кода, хоть практически все нужные вам действия уже прописаны в тестовом шаблоне, а так же имеются визуальные генераторы (generator.html) вам все равно придется чему-то <strong>УЧИТЬСЯ</strong>, как минимум вам нужно понимать отличие <u>string</u> от <u>int (строки от числа),</u> как работать с XPath либо CSS, понимать что такое API и уметь разбираться в документации (В отличиии от InfiniteServer в WraithCore был удален метод запуска браузера из коробки).</p>
  <p id="fdyA">И да, <u>мы не заявляем</u>, что наше решение является САМЫМ лучшим на рынке, аналогов которому нет и так далее... У нас тоже есть баги, есть к чему придраться, есть много моментов которые лично меня как разработчика не устраивают, любую критику, жалобы и предложения с удовольствием примем и постараемся что-то улучшить или исправить. Так же если вам не хватает какой либо функции, или вы считаете что она необходима, так же с радостью выслушаем ваши предложения.</p>
  <p id="ia31">Если вы готовы принять написанную информацию выше, то переходите к пункту номер 2</p>
  <h2 id="tbM9"><strong>2) Оплатить или активировать бесплатную версию</strong></h2>
  <p id="HYUK">Цена WraithCore.exe 30$/месяц, так же вы можете использовать бесплатную(trial) версию <u>на 7 дней</u> (без ограничения функционала)</p>
  <section style="background-color:hsl(hsl(236, 74%, var(--autocolor-background-lightness, 95%)), 85%, 85%);">
    <p id="ZP3G" data-align="center">Лицензия привязывается к вашему zenno_id личного кабинета, поэтому ограничения по к-ву устройств, привяски по IP и так далее нет</p>
  </section>
  <section style="background-color:hsl(hsl(34,  84%, var(--autocolor-background-lightness, 95%)), 85%, 85%);">
    <p id="PeyJ" data-align="center"><strong>Для выписки лицензии обращаться: <a href="https://t.me/Midaw007" target="_blank">Midaw007</a></strong></p>
  </section>
  <section style="background-color:hsl(hsl(323, 50%, var(--autocolor-background-lightness, 95%)), 85%, 85%);">
    <p id="qcOC" data-align="center"><strong>ОБЯЗАТЕЛЬНО СВЕРЯЙТЕ КОНТАКТЫ ПРИ ОПЛАТЕ</strong></p>
  </section>
  <p id="JC3F"></p>
  <p id="TJNW">Для активации лицензии нужен ваш <strong>zenno id</strong>, что бы его получить есть 2 варианта:</p>
  <p id="1HHA"><strong>1. Получить через ProjectMaker</strong><br />Для этого в ProjectMaker нужно в окне переменных найти вкладку &quot;Окружение&quot;, в этом окне взять значение переменной &quot;Environment.CurrentUser&quot; это и есть ваш zenno id</p>
  <figure id="GQk6" class="m_original">
    <img src="https://img4.teletype.in/files/f3/12/f312b6f4-1d2b-4e43-abcb-e79ac7d8a9ac.png" width="618" />
  </figure>
  <p id="n5Sw"><strong>2 .Получить через личный кабинет ZennoLab</strong></p>
  <p id="0MOl">Личный кабинет =&gt; Клик по иконке профиля =&gt; Настройки профиля =&gt; Скопировать ID</p>
  <figure id="K4Kv" class="m_column">
    <img src="https://img3.teletype.in/files/e0/87/e087252a-d70e-4dad-98ad-ca5698641fdf.png" width="1214" />
  </figure>
  <figure id="esZe" class="m_custom">
    <img src="https://img1.teletype.in/files/81/6f/816fe6c9-9777-49f4-8e59-124362193f89.png" width="594" />
  </figure>
  <h2 id="GVmE"></h2>
  <h2 id="NAP4">3) Скачайте архив с проектом и разархивируйте</h2>
  <h3 id="0U7b">Архив можно скачать в нашем телеграмм канале <a href="https://t.me/infinite_script/129" target="_blank">СКАЧАТЬ</a></h3>
  <figure id="6FjX" class="m_original">
    <img src="https://img2.teletype.in/files/90/d9/90d9a73a-570f-4dae-89d1-2c2b8828b3e2.png" width="301" />
  </figure>
  <p id="X2Lb">В архиве вы найдете несколько директорий и файлов:</p>
  <ul id="tDkC">
    <li id="UvAI"><strong>Директория InfiniteSnippets</strong> – C# снипеты, нужны для быстрой вставки готового кода в проекты (смотри фото ниже) </li>
  </ul>
  <figure id="xk9I" class="m_column">
    <img src="https://img3.teletype.in/files/e3/86/e386a104-76a1-4cc0-98ec-820fd6052e9d.png" width="1306" />
  </figure>
  <ul id="Kmj3">
    <li id="EuiL"><strong>Директория locales</strong> - в ней хранятся файлы локализации (en, ru, zh), так же в них хранятся:<br />1) Библиотека InfiniteClient.dll (именно она отправляет команды из ZennoPoster в WraithCore.exe)<br />2) InfiniteClient.xml, это документация для редактора кода (в нашем случае для ZennoPoster) он показыват нам подсказки и описание кода (смотри фото ниже)</li>
  </ul>
  <figure id="HSwp" class="m_column">
    <img src="https://img3.teletype.in/files/6b/9f/6b9f6ed8-a354-4c4e-8a41-d2ad7f901105.png" width="995" />
  </figure>
  <p id="676p"></p>
  <ul id="ILHr">
    <li id="bFMV"><strong>Директория WraithCore </strong>- в ней хранятся:<br />1) Директория _internal - в ней описана работа WraithCore.exe<br />2) WraithCore.exe - сам исполняемый файл, нашей програмы </li>
    <li id="3huS"><strong>Файл WraithCoreTEST.zp </strong>- тестовый шаблон, с примерами кода</li>
  </ul>
  <figure id="uirQ" class="m_original">
    <img src="https://img3.teletype.in/files/e4/05/e405ea67-ce83-46f4-8d5e-a702d769c5e9.png" width="796" />
  </figure>
  <p id="zb8J"></p>
  <h2 id="PEV4">4) Добавить необходимые компоненты в рабочую папку ZennoPoster</h2>
  <h3 id="dcA2">1. Откройте папку в которую вы установили ZennoPoster</h3>
  <figure id="zNNa" class="m_original">
    <img src="https://img1.teletype.in/files/ca/90/ca900476-65db-4a0f-ad2e-8db3a82f0b14.png" width="506" />
  </figure>
  <h3 id="nXcV">2. Перейдите в директорию ExternalAssemblies</h3>
  <figure id="RPnE" class="m_original">
    <img src="https://img2.teletype.in/files/12/94/12943f4e-0399-4876-a613-6bb8a410e8da.png" width="534" />
  </figure>
  <h3 id="2Rit">3. Перейдите в директорию ExternalAssemblies</h3>
  <p id="4GNj">После перехода в директорию ExternalAssemblies, переместите в нее 2 файла (InfiniteClient.dll и InfiniteClient.xml)</p>
  <figure id="az33" class="m_original">
    <img src="https://img3.teletype.in/files/a1/9e/a19eec96-62aa-496c-b28c-9d76c703e7b1.png" width="459" />
  </figure>
  <h2 id="KHo0">5) Почти все готово!!!</h2>
  <p id="ycta">Если вы все сделали правильно, то теперь вам нужно открыть тестовый шаблон WraithCoreTEST.zp, и выполнить первый кубик(экшен), в котором будет создан экземпляр нашего клиента, который в будущем подключится к WraithCore</p>
  <figure id="tr8t" class="m_column">
    <img src="https://img4.teletype.in/files/b4/b5/b4b50b27-b401-4b92-a52d-6294e9640cf5.png" width="1068" />
  </figure>
  <section style="background-color:hsl(hsl(170, 33%, var(--autocolor-background-lightness, 95%)), 85%, 85%);">
    <p id="S9zF"><strong>Если у вас не посыпались ошибки, то настройка выполнена правильно и вы можете начинать писать свои проекты</strong></p>
  </section>
  <section>
    <p id="zOzA">Далее для написания будущих шаблонов дабы не морочиться с добавлением ссылок из GAC и не прописывать using и общий код, рекомендую просто копировать проект WraithCoreTEST.zp, переименовать его, удалить лишние кубики и продолжить работу</p>
  </section>
  <section>
    <h2 id="xstX" data-align="center">Ниже в этой статье будет информация для тех, кто немного хочет вникнуть в то, как пользоваться данным решением, к прочтению рекомендовано, но не обязательно</h2>
  </section>
  <p id="6UNw"></p>
  <h3 id="8JdI"><strong>1) Запускаем WraithCore.exe (двойным кликом мыши по исполняемому файлу)</strong></h3>
  <figure id="dtn7" class="m_column">
    <img src="https://img2.teletype.in/files/1c/fc/1cfcb958-1f39-43c3-ac7e-c1124a77e942.png" width="942" />
  </figure>
  <p id="lT9a"><strong>2) Создаем экземпляр класса Client и сохраняем его &quot;в память&quot; зенопостера.<br /></strong>Это делается для того, что бы мы могли обращаться к этому объекту в других кубиках.</p>
  <figure id="J9na" class="m_original">
    <img src="https://img3.teletype.in/files/e4/a7/e4a76fa0-581d-4432-aeff-171d33634695.png" width="586" />
  </figure>
  <p id="RC52">Далее в каждом последующем кубике для работы с нашим объектом его нужно &quot;доставать из памяти&quot; с помощью строки:</p>
  <section>
    <pre id="Rswc" data-lang="clike">InfiniteClient.Client client = project.Context[&quot;client&quot;] as InfiniteClient.Client;</pre>
  </section>
  <h3 id="TdNe"><strong>3) Создаем новую сессию.</strong> </h3>
  <p id="H8Gx">В отличиие от InfiniteServer(более старого решения, в котором мы выполняли <s>OpenConnect ()</s>, то есть открывали сессию, в данном решении мы используем метод CreateSession(), который откроет под в фоновом режиме легковесную сессию, а не запустит еще один тяжелый exe файл).</p>
  <figure id="Ix3O" class="m_column">
    <img src="https://img3.teletype.in/files/e6/c3/e6c368fe-95cc-4e6d-8372-9dacac66e750.png" width="1147" />
  </figure>
  <h3 id="SA0O">4) Запуск браузера.</h3>
  <p id="wpEg"><br />Запуск браузера выполняется с помощью post/get запросов из документации нужного вам браузера, в тестовом шаблоне уже встроены примеры запуска неекоторых браузеров (<strong>ВЫ МОЖЕТЕ ИСПОЛЬЗОВАТЬ ЛЮБОЙ ДРУГОЙ БРАУЗЕР</strong>):<br /></p>
  <figure id="oFrX" class="m_column">
    <img src="https://img2.teletype.in/files/1d/33/1d339652-6814-4798-ba7b-4a6909427ff0.png" width="978" />
  </figure>
  <section style="background-color:hsl(hsl(34,  84%, var(--autocolor-background-lightness, 95%)), 85%, 85%);">
    <p id="wpEg" data-align="center"><strong>Как найти ID нужного антика можно посмотреть <a href="https://telegra.ph/Poisk-ID-v-antidetekt-brauzerah-11-17" target="_blank">ТУТ</a></strong></p>
  </section>
  <h3 id="KM9j">5) Подключение к браузеру</h3>
  <p id="VxTp">После запуска браузера (с помощью post или get запроса) вам должен прийти ответ, обычно он содержит строку для подключения по CDP<br />Пример от AdsPower:</p>
  <p id="poKb"><code>{<br />&quot;code&quot;:0,&quot;msg&quot;:&quot;success&quot;,<br />&quot;data&quot;:{&quot;ws&quot;:{&quot;puppeteer&quot;:&quot;ws://127.0.0.1:50876/devtools/browser/cd0f3fea-1176-41ef-8dbc-a6e1a99a1a78&quot;,&quot;selenium&quot;:&quot;127.0.0.1:50876&quot;},&quot;debug_port&quot;:&quot;50876&quot;,&quot;webdriver&quot;:&quot;C:\\Users\\user\\AppData\\Roaming\\adspower_global\\cwd_global\\chrome_144\\chromedriver.exe&quot;}<br />}</code></p>
  <p id="vhZJ">В ответе мы видим <code>ws </code>и <code>debug_port</code> </p>
  <p id="PLzd">Для подключения используем<code>ConnectToBrowser()</code>:<br />1) Вариант первый:</p>
  <p id="ecTY"><code>client.ConnectToBrowser(&quot;ws://localhost:9222/devtools/page/DAB7FB6187B554E10B0BD18821265734&quot;);<br /></code>2) Второй вариант<br /><code>client.ConnectToBrowser(&quot;<a href="http://localhost:9222" target="_blank">http://localhost:9222</a>&quot;);</code></p>
  <h3 id="S6Wi"><strong>6) Активируем вкладку для работы.</strong></h3>
  <p id="Uemd">Было сделано много попыток автоматической активации вкладки, но по различным причинам я отказался от данной реализации и переложил это действие на пользователя, так как из-за скорости загрузки, вида браузера, открытых до этого вкладок и других причин, могут быть непредсказуемые результаты, поэтому я составил код, который просто закрывает все вкадки, кромее одной, а в конце активирует ее <br /></p>
  <figure id="JvxV" class="m_column">
    <img src="https://img2.teletype.in/files/d8/18/d818cbe3-933c-4065-8556-2ea2b6e59471.png" width="1017" />
  </figure>
  <h3 id="kxVN"><strong>7) Пишем свой проект дальше. </strong></h3>
  <p id="Vd1M">На этом этапе, стандартная настройка и запуск браузера выполнены, далее вы просто можете взять уже написанные мною кубики и заменить в них данные на свои или же написать свой код<br /></p>
  <figure id="eB5B" class="m_column">
    <img src="https://img2.teletype.in/files/93/43/93439f43-2f25-456c-a27d-d3db587155da.png" width="827" />
  </figure>
  <p id="7PQy">БЛОК 1: Дополнительные настройки.</p>
  <p id="4iPf">БЛОК 2: Готовые кубики с кликами, вводом текста, парсингом, работай с вкладками, загрузкой и скачиванием файлов и так далее.</p>
  <p id="fl00">В будущем к-во действий планируется расширить</p>
  <section style="background-color:hsl(hsl(34,  84%, var(--autocolor-background-lightness, 95%)), 85%, 85%);">
    <p id="Tdki" data-align="center"><strong>Так же вы можете использовать generator.html</strong></p>
  </section>
  <figure id="7Sgs" class="m_column">
    <img src="https://img3.teletype.in/files/2d/dd/2ddd7b98-e7a0-437c-8595-f70183193cdf.png" width="1169" />
  </figure>
  <h3 id="WKUr"><strong>5) Закрываем браузер и соединение. </strong></h3>
  <p id="ekeu">Дабы экономить ресурсы вашего устройства после отработки скрипта или же при выходе по GoodEnd или BadEnd рекомендую выполнять закрытие браузера и закрытие сессии, что бы на фоне не висела лишняя нагрузка</p>
  <figure id="qYD3" class="m_column">
    <img src="https://img2.teletype.in/files/1a/5b/1a5b9ce9-52b6-4bb8-bd6d-b01d5802a990.png" width="1140" />
  </figure>
  <section style="background-color:hsl(hsl(323, 50%, var(--autocolor-background-lightness, 95%)), 85%, 85%);">
    <p id="qzhC"><strong>ВАЖНО!!!</strong> Данное решение <strong>не работает с внутренним браузером ZennoPoster</strong> (но при необходимости можно работать одновременно и со встроенным браузером и с антидетект браузером), действия выполняемые кубиками (экшенами) такие как: <u>клик, ввод текста, работа с вкладками, переход по ссылкам, парсинг и т.д.</u> не будут работать в антидетект браузере (см. рис. 1)</p>
    <figure id="x8BG" class="m_original">
      <img src="https://img4.teletype.in/files/32/e1/32e1b7dc-64a0-4e9c-b906-9241efb8cbe7.png" width="583" />
      <figcaption><strong>рис. 1</strong></figcaption>
    </figure>
  </section>
  <p id="e9Ek">Но это не запрещает вам использовать такие кубики как: обработка текста, работа со списками и таблицами, логика, http запросы, работа с директориями, работа с базами данных и так далее</p>
  <section style="background-color:hsl(hsl(170, 33%, var(--autocolor-background-lightness, 95%)), 85%, 85%);">
    <figure id="H9RF" class="m_original">
      <img src="https://img3.teletype.in/files/2e/cf/2ecf155f-5534-4924-ac42-bd2a4e8f3b99.png" width="551" />
    </figure>
  </section>

]]></content:encoded></item><item><guid isPermaLink="true">https://teletype.in/@midaw007/wraitcore_migration</guid><link>https://teletype.in/@midaw007/wraitcore_migration?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=midaw007</link><comments>https://teletype.in/@midaw007/wraitcore_migration?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=midaw007#comments</comments><dc:creator>midaw007</dc:creator><title>Конспект-инструкция по переходу с InfiniteServer на WraithCore (ZennoPoster)</title><pubDate>Wed, 25 Mar 2026 16:20:13 GMT</pubDate><media:content medium="image" url="https://img2.teletype.in/files/52/a9/52a98f1f-4f24-4f0b-9587-a4d2f29eb828.png"></media:content><description><![CDATA[<img src="https://img4.teletype.in/files/b8/b6/b8b6649d-6413-4abe-a9ea-7c1f93995480.jpeg"></img>Данное руководство предназначено для пользователей (разработчиков шаблонов ZennoPoster) для плавного перехода со старого InfiniteServer (и его клиента) на новую, более производительную архитектуру WraithCore.]]></description><content:encoded><![CDATA[
  <figure id="HlMp" class="m_column">
    <img src="https://img2.teletype.in/files/9a/e8/9ae85ca6-ebc8-4e70-93f6-6a65cad00b01.png" width="1028" />
  </figure>
  <p id="d4eH">Данное руководство предназначено для пользователей (разработчиков шаблонов ZennoPoster) для плавного перехода со старого <code>InfiniteServer</code> (и его клиента) на новую, более производительную архитектуру <code>WraithCore</code>.</p>
  <section style="background-color:hsl(hsl(263, 48%, var(--autocolor-background-lightness, 95%)), 85%, 85%);">
    <p id="6udT">Несмотря на то, что ядро полностью изменилось на <strong>WraithCore</strong>, сама библиотека (DLL) для C# по-прежнему называется <strong><code>InfiniteClient.dll</code></strong>. Это сделано специально для сохранения максимальной совместимости с вашими старыми проектами — вам не придется переписывать <code>using</code> и менять ссылки на библиотеку в ZennoPoster.</p>
  </section>
  <section style="background-color:hsl(hsl(170, 33%, var(--autocolor-background-lightness, 95%)), 85%, 85%);">
    <p id="zZr1">Основное преимущество новой версии: больше не нужно запускать тяжелый I<code>InfinitteServer.exe</code> сервер на каждый поток! Теперь работает один общий сервер <code>WraithCore.exe</code>, а потоки подключаются к нему, создавая легковесные «Сессии» через быстрое HTTP-согласование. Это кардинально улучшает скорость работы проекта и стабильность!</p>
  </section>
  <h2 id="user-content--почему-мы-перешли-на-wraithcore">🌟 Почему мы перешли на WraithCore?</h2>
  <p id="XjyA">Переход на новую архитектуру был продиктован необходимостью решить фундаментальные проблемы старого <code>InfiniteServer</code> и заложить мощный фундамент для развития. Вот главные причины:</p>
  <ol id="kI1b">
    <li id="kTeP"><strong>Рост производительности и экономия ресурсов</strong>. Старый подход требовал запуска отдельного тяжеловесного процесса <code>InfiniteServer.exe</code> на каждый рабочий поток в ZennoPoster. Это приводило к огромным накладным расходам CPU и оперативной памяти. Теперь сервер запускается всего один раз, а потоки просто создают внутри него легковесные &quot;сессии&quot;, потребляя в разы меньше ресурсов.</li>
    <li id="JCo1"><strong>Абсолютная стабильность (&quot;Никаких зависаний&quot;)</strong>. Благодаря отказу от самописного TCP-взаимодействия сокетами и переходу на надежное современное REST API (HTTP), проблемы с &quot;зависанием кубиков&quot;, потери пакетов и обрывы связи остались в прошлом. Архитектура надежно изолирована.</li>
    <li id="NTuC"><strong>Скорость работы и парсинга</strong>. Новое ядро <code>WraithCore</code> кардинально оптимизировано для сверхбыстрой обработки DOM-дерева и маршрутизации команд внутри браузера. Парсинг огромных страниц и сложных селекторов отрабатывает моментально.</li>
    <li id="5JRR"><strong>Повышенная безопасность и Anti-Detect</strong>. Метод автоматического запуска браузера из коробки (LaunchBrowser) был намеренно удален. Это не только обезопашивает <code>WraithCore</code> от изменений в документации браузеров, но и дает вам полную свободу: вы сами запускаете браузер с любыми нужными аргументами, портами и флагами. <code>WraithCore</code> выступает как идеальный драйвер, подключаясь к вашему процессу по CDP порту, что критически снижает риск детектирования антифрод-системами.</li>
    <li id="HxRO"><strong>Современные стандарты кода</strong>. Отказ от &quot;строковых&quot; команд в пользу строгой типизации <code>Enums (ActionMouse, ParseAttribute, KeyboardAction и т.д.</code>) сводит к нулю глупые ошибки и опечатки в коде на этапе написания шаблонов. <u>Совместимость со &quot;строковыми&quot; командами сохранена</u></li>
    <li id="kCg4"><strong>Отказ от плагинов в пользу гибкой C# библиотеки</strong>. C# библиотека предоставляет невероятную гибкость и простоту обновлений: вся сложная логика меняется исключительно &quot;под капотом&quot; в самом <code>WraithCore.exe</code>, поэтому вам не нужно постоянно переустанавливать плагины кубиками. При этом для пользователей, не владеющих программированием, API составлен интуитивно понятно и подробно. Более того, в вашем распоряжении удобный локальный <strong><code>generator.html</code></strong>, который позволяет генерировать готовый C#-код в пару кликов, а также <strong>комплексный тестовый шаблон</strong> со всеми основными функциями и сниппетами!</li>
  </ol>
  <h2 id="user-content-️-краткая-суть-миграции-главные-отличия">⚡️ Краткая суть миграции (Главные отличия)</h2>
  <p id="QDdP">Если у вас нет времени читать всё руководство, запомните два основных архитектурных изменения:</p>
  <ol id="qGDf">
    <li id="OcEH"><strong>Замена OpenConnect() на CreateSession()</strong>: Мы больше не &quot;открываем соединение&quot; с новым процессом сервера, а &quot;создаем сессию&quot; внутри уже запущенного общего сервера <code>WraithCore</code>.</li>
    <li id="moGG"><strong>Удаление запуска браузера &quot;из коробки&quot;</strong>: Раньше библиотека сама дергала API браузера, теперь вы запускаете его самостоятельно (любым удобным способом) и просто подключаете библиотеку к нему через ConnectToBrowser.</li>
  </ol>
  <p id="efc6">Остальной API остался максимально узнаваемым и совместимым.</p>
  <h2 id="user-content-1-запуск-сервера-и-сессии-было--стало">1. Запуск сервера и сессии: Было / Стало</h2>
  <h3 id="user-content-было-старый-подход">Было (Старый подход)</h3>
  <p id="4HGA">Раньше сервер запускался под каждый поток индивидуально. В кубике C# вы писали:</p>
  <pre id="inck" data-lang="clike">InfiniteClient.Client client = project.Context[&quot;client&quot;] as InfiniteClient.Client;
client.OpenConnect(project, pathToExe);</pre>
  <p id="Oisq">В конце работы вы обязательно вызывали <code>client.CloseConnect();</code>, чтобы убить этот отдельный серверный процесс.</p>
  <h3 id="user-content-стало-новый-подход-wraithcore">Стало (Новый подход WraithCore)</h3>
  <p id="zpAZ">Сервер <code>WraithCore.exe</code> запускается <strong>ОДИН РАЗ</strong> руками или батником перед стартом шаблонов.</p>
  <p id="7mkW">В кубике вашего рабочего шаблона подключение выглядит так:</p>
  <pre id="YHZn" data-lang="clike">// 1. Создаем сессию на сервере (создается новый браузер).
// &quot;MyBotLogger&quot; — это имя вашего потока/бота для удобного вывода логов в консоль WraithCore.
InfiniteClient.Client client = project.Context[&quot;client&quot;] as InfiniteClient.Client;
client.CreateSession(project, &quot;127.0.0.1:8000&quot;, &quot;MyBotLogger&quot;);// 3. Подключаемся к браузеру по WebSocket (пример)client.ConnectToBrowser(&quot;ws://127.0.0.1:9222/devtools/browser/...&quot;);</pre>
  <section style="background-color:hsl(hsl(34,  84%, var(--autocolor-background-lightness, 95%)), 85%, 85%);">
    <p id="NQf6"><strong>WARNING</strong></p>
    <p id="vSSt">Для безопасности и стабильности метод <strong>LaunchBrowser был удален</strong>. Теперь браузер нужно запускать самостоятельно (через кубики ZennoPoster или <code>Process.Start</code>), передавая ему все необходимые параметры (например, <code>--proxy-server</code>, <code>--user-agent, --headless и др</code>). Это позволяет вам гибко настраивать отпечаток. Готовые примеры запуска и подключения лежат в тестовом шаблоне!</p>
  </section>
  <pre id="ig7R" data-lang="clike">client.Session.Close();
// Альтернативно можно использовать: client.Close();
// Для обратной совместимости старый метод тоже поддерживается: client.CloseConnect();</pre>
  <h2 id="user-content-2-управление-сессиями-и-эмуляцией">2. Управление сессиями и эмуляцией</h2>
  <p id="GiKA">Новая архитектура строится вокруг сессий. Вы можете:</p>
  <ul id="wAFz">
    <li id="hVR6"><code>client.CreateSession(project, url)</code> — создать новую сессию.</li>
    <li id="8xrc"><code>client.AttachToSession(&quot;uuid&quot;)</code> — подключиться к уже запущенной сессии.</li>
    <li id="yte3"><code>var list = client.Session.GetList()</code> — получить список активных сессий </li>
  </ul>
  <p id="FFs2">Пример переподключения:</p>
  <pre id="GjjD" data-lang="clike">var sessions = client.Session.GetList();
if (sessions.Count &gt; 0) 
{ 
client.AttachToSession(sessions[0]); // Подключаемся к первой найденной
}</pre>
  <h2 id="user-content-эмуляция-действий-пользователя">3. Эмуляция действий пользователя</h2>
  <p id="Le9P">Теперь вы можете гибко включать и отключать эмуляцию «на лету». Это полезно, когда нужно максимально быстро прокликать меню без движения мыши, а затем снова вернуть человекоподобное поведение:</p>
  <pre id="DWox" data-lang="clike">// Полная эмуляция (плавное движение мыши, случайные задержки набора текста)
client.SetEmulationLevel(EmulationLevel.Full);
// Мгновенные действия (максимальная скорость)
client.SetEmulationLevel(EmulationLevel.None);
</pre>
  <section style="background-color:hsl(hsl(34,  84%, var(--autocolor-background-lightness, 95%)), 85%, 85%);">
    <p id="user-content-3-обновленные-типы-данных-enums-и-actionmouse">Также хочется отметить, что были удалены следующие emun:  <br />LeftClick_notEmuliation, RightClick_notEmuliation, Focus_notEmuliation и т.д. для упрощения и очистки API</p>
  </section>
  <h2 id="Ly4e">4. Обновленные типы данных (Enums)</h2>
  <p id="CEUK">Код стал строже и логичнее. Там, где раньше (например, в методах клавиатуры) передавались обычные строки, теперь везде используется строгая типизация, что защищает от опечаток (совместимость сохранена)</p>
  <pre id="UlLm">client.Keyboard(&quot;press&quot;, &quot;Enter&quot;); //Старый подход
client.Keyboard(KeyboardAction.Press, &quot;Enter&quot;); //Новый подход</pre>
  <p id="xTUL">Что касается <strong>работы с мышью</strong>: В старой версии вы привыкли использовать раздельные перечисления <code>RiseBySelector.LeftClick</code> и <code>RiseByCoordinates.LeftClick</code>что могло вызвать путаницу. Они по-прежнему поддерживаются для совместимости, но <strong>в WraithCore добавлен новый универсальный Enum — <code>ActionMouse</code></strong>.</p>
  <p id="go0w">Теперь вам не нужно запоминать и использовать разные <code>Enum</code> в зависимости от того, куда вы кликаете по элементу или по координатам. <code>ActionMouse</code> работает везде:</p>
  <pre id="Plgz" data-lang="clike">// Единый стандарт взаимодействия через ActionMouse:
// Legacy код: client.MouseRise(&quot;button#submit&quot;, RiseBySelector.LeftClick);
// Legacy код: client.MouseRise(500, 300, RiseByCoordinates.RightClick);
client.MouseRise(&quot;button#submit&quot;, ActionMouse.LeftClick); // Клик по селектору
client.MouseRise(500, 300, ActionMouse.RightClick); // Клик по координатам
client.MouseRise(&quot;.slider&quot;, ActionMouse.Focus); // Фокус</pre>
  <p id="6RAa">Это объединение делает код чище и избавляет от дублирования логики при написании шаблонов.</p>
  <h2 id="user-content-4-изменения-в-работе-с-трафиком">5. Изменения в работе с Трафиком</h2>
  <p id="y73B">В новой версии отказались от TCP-сокетов и класса Traffic в пользу чистых REST-запросов и класса NetworkRequest.</p>
  <h3 id="user-content-стало">Стало</h3>
  <p id="xzhv">Запросы теперь содержат полные данные: заголовки, статусы, метод.</p>
  <pre id="4zDi" data-lang="clike">// Включение мониторинга (с опцией захвата тела ответа и формата)
client.TrafficMonitorStart(TrafficCaptureFormat.Base64, captureBodies: true);
// Получение профильтрованного списка
List&lt;NetworkRequest&gt; requests = client.TrafficMonitorGet();
foreach(NetworkRequest req in requests) 
{ 
    if (req.Url.Contains(&quot;api/v1/login&quot;)) 
    { 
    project.SendInfoToLog($&quot;Найден запрос авторизации: {req.Url}&quot;); 
    project.SendInfoToLog($&quot;Тело ответа: {req.ResponseBody}&quot;); 
    // Полное тело ответа! 
    }
}
// Очистка и Остановка (обязательно отключайте для экономии ОЗУ)
client.TrafficMonitorStop();
client.TrafficMonitorClear();</pre>
  <h2 id="user-content-5-новые-функции-и-улучшения">6. Новые функции и улучшения</h2>
  <p id="EBq8">Помимо кардинального улучшения скорости парсинга и стабильности выполнения в проект добавлены новые супер-фичи:</p>
  <p id="Sh9u"><strong>6.1) Поддержка Shadow DOM (<code>:locator:</code>)</strong>: Теперь можно искать элементы внутри закрытых теневых деревьев нестандартных сайтов! Используйте EvaluateHandle для захвата, а затем кликайте:</p>
  <pre id="blBD" data-lang="clike">client.EvaluateHandle(&quot;document.querySelector(&#x27;host&#x27;).shadowRoot.querySelector(&#x27;btn&#x27;)&quot;);
// Legacy код: client.MouseRise(&quot;:locator:&quot;, RiseBySelector.LeftClick);
client.MouseRise(&quot;:locator:&quot;, ActionMouse.LeftClick);</pre>
  <p id="KILb"><strong>6.2) Динамический Python <code>client.Exec(python_script)</code></strong>: Позволяет отправить сложный питон скрипт прямо на сервер для исполнения &quot;по месту&quot;. Внутри вашего скрипта у вас есть прямой доступ к переменным <code>page</code> (объект страницы) и <code>context</code> (контекст браузера).</p>
  <pre id="Ptx5" data-lang="clike">string code = @&quot;
# Прямой доступ к браузеру
title = await page.title()
return title
&quot;;
var result = client.Exec(code);</pre>
  <p id="ubdn"><strong>6.2) Продвинутые ожидания загрузки страницы <code>client.WaitForLoadState(...)</code></strong>:</p>
  <ul id="LGUb">
    <ul id="d7WL">
      <li id="dXQb"><code>WaitUntilState.NetworkIdle</code> — Ждать &quot;тишины&quot; сети (идеально для SPA, React/Vue сайтов, догружаемых скриптами).</li>
      <li id="7dtU"><code>WaitUntilState.DOMContentLoaded</code> — Только DOM дерево (максимальная скорость, не ждет картинки). Включена по умолчанию</li>
      <li id="7et5"><code>WaitUntilState.Load</code>— Ждать полной прогрузки страницы</li>
      <li id="JKL1"><code>WaitUntilState.Commit</code>— Отключается после начала действия навигации</li>
    </ul>
  </ul>
  <p id="lJvh"><strong>6.3) Метод CheckAny (Умный и быстрый поиск элементов)</strong>: Ищет любой из переданных селекторов на странице (даже во всех фреймах сразу) и возвращает название появившегося первым. Очень удобно для логики &quot;Что появилось: Капча или Успех?&quot;.</p>
  <pre id="OlwM" data-lang="clike">var targets = new Dictionary&lt;string, string&gt;
{ 
   { &quot;captcha&quot;, &quot;div.g-recaptcha&quot; },
   { &quot;success_message&quot;, &quot;div.alert-success&quot; },
   { &quot;error_login&quot;, &quot;#login-error&quot; }
};
// Ждем появления любого из этих 3-х элементов (таймаут 10 секунд)
string result = client.CheckAny(targets, 10000);
if (result == &quot;captcha&quot;){
   project.SendInfoToLog(&quot;Надо решать капчу!&quot;);
   return &quot;Надо решать капчу!&quot;;
   }</pre>
  <p id="JTID"><strong>6.4) Работа с мобильными профилями</strong>: Добавлена новая (пока тестовая) возможность работы с мобильными контекстами (задание fingerprint&#x27;ов мобильных устройств). Фича будет дорабатываться.</p>
  <pre id="U2x8" data-lang="clike">// Переключаем тип девайса для правильной эмуляции мобильных тапов
client.SelectDevice(DeviceType.Mobile);</pre>
  <pre id="rWCK" data-lang="clike">Так же по умолчанию отключена функция эмуляции &quot;свайпа&quot;, при включении скрипт вместо прокрутки колеса мыши, будет старатся эмулировать свай (зажать мышь в центре экрана и протянуть вверх/вниз), включить эту функцию можно с помощью:
client.Settings.SetMobileSwipesEnabled(true);</pre>
  <p id="rIBw"><strong>6.5) Работа с куками</strong>:</p>
  <p id="MrHg"> GetCookies(), ClearCookies(), AddCookies(json) теперь используют стандартные JSON массивы, полностью совместимые с форматами популярных расширений Chrome.</p>
  <pre id="LcBi" data-lang="clike">// 1. Получаем ВСЕ куки браузера в формате JSON
string cookiesJson = client.GetCookies();
// 2. Получаем куки только для конкретных URL
string specificCookies = client.GetCookies(new[] { &quot;https://example.com&quot;, &quot;https://google.com&quot; });
// 3. Очищаем ВСЕ куки
client.ClearCookies();
// 4. Удаляем куки только для конкретных доменов
client.ClearCookies(new[] { &quot;facebook.com&quot;, &quot;instagram.com&quot; });
// 5. Добавляем новые куки из сохраненного профиля
string myCookies = &quot;[{\&quot;name\&quot;:\&quot;session_id\&quot;,\&quot;value\&quot;:\&quot;abc123\&quot;,\&quot;domain\&quot;:\&quot;.example.com\&quot;}]&quot;;
client.AddCookies(myCookies);</pre>
  <p id="Bh3l"><strong>6.6) Централизованное управление настройками проекта (<code>client.Settings</code>)</strong></p>
  <p id="HYqL">В новой архитектуре все глобальные настройки клиентской части вынесены в специальный менеджер <code>client.Settings</code>. Это упрощает управление конфигурацией бота и делает исходный код более читаемым.</p>
  <p id="c3nr">Вам больше не нужно искать, в каких методах настраиваются базовые параметры — всё хранится в одном месте:</p>
  <ul id="X9q5">
    <li id="pDz8">Дополнительное время ожидания HTTP-ответа</li>
  </ul>
  <pre id="wM3l" data-lang="clike">client.Settings.CommandTimeout = 10; // Установить
int timeout = client.Settings.CommandTimeout; // Прочитать</pre>
  <ul id="DB4F">
    <li id="user-content-эмуляция-и-anti-detect">Эмуляция и Anti-Detect</li>
  </ul>
  <pre id="JT9N" data-lang="clike">// Режим Human или мгновенный
client.Settings.SetEmulationLevel(EmulationLevel.Full);
client.Settings.SetEmulationLevel(EmulationLevel.None);
// Движок мыши: Ghost = кривые Безье, Native = прямые линии
client.Settings.SetCursorEngine(CursorEngine.Ghost);
// Скорость мыши и набора текста
client.Settings.SetMouseSpeed(70, 95);
client.Settings.SetTypingSpeed(50, 150);
// Процент опечаток при вводе (0-100)
client.Settings.SetMistakeRate(3);</pre>
  <ul id="d99y">
    <li id="user-content-таймауты-и-ожидания">Таймауты и Ожидания</li>
  </ul>
  <pre id="RvpN" data-lang="clike">/* Глобальный таймаут ждала появления элементов (сек)
Если не указать в методе, то будет использоватся именно это значение
client.MouseRise(&quot;//button&quot;);
*/
client.Settings.SetWaitElementTimeout(15.0);
// Что считать &quot;загруженной страницей&quot; для действий навигации
client.Settings.SetWaitUntilState(WaitUntilState.NetworkIdle);
// Нужное состояние элемента перед взаимодействием
client.Settings.SetState(ElementState.Visible); // Элемент должен быть виден
client.Settings.SetState(ElementState.Attached); // Просто в DOM
// Таймаут бездействия сессии (0 = откл)
client.Settings.SetIdleTimeout(300); //Если сессия не активна болеее 300 сек, то она будет закрыта</pre>
  <ul id="3Enc">
    <li id="user-content-мобильные-устройства">Мобильные устройства</li>
  </ul>
  <pre id="qM8I" data-lang="clike">// Переключение между Desktop и Mobile
client.Settings.SelectDevice(DeviceType.Mobile);
// Свайпы пальцем вместо колесика мыши
client.Settings.SetMobileSwipesEnabled(true);</pre>
  <ul id="Jvqp">
    <li id="user-content-вспомогательные">Вспомогательные</li>
  </ul>
  <pre id="qxPK" data-lang="clike">// Логирование в консоль WraithCore.exe
client.Settings.SetLogging(true);
// Шаг прокрутки колесика (пиксели)
client.Settings.SetMouseWheelStepSize(100);
// Показать/скрыть красный отладочный курсор на странице
client.Settings.EnablesCursorVisibility();
client.Settings.DisablesCursorVisibility();
// Получить все настройки в JSON
string json = client.Settings.Get();
// Массовое обновление через анонимный объект
client.Settings.Update(new { device_type = &quot;mobile&quot;, mistake_rate = 5 });</pre>

]]></content:encoded></item><item><guid isPermaLink="true">https://teletype.in/@midaw007/0LhmpHX5ewh</guid><link>https://teletype.in/@midaw007/0LhmpHX5ewh?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=midaw007</link><comments>https://teletype.in/@midaw007/0LhmpHX5ewh?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=midaw007#comments</comments><dc:creator>midaw007</dc:creator><title>Обновления InfiniteServer.exe</title><pubDate>Mon, 09 Dec 2024 09:22:01 GMT</pubDate><description><![CDATA[Version 1.9.8.1 
1) Улучшен метод поиска элементов
2)Исправленно время ожидания элементов (погрешность 1-2 сек в большую сторону)
3) После запуска браузера при закрытии InfiniteServer.exe автоматически закроет соединение в течении 10 сек
4) Ускорено время проверки лицензии
5) Импортированы менеджеры для управления антидетектами: Octo, IxBrowser, AdsPower (Создание профилей, удаление профилей, получения списка профилей, обновление прокси)
6) Немного оптимизирован и ускорен код]]></description><content:encoded><![CDATA[
  <section style="background-color:hsl(hsl(236, 74%, var(--autocolor-background-lightness, 95%)), 85%, 85%);">
    <p id="hakx"><strong>Version 1.9.8.1 </strong><br />1) Улучшен метод поиска элементов<br />2)Исправленно время ожидания элементов (погрешность 1-2 сек в большую сторону)<br />3) После запуска браузера при закрытии InfiniteServer.exe автоматически закроет соединение в течении 10 сек<br />4) Ускорено время проверки лицензии<br />5) Импортированы менеджеры для управления антидетектами: Octo, IxBrowser, AdsPower (Создание профилей, удаление профилей, получения списка профилей, обновление прокси)<br />6) Немного оптимизирован и ускорен код<br />7) Обновлен тестовый шаблон Infinite_Test.zp</p>
  </section>

]]></content:encoded></item><item><guid isPermaLink="true">https://teletype.in/@midaw007/InfiniteServerHelp</guid><link>https://teletype.in/@midaw007/InfiniteServerHelp?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=midaw007</link><comments>https://teletype.in/@midaw007/InfiniteServerHelp?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=midaw007#comments</comments><dc:creator>midaw007</dc:creator><title>InfiniteServer</title><pubDate>Sun, 01 Dec 2024 07:57:01 GMT</pubDate><media:content medium="image" url="https://img2.teletype.in/files/5a/dd/5adde28e-8535-4b7d-ac34-6c0e037707bb.png"></media:content><description><![CDATA[InfiniteServer.exe – это консольное приложение, созданное для автоматизации &quot;антидетект браузеров&quot; с помощью программы ZennoPoster(взаимодействие происходит по принципу клиент-сервер, где клиент это Zennoposer, который отправляет команду и ждет ответ, а InfiniteServer.exe - сервер, который ждет команду, выполняет ее и отправляет ответ обратно клиенту, то есть в ZennoPoster)]]></description><content:encoded><![CDATA[
  <section style="background-color:hsl(hsl(236, 74%, var(--autocolor-background-lightness, 95%)), 85%, 85%);">
    <h2 id="r9Qj" data-align="center">Что такое InfiniteServer?</h2>
  </section>
  <p id="mnaZ"><strong>InfiniteServer.exe</strong> – это консольное приложение, созданное для автоматизации &quot;антидетект браузеров&quot; с помощью программы ZennoPoster(взаимодействие происходит по принципу клиент-сервер, где клиент это Zennoposer, который отправляет команду и ждет ответ, а InfiniteServer.exe - сервер, который ждет команду, выполняет ее и отправляет ответ обратно клиенту, то есть в ZennoPoster) </p>
  <section style="background-color:hsl(hsl(236, 74%, var(--autocolor-background-lightness, 95%)), 85%, 85%);">
    <h2 id="FY38" data-align="center">Что мне нужно чтобы начать работу?</h2>
  </section>
  <h2 id="gQTq"><strong>1) Убедиться в том, что оно вам действительно надо... </strong></h2>
  <p id="RkRz">Данное решение рассчитано для людей имеющих базовые представление об автоматизации и о том, что такое ZennoPoster и с чем его едят. InfiniteServer не является панацеей для всех ваших задач и проблем, и это не дает вам гарантию того, что вы сразу же побежите регистрировать гугл аккаунты тысячами или ваши аккаунты никогда не будут блокировать. </p>
  <p id="hfxE">Всё взаимодействие с браузером происходит исключительно с помощью C# кода, хоть практически все нужные вам действия уже прописаны в тестовом шаблоне вам все равно придется чему-то <strong>УЧИТЬСЯ</strong>, как минимум вам нужно понимать отличие <u>string</u> от <u>int,</u> как работать с XPath либо CSS, понимать что такое API и уметь разбираться в документации. </p>
  <p id="fdyA">И да, <u>мы не заявляем</u>, что наше решение является САМЫМ лучшим на рынке, аналогов которому нет и так далее по тексту... У нас тоже есть баги, есть к чему придраться, есть много моментов которые лично меня как разработчика не устраивают, любую критику, жалобы и предложения с удовольствием примем и постараемся что-то улучшить или исправить) Так же если вам не хватает какой либо функции, или вы считаете что она необходима, так же с радостью выслушаем ваши предложения. </p>
  <p id="ia31">Если вы готовы принять написанную информацию выше, то переходите к пункту номер 2</p>
  <h2 id="tbM9"><strong>2) Оплатить или активировать бесплатную версию</strong></h2>
  <p id="HYUK">Цена InfiniteServer 30$/месяц, так же вы можете использовать бесплатную(trial) версию <u>на 7 дней</u> (без ограничения функционала)<br />Для выписки лицензии обращаться: <a href="https://t.me/Midaw007" target="_blank">Midaw007</a> или <a href="https://t.me/XAPOHbI4" target="_blank">XAPOHbI4</a></p>
  <section style="background-color:hsl(hsl(55,  86%, var(--autocolor-background-lightness, 95%)), 85%, 85%);">
    <p id="qcOC" data-align="center"><strong>ОБЯЗАТЕЛЬНО СВЕРЯЙТЕ КОНТАКТЫ ПРИ ОПЛАТЕ</strong></p>
  </section>
  <p id="JC3F">Для активации лицензии нужен ваш <strong>zenno id</strong>, что бы его получить есть 2 варианта:</p>
  <p id="1HHA"><strong>1. Получить через ProjectMaker</strong><br />Для этого в ProjectMaker нужно в окне переменных найти вкладку &quot;Окружение&quot;, в этом окне взять значение переменной &quot;Environment.CurrentUser&quot; это и есть ваш zenno id</p>
  <figure id="GQk6" class="m_original">
    <img src="https://img4.teletype.in/files/f3/12/f312b6f4-1d2b-4e43-abcb-e79ac7d8a9ac.png" width="618" />
  </figure>
  <p id="n5Sw"><strong>2 .Получить через личный кабинет ZennoLab</strong></p>
  <p id="0MOl">Личный кабинет =&gt; Клик по иконке профиля =&gt; Настройки профиля =&gt; Скопировать ID</p>
  <figure id="K4Kv" class="m_custom">
    <img src="https://img3.teletype.in/files/e0/87/e087252a-d70e-4dad-98ad-ca5698641fdf.png" width="606.8326996197718" />
  </figure>
  <figure id="esZe" class="m_custom">
    <img src="https://img1.teletype.in/files/81/6f/816fe6c9-9777-49f4-8e59-124362193f89.png" width="594" />
  </figure>
  <h2 id="GVmE"><strong>3) Проверить версию .NET</strong></h2>
  <p id="qzLC">InfiniteServer.exe работает на версии .NET8, перед началом работы вам нужно убедится в том, что на вашем устройстве установлены все подходящие компоненты. Проверить это достаточно просто, для этого нужно отрыть командную строку (cmd) и выполнить команду указанную ниже: </p>
  <pre id="Nrum">dotnet --version</pre>
  <figure id="OBT3" class="m_custom" data-caption-align="center">
    <img src="https://img1.teletype.in/files/cc/52/cc52cc83-c415-4c97-b891-443e56eddcb1.png" width="732" />
    <figcaption><strong>Ввод команды для проверки версии .NET</strong></figcaption>
  </figure>
  <p id="DJLV">Далее нажимаем &quot;Enter&quot; и получаем ответ:</p>
  <figure id="90eS" class="m_custom" data-caption-align="center">
    <img src="https://img4.teletype.in/files/b8/78/b878c9df-54a7-43e3-9e64-5604067bbda7.png" width="702" />
    <figcaption>Положительный результат</figcaption>
  </figure>
  <p id="gUyr">Если вы получится ответ с установленной версий<u> 8.0 и выше</u>, то можете сразу переходить к шагу <strong>номер 4</strong></p>
  <section style="background-color:hsl(hsl(34,  84%, var(--autocolor-background-lightness, 95%)), 85%, 85%);">
    <p id="Rb5m">Если ваш ответ что-то похожее на &quot;dotnet не является внутренней или внешней командой...&quot; или ваша версия .NET ниже 8, то перейдите на <a href="https://dotnet.microsoft.com/ru-ru/download/dotnet/8.0" target="_blank">официальный сайт Microsoft</a> для загрузки установщика нужной версии</p>
  </section>
  <figure id="Q4Nj" class="m_custom">
    <img src="https://img1.teletype.in/files/02/d4/02d4cf7f-eecb-418c-ac4a-9a655afd5912.png" width="707" />
  </figure>
  <p id="s7Sp">Далее выполните установку, закройте консоль(cmd) и выполните шаг номер 3 снова</p>
  <p id="4Ufp"></p>
  <h2 id="NAP4">4) Скачайте архив с проектом и разархивируйте</h2>
  <h3 id="0U7b">Архив можно скачать в нашем телеграмм канале <a href="https://t.me/infinite_script/129" target="_blank">СКАЧАТЬ</a></h3>
  <figure id="AeVC" class="m_original">
    <img src="https://img1.teletype.in/files/0b/6a/0b6a525c-b491-4d85-a7ab-e08dbb786c22.png" width="259" />
  </figure>
  <p id="X2Lb">В архиве вы найдете несколько директорий и файлов:</p>
  <ol id="EQcr">
    <li id="UvAI"> Директория InfiniteServer – в ней хранится нужный нам для запуска InfiniteServer.exe и все нужные для него компоненты</li>
    <li id="EuiL"> Директория Infinite_Test – в ней находиться тестовый шаблон с примерами кода и пояснениями, так же в директории находится файл &quot;MetaMask.png&quot;, который используется для примера загрузки файла на сайт</li>
    <li id="bFMV">InfiniteClient.dll – C# библиотека для взаимодействия с InfiniteServer.exe с помощью ZennoPoster</li>
    <li id="OK9j">InfiniteClient.xml – XML документация для InfiniteClient.dll, нужна для всплывающих подсказок при написании кода </li>
    <li id="zb8J">1.9.7.19.txt – дублирующийся текстовый файл для просмотра версии  </li>
  </ol>
  <figure id="Il2l" class="m_original" data-caption-align="center">
    <img src="https://img4.teletype.in/files/71/40/71403f0d-d914-48e8-a58e-f4b27a8085b6.png" width="700" />
    <figcaption>InfiniteClient.xml</figcaption>
  </figure>
  <h2 id="PEV4">5) Добавить необходимые компоненты в рабочую папку ZennoPoster</h2>
  <p id="iDWx"></p>
  <h3 id="dcA2">1. Откройте папку в которую вы установили ZennoPoster<br /></h3>
  <figure id="zNNa" class="m_original">
    <img src="https://img1.teletype.in/files/ca/90/ca900476-65db-4a0f-ad2e-8db3a82f0b14.png" width="506" />
  </figure>
  <h3 id="nXcV">2. Перейдите в директорию ExternalAssemblies</h3>
  <figure id="RPnE" class="m_original">
    <img src="https://img2.teletype.in/files/12/94/12943f4e-0399-4876-a613-6bb8a410e8da.png" width="534" />
  </figure>
  <h3 id="2Rit">3. Перейдите в директорию ExternalAssemblies</h3>
  <p id="4GNj">После перехода в директорию ExternalAssemblies, переместите в нее 2 файла (InfiniteClient.dll и InfiniteClient.xml)<br /></p>
  <figure id="az33" class="m_original">
    <img src="https://img3.teletype.in/files/a1/9e/a19eec96-62aa-496c-b28c-9d76c703e7b1.png" width="459" />
  </figure>
  <h2 id="KHo0">6) Почти все готово!!!</h2>
  <p id="ycta">Если вы все сделали правильно, то теперь вам нужно открыть тестовый шаблон Infinite_Test.zp, который находится в директории Infinite_Test и выполнить первый кубик(экшен)</p>
  <section style="background-color:hsl(hsl(236, 74%, var(--autocolor-background-lightness, 95%)), 85%, 85%);">
    <p id="S9zF"><strong>Если у вас не посыпались ошибки, то настройка выполнена правильно и вы можете начинать писать свои проекты</strong></p>
  </section>
  <section style="background-color:hsl(hsl(55,  86%, var(--autocolor-background-lightness, 95%)), 85%, 85%);">
    <p id="zOzA">Далее для написания будущих шаблонов дабы не морочиться с добавлением ссылок из GAC и не прописывать using и общий код, рекомендую просто копировать проект  Infinite_Test, переименовать его, удалить лишние кубики и продолжить работу</p>
  </section>
  <p id="VRJf"></p>
  <section style="background-color:hsl(hsl(323, 50%, var(--autocolor-background-lightness, 95%)), 85%, 85%);">
    <h2 id="xstX" data-align="center">Ниже в этой статье будет информация для тех, кто немного хочет вникнуть в то, как пользоваться данным решением, к прочтению рекомендовано, но не обязательно</h2>
  </section>
  <p id="vlpd"></p>
  <p id="6UNw"><strong>1) Для начала нам нужно создать экземпляр класса Client и сохранить его &quot;в память&quot; зенопостера.</strong> Это делается для того, что бы мы могли обращаться к этому объекту в других кубиках. </p>
  <figure id="H1e3" class="m_custom">
    <img src="https://img3.teletype.in/files/28/d5/28d52178-21dd-46ae-8454-00ae184af500.png" width="922.8461538461538" />
  </figure>
  <p id="RC52">Далее в каждом последующем кубике для работы с нашим объектом его нужно &quot;доставать из памяти&quot; с помощью строки:</p>
  <section style="background-color:hsl(hsl(24,  24%, var(--autocolor-background-lightness, 95%)), 85%, 85%);">
    <p id="Rswc"><code>InfiniteClient.Client client = project.Context[&quot;client&quot;] as InfiniteClient.Client;</code></p>
  </section>
  <p id="TdNe"><strong>2) Открываем соединение.</strong> В этот момент происходит запуск InfiniteServer.exe (по умолчанию в фоновом режиме) и создания соединения с ZennoPoster. <u>Обязательно </u>указать путь к InfiniteServer.exe в переменную (в моем случае имя переменной &quot;pathToExe&quot;), пример пути выглядит так:<br />C:\Users\user\Desktop\InfiniteSever\InfiniteServer.exe</p>
  <figure id="owwY" class="m_original">
    <img src="https://img1.teletype.in/files/0d/0b/0d0b29f6-5522-4000-aa52-c83024cc5237.png" width="1177" />
  </figure>
  <p id="Rl24"></p>
  <p id="wpEg"><strong>3) Запуск браузера.</strong> После успешного запуска InfiniteServer.exe мы можем приступить к запуску браузера, в нашем решении есть 4 встроенных браузера для запуска (AdsPower, Dolphin, OctoBrowser, IxBrowser), все эти браузеры запускаются через метод LaunchBrowser(BrowserType.НАЗВАНИЕ_АНТИКА, ID_ПРОФИЛЯ). Этот метод принимает 2 либо 3 параметра, 1й- тип браузера, 2-й ID профиля (ВАЖНО, именно ID профиля, не его имя или порядковый номер, узнать как найти ID нужного антика можно <a href="https://telegra.ph/Poisk-ID-v-antidetekt-brauzerah-11-17" target="_blank">ТУТ</a>) и 3-й, но не обязательный параметр это аргументы браузер (кубик 3.1), он принимает в себя массив строк пример:<br /><br />БЕЗ АРГУМЕНТОВ:</p>
  <section style="background-color:hsl(hsl(0,   0%,  var(--autocolor-background-lightness, 95%)), 85%, 85%);">
    <p id="18Xa"><code>var idProfile = project.Variables[&quot;idProfile&quot;].Value;<br />client.LaunchBrowser(BrowserType.IxBrowser, idProfile);</code></p>
  </section>
  <p id="3A4G">С АРГУМЕНТАМИ:</p>
  <section style="background-color:hsl(hsl(0,   0%,  var(--autocolor-background-lightness, 95%)), 85%, 85%);">
    <p id="K04r"><code>var idProfile = project.Variables[&quot;idProfile&quot;].Value;<br />var args = new string[] {&quot;--window-size=1980,796&quot;, &quot;--blink-settings=imagesEnabled=false&quot;};<br />client.LaunchBrowser(BrowserType.IxBrowser, idProfile, args);</code></p>
  </section>
  <figure id="ynRa" class="m_custom">
    <img src="https://img2.teletype.in/files/1d/dd/1ddd83eb-23cf-47fd-8c4f-3ca1071cd8fd.png" width="1139" />
  </figure>
  <p id="KM9j">Так же можно подключится к любому другому НЕ ВСТРОЕМУ антику с помощью CDP соединения (http/wss) для этого используем метод <code>ConnectToBrowser()</code>:</p>
  <p id="ecTY"><code>client.ConnectToBrowser(&quot;ws://localhost:9222/devtools/page/DAB7FB6187B554E10B0BD18821265734&quot;);</code></p>
  <p id="32Oz">Точку подключения можно получить из ответа при запуске браузера по API</p>
  <p id="S6Wi"><strong>3) Активируем вкладку для работы.  </strong>На данный момент я не смог придумать механизм автоматической активации нужной вкладки, и в принципе считаю это лишним, так как такие попытки были приняты в плагине &quot;AntyZenno&quot; что привело к дополнительным не удобствам. Поэтому после запуска браузера я обычно получаю количество вкладок и закрываю все, кроме 1, даты скрипты не путались во вкладках, далее активирую первую вкладку и продолжаю работу (кубик номер 4)</p>
  <figure id="YyHy" class="m_original">
    <img src="https://img2.teletype.in/files/9d/39/9d397992-94a1-4b4a-b6c7-de73bbb13254.png" width="1410" />
  </figure>
  <p id="kxVN"><strong>4) Пишем свой проект дальше. </strong>На этом этапе, стандартная настройка и запуск браузера выполнены, далее вы просто можете взять уже написанные мною кубики и заменить в них данные на свои или же написать свой код</p>
  <figure id="Xtjo" class="m_original">
    <img src="https://img1.teletype.in/files/8a/ab/8aabc810-abae-4fdb-99e2-3bb59b5361a5.png" width="939" />
  </figure>
  <p id="7PQy">БЛОК 1: Дополнительные настройки.</p>
  <p id="4iPf">БЛОК 2: Готовые кубики с кликами, вводом текста, парсингом, работай с вкладками, загрузкой и скачиванием файлов и так далее. </p>
  <p id="6yJL">В будущем к-во действий планируется расширить</p>
  <p id="aU3H"></p>
  <p id="WKUr"><strong>5) Закрываем браузер и соединение. </strong>Дабы экономить ресурсы вашего устройства после отработки скрипта или же при выходе по GoodEnd или BadEnd рекомендую выполнять закрытие браузера и закрытие соединения, что бы на фоне не висела лишняя нагрузка </p>
  <figure id="xE16" class="m_original">
    <img src="https://img3.teletype.in/files/64/be/64be1c53-640b-4a07-8d23-305dc0862a64.png" width="1503" />
  </figure>
  <section style="background-color:hsl(hsl(55,  86%, var(--autocolor-background-lightness, 95%)), 85%, 85%);">
    <p id="qzhC"><strong>ВАЖНО!!!</strong> Данное решение <strong>не работает с  внутренним браузером ZennoPoster</strong> (но при необходимости можно работать одновременно и со встроенным браузером и с антидетект браузером), действия выполняемые кубиками (экшенами) такие как: <u>клик, ввод текста, работа с вкладками, переход по ссылкам, парсинг и т.д.</u> не будут работать в антидетект браузере (см. рис. 1)</p>
    <figure id="x8BG" class="m_original" data-caption-align="center">
      <img src="https://img4.teletype.in/files/32/e1/32e1b7dc-64a0-4e9c-b906-9241efb8cbe7.png" width="583" />
      <figcaption><strong>рис. 1</strong></figcaption>
    </figure>
  </section>
  <p id="e9Ek">Но это не запрещает вам использовать такие кубики как: обработка текста, работа со списками и таблицами, логика, http запросы, работа с директориями, работа с базами данных и так далее</p>
  <section style="background-color:hsl(hsl(170, 33%, var(--autocolor-background-lightness, 95%)), 85%, 85%);">
    <figure id="H9RF" class="m_original">
      <img src="https://img3.teletype.in/files/2e/cf/2ecf155f-5534-4924-ac42-bd2a4e8f3b99.png" width="551" />
    </figure>
  </section>

]]></content:encoded></item></channel></rss>