1 место Профили: особенности генерации, проверки, загрузки

LaGir

Client
Регистрация
01.10.2015
Сообщения
227
Благодарностей
927
Баллы
93
Приветствую всех! :-)

В этой статье мы рассмотрим создание профилей для своих проектов, особенности их генерации, проверки, загрузки. Также в статью включены пара полезных сниппетов по этой теме.
Статья рассчитана на «новичков» и «середнячков» в ZennoPoster.


Кратко и под спойлером о том, что такое профили для самых новичков.
Профиль представляет собой виртальную личность-пользователя и параметры его браузера, работу которого эмулирует ZennoPoster.

К личности относятся такие данные, как логин, пароль, имя, фамилия, возраст и т.п., к параметрам браузера - UserAgent, парметры экрана, отпечатки браузера, куки, прокси и т.п.

С каждым запуском шаблона в ZennoPoster, а также просто с простым запуском ProjectMaker, программа генерирует случайный профиль, который применяется к виртальному браузеру (инстансу).

Профиль можно сохранить в файл соответствующим кубиком, в результате чего на диске появится файл с расширением ".zpprofile", в котором будут храниться все данные виртальной личности и её параметров браузера.

Так как в файле профиля хранятся кэш, куки, различные хранилища сайтов - сайты "узнают" конкретный профиль, который вы загрузили из файла и использовали до этого. Это позволяет, например, не залогиниваться заново на сайтах, на которых шаблон залогинивался с этим профилем в прошлые запуски.

Иными словами, загрузка/сохранение профиля работают по тому же принципу, как и Ваш обычный браузер - т.е. хранит данные, где вы залогинены, на какие сайты заходили и т.п. Тем самым система профилей позволяет эффективно эмулировать реальных пользователей в ZennoPoster.



Долгое время ZennoPoster имел "базовую" реализацию профилей, в которой учитывались самые основные параметры и настройки виртуального браузера. Интернет не стоит на месте, и сайты обзаводятся всё более и более мощными отслеживающими и анти-бот системами. Базовой реализации профилей ZennoPoster стало не хватать, в результате чего появились варианты решения этой проблемы в виде замечательной статьи «Анонимность в каждый ZennoPoster» в двух частях от @ibred, а потом и готовых шаблонов Spoofer и SpooferJoiner от @YrKa. Однако, если следовать статьям, нужно было внедрять в свои шаблоны достаточно много кода, и суметь сделать это грамотно и удобно для дальнейшего использования (что без хорошего знания кода, опять же, реализовать проблематично). Готовые шаблоны избавляли от этого, но были платными и имели некоторые свои проблемы и неудобства.

К счастью, весной 2018 разработчики ZennoPoster выпустили обновление 5.17, в котором представили новую систему генерацию профилей, которая включала почти все вещи, описанные в статье «Анонимность в каждый ZennoPoster». У пользователей появилось решение «из коробки», для использования которого теперь достаточно проставить несколько «галочек».

Как именно это работает, можно ознакомиться по следующим ссылкам: раз, два.

Тем не менее, на практике для совсем полноценного использования нужно немного больше, чем установка и настройка галочек и ползунков в статическом блоке «Профиль» - и именно такие нюансы предлагаю разобрать.

Рассмотрим создание отдельного шаблона-генератора профилей и сниппета, который будет загружать сгенерированные профили. То есть, по факту, создадим современные аналоги Spoofer и SpooferJoiner.
Отдельный шаблон-генератор профилей удобен тем, что можно заранее сгенерировать пачку профилей с нужными параметрами. Сниппет загрузки профиля предназначен для загрузки профиля и донастройки второстепенных параметров браузера.


Для начала просто настроим базовую версию генератора (т.е. только с «галочками») и посмотрим, что будет.

1. Заходим в статический блок «Профиль», включаем ручной режим на вкладке «Браузер» и включаем все эмуляции.

1.png


2. В соседнем блоке «Настройки проекта» желательно сразу ставить «галочку» напротив «Выделенный процесс» (отдельный инстанс под каждый браузерный поток, чтобы не могло быть никаких случайный пересечений между разными инстансами даже в теории).

2.png


3. Либо кубиками, либо сниппетом устанавливаем прокси и сохраняем профиль.

Предварительная установка прокси в инстанс нужна для того, чтобы далее в профиль сохранился сам прокси, а также его данные по часовому поясу, геопозиции и IP в WebRTC (в ином случае, соответственно, эти данные в профиль не попадут).

Так как при каждом запуске шаблона ZennoPoster сам генерирует случайный профиль (ещё перед выполнением, учитывая при этом наши настройки из блока «Профиль»), то остаётся только сохранить этот сгенерированный профиль.

3.png




Теперь запустим созданный шаблон в ZennoPoster, в результате чего получим сгенерированный профиль.

Создадим ещё один шаблон, который будет представлять проект, в котором будет использоваться созданный профиль.

Помимо непосредственно кода или кубика загрузки профиля рекомендую так же устанавливать прокси, как это делалось в шаблоне-генераторе (только тут после загрузки). Почему – если Вы вдруг начнёте использовать, например, backconnect-прокси с регулярно меняющимся внешним IP, то возможна ситуация, когда данные таймзоны и геопозиции нового IP не будут соответствовать данным старого, сохраненного в профиле (хотя, возможно, в последних версиях ZennoPoster этот момент уже учитывается автоматом).

