Методы расширения

Методы расширения по типу, который они расширяют. В C#-кубике ZennoPoster project — это IZennoPosterProjectModel, instance — Instance.

Для IZennoPosterProjectModel

Описание
AddRange Вставляет строки с id от текущего максимума + 1 до range порциями по 500.
Age Возраст сессии: время, прошедшее с момента в Unix-миллисекундах, сохранённого в var.
AnalyzeCookies Читает сохранённые куки текущего аккаунта и сводит их.
Bool Возвращает true, если переменная проекта в точности равна True.
BuildZpFromXml Собирает файл .zp из XML проекта; контейнером служит файл текущего проекта.
CatchErrorFromTraffic После паузы находит в трафике основного домена запрос к url и проверяет его JSON-ответ.
ChooseAccountByCondition Выбирает аккаунт и сохраняет его в acc0; кандидаты остаются в списке accs, а строке аккаунта ставится status = 'working...'.
ChooseAndRunByCondition Выбирает аккаунт (ChooseAccountByCondition) и запускает для него браузер (RunBrowser).
CleanDomainInDb Удаляет из сохранённого набора текущего аккаунта куки домена (а для кук, сохранённых с точкой в начале, — и его поддоменов).
ClmnAdd Добавляет колонку, если её нет в таблице.
ClmnDrop Удаляет колонку, если она есть (на PostgreSQL с CASCADE).
ClmnExist Проверяет, есть ли колонка.
ClmnList Имена колонок таблицы.
ClmnPrune Удаляет все колонки, кроме id, в которых ни в одной строке нет непустого значения.
ClmnRearrange Переставляет колонки: сначала id, затем существующие колонки из tableStructure, затем остальные.
CollectAndSave Записывает по строке на каждый работающий процесс ZennoPoster и zbe1 этой машины (id `{pid}
DbClearLine Записывает пустую строку во все колонки одной строки, кроме id.
DbDone Записывает метку кулдауна (Time.Cd, ISO UTC) в колонку task строки текущего аккаунта (или строки, выбранной key/acc, или строк, подходящих под where): конец сегодняшнего дня или текущий момент плюс cooldownMin.
DbGet Читает колонки одной строки; то же, что SqlGet.
DbGetColumns Читает колонки одной строки в виде колонка → значение.
DbGetLine Читает колонки одной строки в виде массива.
DbGetLines Читает несколько строк; в каждом элементе колонки соединены через ¦.
DbGetRandom Читает toGet из случайных строк, где оно не пустое, а id меньше range.
DbInsert Вставляет одну строку.
DbKey Читает ключ текущего аккаунта из таблицы кошельков (DbSchema.Wlt) и расшифровывает его через SAFU.Decode.
DbQ Выполняет один SQL-запрос к базе, заданной dbSource (переменная проекта, иначе глобальная переменная).
DbSwapLines Меняет местами значения всех колонок, кроме id, у двух строк.
DbToJson Восстанавливает JSON, сохранённый JsonToDb с saveStructure, из строки текущего аккаунта.
DbToVars Читает колонки одной строки и для каждой задаёт переменную проекта с тем же именем.
DbUpd Выполняет UPDATE … SET toUpd для строки текущего аккаунта или для строк, подходящих под where.
Deadline Дедлайн на два вызова по переменной t0.
Decimal Возвращает переменную проекта, разобранную как decimal (текущая культура), или 0, если разобрать не удалось.
DELETE Отправляет DELETE-запрос новым Rqst; log заодно включает его логирование.
DicToDb Записывает словарь в строку текущего аккаунта (или в строки, подходящие под where), сначала добавив недостающие колонки.
EnsureProcessTable Создаёт таблицу _processes, если её нет.
EnsureTable Создаёт таблицу, описанную в schema, если её нет.
Finish Завершает сессию аккаунта: Disposer.FinishSession.
FixTime Запускает BrowserScan.FixTime; ошибка пишется в лог как предупреждение и не останавливает проект.
FullPath Возвращает полный путь к файлу проекта.
GClean Очищает глобальные переменные acc1 … acc{rangeEnd}.
GenerateNative Пишет таблицу балансов заданных сетей (Accountant.ShowBalanceTable с добавлением id).
GET Отправляет GET-запрос новым Rqst; log заодно включает его логирование.
GetAllMachines Уникальные имена машин из таблицы _processes.
GetValuesByProperty Читает значения свойств текстом, одинарные кавычки удваиваются.
GGetBusyList Перечисляет аккаунты, занятые работающими потоками: все непустые глобальные переменные acc1 … acc{rangeEnd}.
GSetAcc Помечает текущий аккаунт (acc0) занятым: записывает input в глобальную переменную acc{acc0}.
GVar Возвращает глобальную переменную или пустую строку, если её нет.
Help Открывает окно просмотра API с поиском.
HWPass Возвращает детерминированный пароль текущего аккаунта (acc0), используя PIN из защищённой переменной cfgPin.
ImproveBrowser Применяет профиль браузера под точку выхода прокси и проверяет результат.
InitVariables Выполняет Init.InitVariables, затем запускает встроенный сервер (StartZpServer).
Int Возвращает переменную проекта, разобранную как int, или 0, если она пустая или не число.
JsonToDb Разворачивает JSON-объект в колонки (вложенные ключи соединяются через _) и записывает их через DicToDb.
KillByUptime Убивает процессы zbe1, работающие дольше maxUptimeMinutes, и, если кого-то убил, обновляет таблицу.
ListFromFile Заменяет содержимое списка ZennoPoster строками файла.
ListSync Копирует список ZennoPoster в новый List<string>.
log Пишет сообщение в лог проекта через Logger по умолчанию.
MaxErr Счётчик ошибок для циклов с повтором.
MigrateAllTables Копирует все пользовательские таблицы из текущей базы в базу другого вида: PostgreSQL → SQLite или SQLite → PostgreSQL (см.
MigrateTable Копирует source в новую таблицу dest в той же базе, затем переименовывает колонку acc0 или key в id, если такая есть.
NetGet Отправляет GET-запрос через NetHttp без логирования.
NetPost Отправляет POST-запрос с телом в JSON через NetHttp без логирования.
OtpCode Одноразовый код из источника: для адреса (содержит @) — код из последнего письма FirstMail; иначе source считается секретом TOTP, и текущий код вычисляется локально.
PathCookies Возвращает {profiles}/accounts/cookies/{acc0}.json или пустую строку с предупреждением, если acc0 пуст.
PathProfileFolder Возвращает {profiles}/accounts/profilesFolder/{acc0} или пустую строку с предупреждением, если acc0 пуст.
PathProfiles Возвращает корень хранилища профилей: переменная profiles_folder, иначе глобальная переменная с тем же именем.
POST Отправляет POST-запрос новым Rqst; log заодно включает его логирование.
PrepareProjectTable Вариант PrepareProjectTable(List<string>, …) для массива.
PrepareSession Загружает куки аккаунта (instance.GetCookies), ставит в профиль email {NickName}@outlook.com и случайный пароль из 12 символов, включает мониторинг трафика, ставит окно 1280×720, сохраняет Time.Now() в ts0 и запускает ImproveBrowser.
PrintCookieReport Пишет в лог сводку AnalyzeCookies (10 главных доменов, 5 самых больших кук).
ProjectName Возвращает имя файла проекта до первой точки и сохраняет его в projectName.
ProjectTable Возвращает __ + имя проекта и сохраняет его в projectTable.
ProxySet Проверяет прокси и применяет его к инстансу: сравнивает IP, который видят публичные echo-сервисы напрямую и через прокси, и ставит прокси только если они различаются.
PruneAllCookies Выполняет PruneCookies для таблиц _instance и folder_profile по каждому аккаунту от rangeStart до rangeEnd, затем очищает acc0.
PruneCookies Удаляет куки из сохранённого набора текущего аккаунта и записывает его обратно в виде JSON в Base64.
PUT Отправляет PUT-запрос новым Rqst; log заодно включает его логирование.
QuantityByCondition Считает аккаунты, подходящие под условие, по всем группам диапазона, после фильтров по соцсетям.
Range Разбирает диапазон аккаунтов и сохраняет его в rangeStart, rangeEnd и range (список через запятую).
ReadEnv Возвращает значение key из файла .env или null, если нет файла или ключа.
ReportError Пишет отчёт об ошибке (Reporter.ReportError).
ReportSuccess Пишет отчёт об успехе (Reporter.ReportSuccess).
RndDecimal Читает переменную проекта как десятичное число; значение вида 0.1-0.5 даёт случайное число в этом диапазоне.
RndFromList Возвращает случайную строку списка ZennoPoster.
RndInt Читает переменную проекта как целое число; значение вида 10-20 даёт случайное целое от 10 (включительно) до 20 (не включая).
RndInvite Возвращает переменную cfgRefCode; если она пуста, берёт случайное непустое значение inviteColumn из таблицы проекта и сохраняет его в cfgRefCode.
RndProfileData Задаёт случайные данные профиля.
RunBrowser Запускает браузер для текущего аккаунта (InstanceManager.Initialize) и ставит state = 'busy' в _instance.
RunZp Запускает проект, путь к которому лежит в переменной projectScript, через ExecuteProject.
SaveAllCookies Записывает все куки инстанса в Base64 в колонку cookies строки текущего аккаунта.
SaveAsXml Распаковывает текущий проект в XML (UTF-16).
SaveDebugScreenshot Сохраняет скриншот инстанса в {project.Path}/debug_screens/{yyyy-MM-dd}/{project.Name}/{actionId} - {unix ms}.png с текстовой плашкой в левом верхнем углу (Iosevka 15 pt, белым по тёмному).
SaveDomainCookies Записывает куки инстанса одного домена в Base64 в колонку cookies строки текущего аккаунта.
SaveProfile Выгружает свойства профиля и инстанса, настройки WebGL и куки (Base64) в {project.Directory}/profiles/zenno_profile_{yyyyMMdd_HHmmss}_{id}.json.
SaveSuccessHar Сохраняет трафик браузера в {project.Path}/har/{yyyy-MM-dd}/{result}/{project.Name}/{unix ms}.har.
SearchInZp Ищет текст в действиях всех файлов .zp в папке (без учёта регистра, в атрибутах и значениях; XML-сущности при сравнении декодируются).
SecureVar Читает значение из зашифрованной переменной jVars: расшифровывает через SAFU.DecryptHWID, декодирует Base64 и ищет ключ в получившемся JSON-объекте.
SetValuesFromDb Задаёт записываемые свойства объекта из строки базы, приводя текст к типу свойства.
SpoofGpu Берёт случайный профиль WebGL (JSON в Base64, по одному на строку) из {project.Path}/resourses/webgl.txt, заменяет в нём unmasked vendor и renderer на RandomAngleString (список GPU кешируется в resourses/gpu.json), сохраняет в webgl и загружает в инстанс.
SqlGet Выбирает колонки из строки, где key = id, или из строк, подходящих под where.
SqlGetArrFromLine То же, что SqlGet, с разбивкой на значения колонок.
SqlGetDicFromLine То же, что SqlGet, но возвращает первую строку в виде колонка → значение.
SqlGetListFromLines То же, что SqlGet, с разбивкой на строки.
SqlUpd Выполняет UPDATE … SET toUpd для строки, где key = id, или для строк, подходящих под where.
StartSession Ждёт случайные 0–1 с и сохраняет текущие Unix-миллисекунды в varSessionId.
StartZpServer Загружает токен доступа, берёт первый свободный порт начиная с port (пробует до 20) и запускает сервер в фоновом потоке.
StopZpServer Останавливает сервер.
TblAdd Создаёт таблицу, если её нет.
TblColumns Имена колонок таблицы.
TblExist Проверяет, есть ли таблица.
TblForProject Строит раскладку таблицы: id INTEGER PRIMARY KEY AUTOINCREMENT, заданные колонки и по колонке на каждый элемент переменной cfgToDo (через запятую).
TblList Имена всех таблиц по алфавиту.
TblPrepareDefault Создаёт таблицу проекта (переменная projectTable) с раскладкой TblForProject и добавляет недостающие колонки.
TimeElapsed Секунды, прошедшие с момента, сохранённого (в Unix-миллисекундах) в переменной проекта.
TimeOut Бросает исключение, как только сессия (varSessionId) становится старше min минут.
ToJson Загружает JSON в project.Json.
Var Возвращает значение переменной проекта.
VarAdd Добавляет переменную в проект, открытый в ProjectMaker, через локальный API ZennoPoster (http://localhost:5299).
VarCounter Прибавляет input к целочисленной переменной проекта и сохраняет результат.
VarRnd Читает переменную проекта.
VarsFromDict Задаёт переменную проекта для каждого ключа словаря.
VarsFromJson Задаёт переменные проекта из плоского JSON-объекта со строковыми значениями.
VarsMath Применяет +, -, * или / к двум переменным проекта, разобранным как decimal (инвариантная культура).
warn Пишет предупреждение в лог проекта.
ZB Записывает toDo в переменную toDo и запускает {project.Path}/.internal/ZB.zp, передавая по имени acc0, cfgLog, cfgPin, DBmode, DBpstgrPass, DBpstgrUser, DBsqltPath, instancePort, lastQuery, cookies, varSessionId и toDo.
ZBDbGet Читает колонки query профиля, id которого лежит в переменной zb_id, напрямую из %LOCALAPPDATA%\ZennoLab\ZP8\.zp8\ProfileManagement.db.
ZBIdDic Сопоставляет имена профилей с id по JSON-массиву профилей ZennoBrowser (Name, Id, FolderName); при повторе имени побеждает первый.
ZBIdList Id профилей папки из JSON-массива профилей (см.
ZBids Читает id и name всех профилей ZennoBrowser, кроме template, из таблицы ProfileInfos файла %LOCALAPPDATA%\ZennoLab\ZP8\.zp8\ProfileManagement.db.

Для Instance

Описание
CenterArea Область [x, y, width, height] заданного размера по центру области просмотра.
CenterMouse Отправляет событие mousemove элементу в центре окна.
ClearShit Закрывает все вкладки, очищает кеш и куки domain и открывает about:blank.
ClickCenter Кликает в центр области просмотра; возвращает точку.
ClickImg Находит картинку и кликает в её центр.
CloseExtraTabs Закрывает все вкладки после первых tabToKeep.
CloseNewTab Ждёт, пока число вкладок станет равно tabIndex, и закрывает все, кроме первой.
CtrlV Вставляет текст через буфер обмена Windows (Ctrl+V); прежний текст буфера восстанавливается.
Down Закрывает браузер (запуск «без браузера») и ждёт.
F5 Перезагружает страницу.
FindAllInScreenshot Снимает одно превью страницы (GetPagePreview) и ищет в области все вхождения каждого шаблона.
FindImg Находит картинку в области собственным поиском картинок ZennoPoster.
FindImgFast Снимает одно превью страницы (GetPagePreview) и ищет картинку в области сравнением с шаблоном AForge.
FindMultipleInMultipleAreas Снимает одно превью страницы (GetPagePreview) и ищет каждый шаблон в его собственной области.
FindMultipleInScreenshot Снимает одно превью страницы (GetPagePreview) и ищет в области первое совпадение каждого шаблона.
FixTimezone Открывает browserscan.net, берёт часовой пояс IP из его запроса visitor-IP в трафике и ставит его инстансу как часовой пояс IANA.
GetCenter Центр [x, y] области просмотра страницы (window.innerWidth/innerHeight).
GetCookies Собирает свежие куки с 5–15 случайных популярных сайтов через CookieCollector (user agent и языки профиля, запросы идут напрямую, без прокси инстанса) и загружает их в инстанс.
GetCookies Читает куки инстанса.
GetCookiesByJs Читает document.cookie активной страницы в виде JSON (путь /, без срока действия; куки HttpOnly скриптам не видны).
GetHe Находит элемент в активной вкладке.
Go Переходит активной вкладкой на URL, если она ещё не на нём.
GrabTrafficList Возвращает записанные к этому моменту запросы, URL которых подходит под url.
HeCatch Следит deadline секунд за элементом, который не должен появиться (например, сообщением об ошибке).
HeClick Ждёт элемент и кликает по нему после случайной паузы примерно 1–1,3 с × delay.
HeDragAndDrop Перетаскивает из центра элемента на заданное смещение по человекоподобной траектории: плавный разгон и торможение, лёгкое покачивание по вертикали и, на длинных перемещениях, небольшой перелёт с поправкой.
HeDrop Ждёт элемент и удаляет его со страницы.
HeGet Ждёт элемент и возвращает один из его атрибутов.
HeLongClick Ждёт элемент и удерживает левую кнопку в случайной точке внутри него.
HeMultiClick Кликает по каждому элементу по очереди с настройками HeClick по умолчанию.
HePeakRandom Открывает выпадающий список двумя долгими кликами и нажимает «вниз» случайное число раз.
HeSet Ждёт поле ввода и вводит value после случайной паузы примерно 1,3–2 с × delay.
JsClick Находит элемент по CSS-селектору, в том числе внутри shadow root, прокручивает к нему, ставит фокус и отправляет событие click.
JsGet Вычисляет jsSelector в элемент и возвращает одно из его свойств: любой атрибут или innerText, innerHTML, textContent, value, checked, tagName.
JsPost Выполняет скрипт в активной вкладке.
JsSet Находит элемент по CSS-селектору, кликает и ставит фокус, очищает и печатает value через insertText, затем отправляет input и change.
MousePOsCenter Включает полную эмуляцию мыши и ставит курсор в центр области просмотра.
SaveCookies Возвращает куки инстанса в том виде, в каком их сохраняет SaveCookie (через временный файл).
SaveHar Записывает трафик с момента StartHar в файл HAR.
ScrollDown Прокручивает эмулированным колесом мыши.
SetCookiesByJs Ставит куки домена активной вкладки через document.cookie — на родительский домен, с Secure и сроком в год, если сохранённая дата уже прошла.
SetTimeFromDb Задаёт эмуляцию часового пояса из JSON timezone (timezoneOffset, timezoneName) строки аккаунта в _instance; если его нет, пишет предупреждение.
StartHar Запускает запись HAR через DevTools для этого инстанса.
StopHar Останавливает запись HAR для этого инстанса.
SwipeFromCenter Делает свайп от центра области просмотра.
SwipeImgToCenter Находит картинку и делает свайп от неё к центру области просмотра.
TapCenter Тапает в центр области просмотра; возвращает точку.
TapImg Находит картинку и тапает в её центр (событие касания).
UpEmpty Запускает Chromium без папки профиля.
UpFromFolder Запускает браузер с папкой профиля.

Для string

Описание
CleanFilePath Удаляет символы, недопустимые в именах файлов.
ConvertUrl Показывает параметры запроса из URL, по одному на строку.
EscapeMarkdown Экранирует обратной косой чертой спецсимволы Telegram MarkdownV2.
FromBase64 Декодирует Base64 в UTF-8; для пустого входа — пусто; если вход не Base64, возвращает его без изменений.
HexToString Переводит hex-число (с 0x или без) в десятичный текст, при необходимости уменьшая масштаб.
JsonToDic Разворачивает JSON-объект: вложенные ключи соединяются через _, элементы массивов получают свой индекс (a_b_0).
ParseJwt Декодирует JWT без проверки подписи.
Range Разворачивает диапазон аккаунтов: 1,4,7 как есть, 1-10 — в каждое число, одно число n — в 1…n.
StringToHex Переводит десятичное число в hex-строку с 0x, при необходимости сначала масштабируя его.
ToBase64 Текст в Base64 (UTF-8); для пустого входа — пусто.

Для HtmlElement

Описание
Center Центр элемента относительно origin (по размеру bounding client rect, если он известен, иначе по размеру элемента).
DecodeQr Отрисовывает элемент и распознаёт QR-код с картинки (ZXing).
GetXPath Строит XPath элемента, поднимаясь до body.

Для Dictionary<string, string>

Описание
DicToVars Задаёт переменную проекта для каждого ключа словаря.

Для IList

Описание
Rnd Возвращает случайный элемент.

Для int

Описание
RndBool true с заданной вероятностью в процентах.