4.png



После загрузки профиля нужно проверить, всё ли правильно у нас эмулируется. Существует достаточно много сайтов для этих целей, лично я предпочитаю проверять по следующим 3, в большинстве случаев этого вполне достаточно.
http://f.vision/
https://whatleaks.com/
https://whoer.net/

У каждого из таких сайтов есть свои особенности и свои косяки, поэтому ограничиваться проверкой по одному точно не стоит.


По «f.vision» обнаружились следующие проблемы.

1. DNS определяются рабочей машины, а не DNS прокси.
2. В WebRTC обнаружился какой-то левый IP, который не является ни IP прокси, ни локальным IP, сгенерированным Zenno.
3. Параметры экрана (Screen) - рабочая область в ProjectMaker оказалась больше, чем сгенерированная Zenno.

5.png



Далее, по «whatleaks».

1. DNS также определяются рабочей машины, а не DNS прокси.
2. В WebRTC установлено всё правильно (и IP прокси, и локальный IP, сгенерированный Zenno) – сайт ругается чисто на то, что лучше выключать WebRTC.
3. Passive OS Fingerprint (операционная система, на которой поднят прокси) не соответствует Browser Useragent (операционной системе, которая эмулируется в профиле).

6.png



И по «whoer».

1. Всё та же проблема с DNS.
2. Не включён DoNotTrack.
3. Включён Flash.

7.png



Помимо того, что подсвечивают ошибками сами сайты, крайне рекомендую проверять конкретные параметры отпечатков браузера. Открываем в ленте «Текущий профиль», вкладку «Профиль», и сравниваем значения с теми, что показывают сайты.

Впрочем, этим заниматься стоит главным образом сразу после перехода на новую версию ZennoPoster (особенно, если меняется первое или второе число в названии версии), так как бывает, что в обновах что-нибудь ломается.

8.png




В итоге, проверив профиль на 3 сайтах, имеем 6 возможных проблем самой простой версии генератора профилей.


1. DNS.

Скрыть DNS можно следующей строчкой C#-кода:

C#:
instance.SetBrowserPreference("network.proxy.socks_remote_dns", true);
2. WebRTC.

Лично я предпочитаю не поручать Zenno установку IP-адресов в WebRTC по следующим причинам:
1) в случае использования backconnect-прокси с регулярно меняющимся внешним IP – при смене в WebRTC может остаться старый IP, что дискредитирует бота в глазах сайта;
2) обычно меня не совсем устраивают диапазоны локальных адресов, которые использует Zenno.

В связи с этим можно вставлять в WebRTC исключительно сгенерированный локальный IP. На мой взгляд, это лучше, чем вообще ничего не вставлять в WebRTC, в то же время шансов спалить что-то лишнего практически нет. Код вставки:

C#:
// Установка локального IP в WebRTC
string ipLocal = "192.168.{0}.{1}";
ipLocal = String.Format(ipLocal, Global.Classes.rnd.Next(2), Global.Classes.rnd.Next(2, 255));
// 1-й параметр - локальный IPv4, 2-й - IPv6, 3-й - внешний IPv4, 4-й - режим работы WebRTC
instance.SetWebRTCAdresses(ipLocal, null, null, ZennoLab.InterfacesLibrary.Enums.Browser.WebRTCMode.Emulate);

3. Параметры экрана (Screen).

Данная проблема по большей части касалась только PM, так как именно там по умолчанию есть расхождение между сгенерированным рабочим экраном и реальной рабочей областью в PM. Тем не менее, отладка в основном производится в PM, и лучше сразу позаботиться об этом (да и мало ли, вдруг однажды и в ZP забагует).

Рабочая область задаётся с помощью метода SetWindowSize. В последних версиях ZP он как раз стал нормально работать в ProjectMaker.

C#:
instance.SetWindowSize(project.Profile.AvailScreenWidth, project.Profile.AvailScreenHeight);

4. Passive OS Fingerprint

Этот отпечаток эмулируется со стороны провайдера прокси. Соответственно, если необходимо точное совпадение, есть следующие варианты:

1) найти провайдера, который поднимает прокси на нужной ОС;
2) найти провайдера, который предоставляет услуги эмуляции нужной ОС;
3) поднять свои прокси на нужной ОС или сэмулировав нужную ОС (нужны соответствующие знания).

А так, по моему опыту, этот отпечаток далеко не критический, и в большинстве задач можно закрывать глаза (траст с истории и кукисов куда важнее в наше время, и почти всегда перекрывает подобные вещи).

5. DoNotTrack

На мой взгляд, спорный вопрос насчёт того, стоит его включать или нет. Лучше смотреть конкретные случаи, включён ли обычно DoNotTrack у той ЦА, на основе которой Вы генерируете профили. Тем не менее, код включения занесём в шаблон.

C#:
instance.SetHeader(ZennoLab.InterfacesLibrary.Enums.Browser.NavigatorField.DoNotTrack, "1");
6. Flash

Тоже спорный параметр. С одной стороны, его принято отключать в Zenno, с другой – не помню, когда Zenno палил IP или что-то ещё через Flash. Плюс, отключение Flash автоматом означает отключение сэмулированных плагинов – что, в свою очередь, тоже может быть триггером для вызова подозрений. В общем, на какой стул садиться – решать Вам. :-)

9.png


C#:
instance.UsePlugins = false;


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

Единственное, «f.vision» ругается на DNS, показывая при этом DNS прокси, и совпадение страны прокси со страной DNS. У этого сайта всё ещё встречаются баги (что, впрочем, разработчики не отрицают), поэтому надо сверять с другими. Тем не менее, лично мне этот сайт нравится больше других уже хотя бы тем, что не цепляет счётчики Яндекс.Метрики и Гугл Аналитики, как это делает тот же «whoer». :(

10.png


Ещё небольшая оговорка – код генерации локального IP лучше вставлять в шаблон-генератор, чтобы IP сохранялся непосредственно в профиле и брался из него, а не генерировался заново с каждой новой загрузкой профиля.



Как итог имеем, что с введением системы генерации профилей в ZP 5.17 большая часть эмуляций и отпечатков хорошо работает «из коробки», но в то же время, некоторые мелочи всё равно надо учитывать и дописывать.


Также хочется упомянуть такой момент. На мой взгляд, отдельный шаблон для генерации профилей – вещь очень удобная. Однако, тот момент, что все настройки системы профилей задаются только в статическом блоке «Профиль», и не доступны для редактирования ни кодом, ни кубиками – делает его нормальную реализацию невозможным.

Например, для одной задачи нам нужно подготовить 100 хромовских профилей с версиями 71-73, для другой задачи – 200 профилей FF с версией 63. Вместо того, чтобы иметь возможность вынести эти параметры во входные настройки:

11.png


Приходится каждый раз лезть в PM и изменять там вручную. Очень надеюсь, что разработчики что-нибудь придумают, как добавить такую возможность в новых версиях ZP (по крайней мере у меня есть проекты, в которых это востребовано, в тикеты писал, очень жду).



В заключение хотелось бы привести пару сниппетов безопасного сохранения и загрузки профилей.

Бывают случаи, когда профиль может тупо не загрузиться из файла, и в работе шаблона использоваться новый автопрофиль, сгенерированный Zenno при старте шаблона. Если такой профиль сохранить обычным способом после работы, то он перезапишет старый профиль, тем самым ряд сохраненных данных и куки от предыдущих сеансов будут потеряны.

Также при выполнении шаблонов при определенных условиях текущий профиль может «слететь» (например, падение инстанса или некорректная его перезагрузка), в результате, опять же, куки и много данные могут быть потеряны.

Причины таких исходов могут быть разные, как неверная логика, кривой код или баги новых билдов самой ZP (в отношении профилей лично я встречался со всеми этими вещами). Поэтому для более-менее серьёзных браузерных шаблонов – на мой взгляд, такие сниппеты очень полезны.


Загрузка профиля

C#:
// Путь к профилю
string profilePath = Path.Combine(project.Path, "1.zpprofile");
// Создавать ли отстутствующие переменные
bool createVars = false;

#region Load
Action<string,bool> Load = (path, createVariables) =>
{
    string oldUA = project.Profile.UserAgent;
    string oldName = project.Profile.Name;
    string oldEmail = project.Profile.Email;
    int oldLength = project.Profile.ToString().Length;
 
    project.Profile.Load(path, createVariables);
 
    string newUA = project.Profile.UserAgent;
    string newName = project.Profile.Name;
    string newEmail = project.Profile.Email;
    int newLength = project.Profile.ToString().Length;

    if (oldUA == newUA && oldName == newName && oldLength == newLength && oldEmail == newEmail)
    {
        throw new Exception("Ошибка загрузки профиля. Путь: " + path);
    }
};
#endregion

// Загрузка профиля
Load(profilePath, createVars);
Сохранение профиля

C#:
// Путь к профилю
string profilePath = Path.Combine(project.Path, "2.zpprofile");
// Переменные проекта, которые нужно сохранить
var saveVars = new[] { "var1", "var2" };

#region Save
Action<string,string[]> Save = (path, saveVariables) =>
{
    if (File.Exists(path))
    {
        string profilePathAlt = profilePath.Replace(".zpprofile", "_ForCheck.zpprofile");

        // Сохранение копии профиля
        project.Profile.Save(profilePathAlt, true, true, true, true, true, true, true, true, true, saveVariables);

        var infoOld = new FileInfo(profilePath);
        var infoNew = new FileInfo(profilePathAlt);
        // Допустимая погрешность в байтах
        long diff = 5 * 1024;

        // Если новый файл тот же или больше, с учётом допустимой погрешности
        if (infoNew.Length >= infoOld.Length - diff)
        {
            // Сохранение профиля и удаление копии
            project.Profile.Save(profilePath, true, true, true, true, true, true, true, true, true, saveVariables);
            File.Delete(profilePathAlt);
        }
        else
        {
            string text = String.Format("Обнаружено уменьшение размера профиля в байтах. Старый размер: {0} Новый размер: {1}. Путь: {2}",
                infoOld.Length, infoNew.Length, profilePath);
            throw new Exception(text);
        }
    }
    else
    {
        project.Profile.Save(path, true, true, true, true, true, true, true, true, true, saveVariables);
    }
};
#endregion

// Сохранение профиля
Save(profilePath, saveVars);

На этом всё, спасибо за внимание. :-)



PS: демо-шаблоны, которые использовались для написания статьи, прикреплены к теме.

PPS: На всякий случай отмечу, что целью статьи не является показать, как создавать наиболее "защищённые" профили с системой генерации Zenno 5.17+. Цель - показать базовые моменты создания профилей относительно высокого уровня защищенности на основе свежей системы генерации, при минимуме усилий и без случайных фейлов из-за незнания каких-либо базовых нюансов.
Для тех, кого волнует именно задача максимализации всех возможных эмуляций - рекомендую заниматься более глубоким аудитом и допиливанием профилей, с учётом как статей на форуме, так и в других источниках в интернете.
 
Тема статьи
Генерация
Номер конкурса статей
Одиннадцатый конкурс статей

Вложения

Для запуска проектов требуется программа ZennoPoster или ZennoDroid.
Это основное приложение, предназначенное для выполнения автоматизированных шаблонов действий (ботов).
Подробнее...

Для того чтобы запустить шаблон, откройте нужную программу. Нажмите кнопку «Добавить», и выберите файл проекта, который хотите запустить.
Подробнее о том, где и как выполняется проект.

Rooter85

Client
Регистрация
04.07.2015
Сообщения
244
Благодарностей
64
Баллы
28
Спасибо за статью. Нравятся твои статьи, как по темам так и по подаче материала. Очень рад что ты участвуешь в этом конкурсе. Тема супер!
 
  • Спасибо
Реакции: LaGir

tony11111

Client
Регистрация
29.11.2017
Сообщения
31
Благодарностей
63
Баллы
18
Отличное дополнение к статьям по анонимности, упомянутым выше. + готовые шаблончики
 
  • Спасибо
Реакции: LaGir

strcn

Client
Регистрация
08.07.2017
Сообщения
73
Благодарностей
46
Баллы
18
Все собрано в одном месте, приятно видеть. Надеюсь разработчики примут твои замечания к сведению. За статью ставлю похвалу!
 
  • Спасибо
Реакции: lzlmrf и LaGir

che100

Client
Регистрация
18.04.2017
Сообщения
808
Благодарностей
503
Баллы
63
В общем и целом статья отличная.
С webrtc у зенки беда, адреса зачастую берутся такие что мама не горюй, в реальной жизни фиг встретишь, адреса какого то лешего она не сохраняет в профиль, запустил профиль по новой запалил контору.
А так, по моему опыту, этот отпечаток далеко не критический, и в большинстве задач можно закрывать глаза (траст с истории и кукисов куда важнее в наше время, и почти всегда перекрывает подобные вещи).
С этим не согласен, считаю что он критичный и важнее чем история.
 
  • Спасибо
Реакции: LaGir

Nike59

Client
Регистрация
05.08.2011
Сообщения
120
Благодарностей
121
Баллы
43
Отличная статья - затронуты очень важные, местами критичные для анонимности вопросы. Высокий технический уровень и практические способы реализации заложенных в потенциал ZennoPoster решений, связанных с повышением анонимности. Мой респект автору.
 
  • Спасибо
Реакции: LaGir и specialist

Rooter85

Client
Регистрация
04.07.2015
Сообщения
244
Благодарностей
64
Баллы
28
1. Можно ли использовать профили сгенерированные с firefox использовать в шаблонах chrome и наоборот? И как в этом случае отразится на анонимности?
2. В шаблонах на firefox профили создаем только с браузерами firefox? С хромом так же, edge и safari не используем?
3. Можно ли при создании новых профилей использовать историю из нагулянных профилей? Если да то что на это влияет, должны ли быть одинаковыми user-agent, разрешение экрана или другие параметры. Профили есть разные с аккаунтами в соцсетях и gmail и без аккаунтов.
 
Последнее редактирование:
  • Спасибо
Реакции: wtfowned

Rooter85

Client
Регистрация
04.07.2015
Сообщения
244
Благодарностей
64
Баллы
28
В снипете сохранения профиля есть проверка на размер файла. У меня профиль не сохраняется из-за уменьшения размера "Старый размер: 2227068 Новый размер: 197267". Профиль был загружен с помощью снипета загрузки, затем был заход на whoer.net (убедился что анонимность 100%) и при выполнении снипета сохранения произошла ошибка. До этого профиль последний раз использовался 1 мая. Всегда ли, при использовании профиля, должен увеличиваться его размер?
 
Регистрация
12.07.2014
Сообщения
916
Благодарностей
373
Баллы
63
Хорошая статья! Проголосовал.
 
  • Спасибо
Реакции: LaGir

LaGir

Client
Регистрация
01.10.2015
Сообщения
227
Благодарностей
927
Баллы
93
1. Можно ли использовать профили сгенерированные с firefox использовать в шаблонах chrome и наоборот? И как в этом случае отразится на анонимности?
2. В шаблонах на firefox профили создаем только с браузерами firefox? С хромом так же, edge и safari не используем?
В идеале да, использовать профили на базе юзерагентов Firefox только c движком FF, на базе юзерагентов Chrome - с движком Chrome. Несоответствие движка и юзерагента (и прочих зависимых параметров) со стороны сайтов может палиться, на форуме этот момент не раз обсуждался.
Соответственно, если подразумевается генерация профилей под оба эти движки, и в генератор профилей, и в основной шаблон стоит добавлять либо кубик запуска нужно движка, либо аналогичный код.
По остальным браузерам (Edge и Safari) - да, стоит использовать только в тех случаях, когда для каких-то специфических задач нужны именно они, а не FF иили Chrome.
3. Можно ли при создании новых профилей использовать историю из нагулянных профилей? Если да то что на это влияет, должны ли быть одинаковыми user-agent, разрешение экрана или другие параметры. Профили есть разные с аккаунтами в соцсетях и gmail и без аккаунтов.
Да, если подразумевается эмуляция одного и того же пользователя, который заходит с разных синхронизированных устройств (в ином случае не знаю для чего это может понадобиться, так как системы аналитики уже дали уникальный айдишник профилю).
В этом случае создании нового профиля с историей старого дело нормальное, если же цели другие - надо рассматривать в частном случае, тут всё зависит от деталей и конкретных задач использования таких профилей.

Касательно того, как именно это делать - многие вещи касательно кук и истории профиля можно как сохранять вне профиля в отдельные файлы, так и загружать в существующий профиль из внешних файлов. Правда, доступно это только через код.

IndexedDb

C#:
// Сохранить в файл
instance.SaveIndexedDb("путь");
// Сохранить в массив байтов
byte[] indexedDB = instance.SaveIndexedDb();

// Загрузить из файла
instance.LoadIndexedDb("путь");
// Загрузить из массива байтов
instance.LoadIndexedDb(indexedDB);
Cookies

C#:
// Сохранить в файл
instance.SaveCookie("путь");
// Сохранить в массив байтов
byte[] cookies = instance.SaveCookie();
// Загрузить из файла
instance.LoadCookie("путь");
// Загрузить из массива байтов
instance.LoadCookie(cookies);
Шрифты

C#:
// Сохранить в файл
instance.SaveFonts("путь");
// Сохранить в массив байтов
byte[] fonts = instance.SaveFonts();
// Загрузить из файла
instance.LoadFonts("путь");
// Загрузить из массива байтов
instance.LoadFonts(fonts);
LocalStorage

C#:
// Сохранить в файл
instance.SaveLocalStorage("путь");
// Сохранить в массив байтов
byte[] localStorage = instance.SaveLocalStorage();
// Загрузить из файла
instance.LoadLocalStorage("путь");
// Загрузить из массива байтов
instance.LoadLocalStorage(localStorage);
Плагины

C#:
// Сохранить в файл
instance.SavePlugins("путь");
// Сохранить в массив байтов
byte[] plugins = instance.SavePlugins();
// Загрузить из файла
instance.LoadPlugins("путь");
// Загрузить из массива байтов
instance.LoadPlugins(plugins);
HSTS Super Cookie

C#:
// Сохранить в файл
instance.SaveSuperCookie("путь");
// Сохранить в массив байтов
byte[] superCookie = instance.SaveSuperCookie();
// Загрузить из файла
instance.LoadSuperCookie("путь");
// Загрузить из массива байтов
instance.LoadSuperCookie(superCookie);
Настройки WebRTC

C#:
// Сохранить в файл
instance.SaveWebRTCDevices("путь");
// Сохранить в массив байтов
byte[] webRTCDevices = instance.SaveWebRTCDevices();
// Загрузить из файла
instance.LoadWebRTCDevices("путь");
// Загрузить из массива байтов
instance.LoadWebRTCDevices(webRTCDevices);

Соответственно, если нужно подтянуть куки или иные данные из старого профиля в новый, делаем следующее:
1. Загружаем старый профиль.
2. Сохраняем нужные данные в отдельные файлы с помощью кода сохранения из под спойлера.
3. Загружаем новый профиль.
4. Загружаем ранее сохраненные данные с помощью кода загрузки из под спойлера.
5. Сохраняем новый профиль.
В идеале далее хорошо тестим, считают ли целевые сайты новый профиль тем же человеком, просто зашедшим с другого синхронизированного устройства.


В снипете сохранения профиля есть проверка на размер файла. У меня профиль не сохраняется из-за уменьшения размера "Старый размер: 2227068 Новый размер: 197267". Профиль был загружен с помощью снипета загрузки, затем был заход на whoer.net (убедился что анонимность 100%) и при выполнении снипета сохранения произошла ошибка. До этого профиль последний раз использовался 1 мая. Всегда ли, при использовании профиля, должен увеличиваться его размер?
Вообще да, размер может уменьшаться, но обычно незначительно, для этого в коде учитывается погрешность (можно менять на своё усмотрение).

2019-05-29_01-32-30.png


Но тут он довольно много "потерял", что странно. Нужно распаковать оба профиля как архив (старый остался с тем же названием, новый должен был сохраниться рядом, с названием "ИмяПрофиля_ForCheck.zpprofile"), глянуть что изменилось в куках, менялись ли остальные данные профили.
 

Master4eg

Client
Регистрация
06.04.2016
Сообщения
421
Благодарностей
122
Баллы
43
Годная статья, жаль сам никак не мог раньше эти проблемы решить, сильно намучался и не не одну сотню слил впустую на капчи из-за палева DNS и WebRTC
 
  • Спасибо
Реакции: LaGir

sirJay

Client
Регистрация
22.07.2018
Сообщения
48
Благодарностей
4
Баллы
8
Лично я предпочитаю не поручать Zenno установку IP-адресов в WebRTC по следующим причинам:
1) в случае использования backconnect-прокси с регулярно меняющимся внешним IP – при смене в WebRTC может остаться старый IP, что дискредитирует бота в глазах сайта;
2) обычно меня не совсем устраивают диапазоны локальных адресов, которые использует Zenno.
Респект за статью!
Но можете подсказать, я уже как почти год не могу найти ответ на вопрос по поводу использования WebRTC для мобильных проксей.
Многие утверждают, что нужно выключать WebRTC для мобильных проксей из-за возможности смены IP во время сессии.
Но почему это проблема, если локальный IP поставить как в вашем примере, например, 192.168.1.100? Да, локальный IP останется тот же, но ведь здесь нет никакого палева, потому что это локальный.
И что если эмулировать новый IP в WebRTC во время сессии при смене IP (вызывая каждый раз функцию проверки на смену IP) – здесь могут быть факторы палева?
 
  • Спасибо
Реакции: LaGir

LaGir

Client
Регистрация
01.10.2015
Сообщения
227
Благодарностей
927
Баллы
93
Но можете подсказать, я уже как почти год не могу найти ответ на вопрос по поводу использования WebRTC для мобильных проксей.
Многие утверждают, что нужно выключать WebRTC для мобильных проксей из-за возможности смены IP во время сессии.
Но почему это проблема, если локальный IP поставить как в вашем примере, например, 192.168.1.100? Да, локальный IP останется тот же, но ведь здесь нет никакого палева, потому что это локальный.
На мой взгляд, если функционал Zenno позволяет отображать в WebRTC только локальный IP, который не меняется, то почему бы этим не пользоваться. Насчёт тех, кто за выключение - возможно, они используют другой софт (где управлять адресами WebRTC нельзя, как в Zenno), или не знают про эту особенность зеннки. Лично я таких людей не встречал, поэтому больше особо сказать нечего. Чисто на своём опыте каких-либо проблем от одного локального IP в WebRTC не наблюдал.
И что если эмулировать новый IP в WebRTC во время сессии при смене IP (вызывая каждый раз функцию проверки на смену IP) – здесь могут быть факторы палева?
Если известен точный момент смены внешнего IP, или же провайдер предоставляет возможность менять IP только тогда, когда нам нужно (например, соответствующим запросом в их API) - то да, можно немного заморочиться и сделать вставку в WebRTC внешнего IP при каждой его смене. В иных случаях, когда момент смены от нас прямым образом не зависит и точно по времени неизвестен - и нормально сделать своебвременную вставку в WebRTC довольно сложно, и шанс палева остаётся.
В первом случае также нужно учитывать, что прокси может банально упасть и смениться на другой раньше плановой смены или нашего запроса на смену. В этом случае, опять же, у нас протечка, если вставляли внешний IP в WebRTC.
 

FastSpace

Client
Read only
Регистрация
05.04.2018
Сообщения
665
Благодарностей
240
Баллы
43
По поводу DNS. Его НЕ нужно выключать, нужно просто покупать НОРМАЛЬНЫЕ прокси.
1)Если речь идет о IPv4 - то только резидентные: такие прокси стоят дорого. Около 200р за штуку. Можно также покупать их пакетами со сменой каждый 5 минут, но это не подойдет если нужно фармить аккаунт в соц. сети долго.
Только для регистраций может.
2)Мобильные прокси - там все ок с DNS, Passive OS.

По поводу WEB RTC на мобильных прокси. Возьми свой смартфон и зайди на сайты где показывает свой DNS. С эмуляцией там все сложней, каждый браузер ведет себя по разному.
 

Rooter85

Client
Регистрация
04.07.2015
Сообщения
244
Благодарностей
64
Баллы
28
По поводу WEB RTC на мобильных прокси. Возьми свой смартфон и зайди на сайты где показывает свой DNS
Поднимаю прокси сам, используя модемы и free proxy. Всегда отключал WEB RTC, потому что при проверке через whoer.net был постоянный локальный IP, для моих нужд профили с отключенным WEB RTC подходили но хотелось бы делать эмуляцию полностью с использованием WEB RTC. Благодаря @LaGir эта задача решена, за что ему большое спасибо.
 
  • Спасибо
Реакции: LaGir

FastSpace

Client
Read only
Регистрация
05.04.2018
Сообщения
665
Благодарностей
240
Баллы
43
Поднимаю прокси сам, используя модемы и free proxy. Всегда отключал WEB RTC, потому что при проверке через whoer.net был постоянный локальный IP, для моих нужд профили с отключенным WEB RTC подходили но хотелось бы делать эмуляцию полностью с использованием WEB RTC. Благодаря @LaGir эта задача решена, за что ему большое спасибо.
На моем смартфоне в хроме в разделе Web Rtc написано "Включено" в разделе IP (N\A).
Яндекс браузер тоже самое
Firefox отдает локальный IP
В опере выключено.
 

LaGir

Client
Регистрация
01.10.2015
Сообщения
227
Благодарностей
927
Баллы
93
По поводу DNS. Его НЕ нужно выключать, нужно просто покупать НОРМАЛЬНЫЕ прокси.
У меня ощущение, что вы не совсем поняли текст про DNS, хотя может я и ошибаюсь. Есть DNS рабочей машины, есть есть DNS прокси. DNS рабочей машины не должны видеть сайты, только DNS прокси.
Есть прокси, которые по умолчанию скрывают DNS рабочей машины, есть те, которые нет. Для последних и нужен код из статьи. Использовать его, разумеется, никто не заставляет, можно сразу покупать прокси первого типа.
По поводу WEB RTC на мобильных прокси. Возьми свой смартфон и зайди на сайты где показывает свой DNS.
На моем смартфоне в хроме в разделе Web Rtc написано "Включено" в разделе IP (N\A).
В контексте темы совет смотреть со смартфона некорректен. Смотреть со смартфона - значит рассматривать работу с эмуляцией мобильных устройств. А это уже область эмуляторов и ZennoDroid, у нас же рассматривается только десктоп.

Но вот использовать смартфон в качестве модема, и смотреть с рабочей машины - думаю, уже более подходящий пример для проверки, как там дела с мобильными прокси.
Собственно, из интереса это и сделал.
2019-05-31_21-00-07.png

Заодно посмотрел с обычного интернета.
2019-05-31_21-18-35.png

А также с прокси одного популярного провайдера мобильных прокси.
2019-05-31_21-37-06.png

Это данные с f.vision.
Wharleaks и whoer во всех 3 случаях в WebRTC позывали N/A. :ap: Думаю, выводов уже можно прилично сделать.)
 

FastSpace

Client
Read only
Регистрация
05.04.2018
Сообщения
665
Благодарностей
240
Баллы
43
У меня ощущение, что вы не совсем поняли текст про DNS, хотя может я и ошибаюсь. Есть DNS рабочей машины, есть есть DNS прокси. DNS рабочей машины не должны видеть сайты, только DNS прокси.
Есть прокси, которые по умолчанию скрывают DNS рабочей машины, есть те, которые нет. Для последних и нужен код из статьи. Использовать его, разумеется, никто не заставляет, можно сразу покупать прокси первого типа.
Это что за прокси такие лажовые, которые DNS твоей рабочей машины показывают? Паблик чтоле? :D
Сейчас большинство проксей платных идут как серверные и там показывают DNS не совпадающий с DNS прокси (Но DNS не твоей машины). Это уже тоже прошлый век, надо покупать прокси где DNS прокси четко совпадает с DNS той машины и где еще желательно установлен Passive OS FingerPrint Windows.
 

LaGir

Client
Регистрация
01.10.2015
Сообщения
227
Благодарностей
927
Баллы
93
Это что за прокси такие лажовые, которые DNS твоей рабочей машины показывают? Паблик чтоле? :D
Сейчас большинство проксей платных идут как серверные и там показывают DNS не совпадающий с DNS прокси (Но DNS не твоей машины). Это уже тоже прошлый век, надо покупать прокси где DNS прокси четко совпадает с DNS той машины и где еще желательно установлен Passive OS FingerPrint Windows.
Вновь призываю вдумчивее читать написанное - речь о том, что отображаться должен DNS прокси, а не какой-либо иной DNS, не важно твоя машина это или сервер с прокси.

Насчёт прошлого века сильное заявление. По своему опыту работы во множестве проектов на Zenno в качестве разработчика, для ряда задач (и просто объемов по аккам) довольно сложно найти хорошие прокси иного типа, при этом не выложив за них баснословные суммы.
Хотя, допускаю, возможно мы имеем дело с гуру по части прокси, который точно знает когда и какие прокси лучше использовать, со всеми подробностями. Если дело обстоит так, как насчёт поучаствовать с этой темой в будущем конкурсе статей (или просто во внеконкурсном разделе)? :-) Думаю, многие форумчане высоко оценят такой материал.
 
  • Спасибо
Реакции: todayer, Amigo123 и lzlmrf

FastSpace

Client
Read only
Регистрация
05.04.2018
Сообщения
665
Благодарностей
240
Баллы
43
Вновь призываю вдумчивее читать написанное - речь о том, что отображаться должен DNS прокси, а не какой-либо иной DNS, не важно твоя машина это или сервер с прокси.

Насчёт прошлого века сильное заявление. По своему опыту работы во множестве проектов на Zenno в качестве разработчика, для ряда задач (и просто объемов по аккам) довольно сложно найти хорошие прокси иного типа, при этом не выложив за них баснословные суммы.
Хотя, допускаю, возможно мы имеем дело с гуру по части прокси, который точно знает когда и какие прокси лучше использовать, со всеми подробностями. Если дело обстоит так, как насчёт поучаствовать с этой темой в будущем конкурсе статей (или просто во внеконкурсном разделе)? :-) Думаю, многие форумчане высоко оценят такой материал.
Ну так для чтобы отображался DNS прокси надо выложить денешку :-) Ну или свой трафик иметь на свой ботнет....
Покупаю такие прокси по 200р - 250р за штуку.
Раньше тоже думал какие дураки берут прокси по такой цене)) Окупаются легко, с ними дороги открыты в любое место.
 

da1ver

Client
Регистрация
22.12.2012
Сообщения
27
Благодарностей
11
Баллы
3
Так же советовал бы почитать и поработать с системами WAF, IDS и подобных, а также почитать про работу протоколов проксирования...
Впринцыпе пасив ос детекшен не так уж и важен, так как максимум что можно получить - снижение траста доверия но уж не как ето не будет важным правилом для банов - максимум в легкое подозрение кинут... Притом многие делают ошибку когда в вебртц ставят ип с локальных подсетей, а в пасивку гасят индентификацию от ямобилки или сетевух простых пк - вот такое очень вероятно может послужить подозрением на бан... Тоже и про прокси, смысл переплачивать, когда достаточно чтоб на проксяк в пасив ос детекшене был линукс, а дальше в вебртц локальный ип и публичные днс гугла или клаудфрая - тем самым для систем обнаружений вы наоборот будете похожы на самого обычного пользователя который выходит в нет за роутером (п.с. тут больше зависит от того с каких блоков ип прокси, если они выданы рипом под ас датацентров - то увы как бы они хорошо небыли настроены и какой-бы небыла емуляция, большинство админов идс, где следят за качеством трафа, выдадут сразу маячок на среднее подозрение)

П.с.: чисто в информативных целях писал, намерения кого-то потролить/обидеть нету!
 
  • Спасибо
Реакции: LaGir

da1ver

Client
Регистрация
22.12.2012
Сообщения
27
Благодарностей
11
Баллы
3
П.с.с.: статья толковая!
 
  • Спасибо
Реакции: LaGir

Hazar

Client
Регистрация
05.12.2018
Сообщения
107
Благодарностей
19
Баллы
18
Я нагуливаю профиля.
Скажите а для чего мне ставить галочку, сохранять прокси, при сохранении профиля?
Если прокси у меня всё равно меняются при каждом входе, и при каждом пересохранении профиля... И когда профиль понадобиться и я пущу его в дело, прокси всё равно будут другими в этот момент...
Это мне не понятно.
 

sw_sw

Client
Регистрация
24.02.2017
Сообщения
769
Благодарностей
307
Баллы
63
тем самым для систем обнаружений вы наоборот будете похожы на самого обычного пользователя который выходит в нет за роутером!
С каких пор роутер влияет на TCP FP ? =)

Не вводите в заблуждение людей.

У обычного юзера никакого линукса и disabled webrtc просто не может быть.

Это ПАЛЕВО.
 
  • Спасибо
Реакции: Valandersi и che100

sw_sw

Client
Регистрация
24.02.2017
Сообщения
769
Благодарностей
307
Баллы
63
А, и да, google dns у обычного ушастого хоум юзера, а тем более юзера мобилки - анбеливбл )

+100500 к палеву.
 
  • Спасибо
Реакции: Valandersi и che100

GeGold

Client
Регистрация
28.09.2015
Сообщения
778
Благодарностей
370
Баллы
63
Проголосовал за твою статью не читая её. Вчера понадобилась эмуляция и здесь это всё описано - как знал ,что статья полезна , спасибо
 

che100

Client
Регистрация
18.04.2017
Сообщения
808
Благодарностей
503
Баллы
63
Впринцыпе пасив ос детекшен не так уж и важен, так как максимум что можно получить - снижение траста доверия но уж не как ето не будет важным правилом для банов - максимум в легкое подозрение кинут...
Наглое заявление заявление, вы наверно в гугле и фейсбуке по 3 года отработали по профилю.
 

da1ver

Client
Регистрация
22.12.2012
Сообщения
27
Благодарностей
11
Баллы
3
А, и да, google dns у обычного ушастого хоум юзера, а тем более юзера мобилки - анбеливбл )

+100500 к палеву.
Хотябы бегло прочитайте про вафы и про айдиси и пообщайтесь с людьми которые их настраивают для больших провайдеров/корпораций, и Ваши +100500 к палеву уйдут в 0, увы мировая практика рекомендует считать паблик днс доверительными.

Ну а фразу "у обычного юзера никакого линукса не может быть" я даже и коментировать не буду, поверьте много людей (обычные юзеры) используют юниксподобные операционные системы ...
 

da1ver

Client
Регистрация
22.12.2012
Сообщения
27
Благодарностей
11
Баллы
3
Ах да и я не говорил про disable webrtc от слова "вообще"
 

che100

Client
Регистрация
18.04.2017
Сообщения
808
Благодарностей
503
Баллы
63
Хотябы бегло прочитайте про вафы и про айдиси и пообщайтесь с людьми которые их настраивают для больших провайдеров/корпораций,
Ушёл читать про вафы, айдиси и звонить сис админу Газпрома. Ну всё теперь-то заживём!
 

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