Всем привет.
Убил все выходные - но причину так и не нашёл... Явно где то "палюсь" на мелочи - но пока не могу побороть.
И так - регистрирую аккаунты на fake почты на aliexpress. Полторы недели назад все было ок, регистрировал пачками - по статистике в бан/верификацию улетал каждый 30 аккаунт.
Что на "входе" - самописный примитивный скрипт регистрации + модем на raspberry pi с 3proxy. Под каждую регистрацию - смена ip.
80% аккаунтов уходят на верификацию еще на моменте регистрации, остальные уходят на верификацию после попытки в них войти. "Выживает" в среднем 1 из 60 зарегистрированных аккаунтов.
Что я уже сделал:
1. Смена ip при каждой регистрации (с контролем повторных ip, списки очищаю раз в 2-3 суток, т.е. ip каждый раз разные).
2. Профиль настроен под мобильный телефон, firefox (хром пробовал - та же петрушка)
3. Рандомное разрешение экрана
4. Эмуляция WebRTC ip на основе текущего (не сразу заметил этот жирный косяк)
5. Эмуляция различных сборок браузера
6. Эмуляция процессоров
7. Эмуляция тача
8. Отключение WebGL
На этом моя фантазия и "знания" закончились.
Явно где то "свечусь", а вот где - пока не пойму.
Пробовал ради эксперимента и приватные/шаред прокси - все так же.
У меня остаётся ровно 1 вариант - ip моего мобильного оператора "засраны" по полной на ali... Ну или ali просто закрутил очень сильно гайки. На sms регистрацию переходить не хочу
Где я облажался?
Убил все выходные - но причину так и не нашёл... Явно где то "палюсь" на мелочи - но пока не могу побороть.
И так - регистрирую аккаунты на fake почты на aliexpress. Полторы недели назад все было ок, регистрировал пачками - по статистике в бан/верификацию улетал каждый 30 аккаунт.
Что на "входе" - самописный примитивный скрипт регистрации + модем на raspberry pi с 3proxy. Под каждую регистрацию - смена ip.
80% аккаунтов уходят на верификацию еще на моменте регистрации, остальные уходят на верификацию после попытки в них войти. "Выживает" в среднем 1 из 60 зарегистрированных аккаунтов.
Что я уже сделал:
1. Смена ip при каждой регистрации (с контролем повторных ip, списки очищаю раз в 2-3 суток, т.е. ip каждый раз разные).
2. Профиль настроен под мобильный телефон, firefox (хром пробовал - та же петрушка)
3. Рандомное разрешение экрана
C#:
Random r = new Random();
// Формируем набор популярных десктопных разрешений [Идея хранения позаимствована у doc'a, за что ему большая благодарность!]
int [,] resolutionSet = {
{2880, 1800},
{2560, 1600},
{2560, 1440},
{1920, 1200},
{1920, 1080},
{1680, 1050},
{1600, 1200},
{1600, 900},
{1440, 900},
{1366, 768},
{1360, 768},
{1280, 1024},
{1280, 800},
{1280, 768},
{1152, 864},
{1080, 1920},
{1024, 768}
};
// Получаем рандомное разрешение и устанавливаем
int resolution = r.Next(resolutionSet.Length/2);
project.Profile.ScreenSizeWidth = resolutionSet[resolution, 0];
project.Profile.ScreenSizeHeight = resolutionSet[resolution, 1];
// Видимая область
project.Profile.AvailScreenWidth = project.Profile.ScreenSizeWidth-17;
project.Profile.AvailScreenHeight = project.Profile.ScreenSizeHeight-40;
// Глубина цвета монитора (Color Depth)
// [Чуть позже будет обновление механизма установки этого параметра]
instance.SetScreenPreference("screen_color_depth", 24);
C#:
string webtrc_ip = project.Variables["ip"].Value;
instance.SetWebRTCAdresses(null, null, webtrc_ip , ZennoLab.InterfacesLibrary.Enums.Browser.WebRTCMode.Emulate);
C#:
// Выбор дейвайса: Мобильный телефон или Планшет
// Должна быть активирована только одна строка
//string device = Macros.TextProcessing.Spintax("{Mobile|Tablet}"); // Cлучайный
string device = "Mobile"; // Мобильный
//string device = "Tablet"; // Мобильный
// Выбираем случайную версию Firefox
Random r = new Random();
//Формируем набор buildID нашего Firefox (у каждой версии свой)
Tuple<string, string>[] buildIDSet = {
Tuple.Create("57", "20171112125346"),
Tuple.Create("56", "20171024165158"), // 56.0.2
Tuple.Create("56", "20171002220106"), // 56.0.1
Tuple.Create("56", "20170926190823"),
Tuple.Create("55", "20170802111421"),
Tuple.Create("54", "20170608105825"),
Tuple.Create("53", "20170413192749"),
Tuple.Create("52", "20171206101620"), // 52.5.2
Tuple.Create("52", "20171107091003"), // 52.5.0
Tuple.Create("52", "20170316213829"),
Tuple.Create("51", "20170125094131"),
Tuple.Create("50", "20161104212021"),
Tuple.Create("49", "20161019084923")
};
// Версия
int currentBuild = r.Next(buildIDSet.Length);
string version = buildIDSet[currentBuild].Item1;
// Устанавливаем BuildID
instance.ShowNavigatorField(ZennoLab.InterfacesLibrary.Enums.Browser.NavigatorField.BuildId);
instance.SetHeader(ZennoLab.InterfacesLibrary.Enums.Browser.NavigatorField.BuildId, buildIDSet[currentBuild].Item2);
// Устанавливаем Vendor
instance.ShowNavigatorField(ZennoLab.InterfacesLibrary.Enums.Browser.NavigatorField.Vendor);
instance.SetHeader(ZennoLab.InterfacesLibrary.Enums.Browser.NavigatorField.Vendor, null);
// Устанавливаем VendorSub
instance.ShowNavigatorField(ZennoLab.InterfacesLibrary.Enums.Browser.NavigatorField.VendorSub);
instance.SetHeader(ZennoLab.InterfacesLibrary.Enums.Browser.NavigatorField.VendorSub, null);
// Формируем набор версий операционной системы Android
// https://ru.wikipedia.org/wiki/История_версий_Android
string AndroidOC = Macros.TextProcessing.Spintax("{4.4.4|5.0|5.0.1|5.0.2|5.1|5.1.1|6.0|6.0.1|7.0|7.1|7.1.1|7.1.2|8.0|8.1}");
string platform = string.Format(@"Linux {0}", Macros.TextProcessing.Spintax("{armv7l|armv8l}")); // 32bit and 64bit
// Определяем "битность" самого приложения
string platformApp = string.Empty;
// OC
project.Profile.UserAgentOsCpu = platform;
project.Profile.UserAgentPlatform = platform;
// Устанавливаем Useragent
project.Profile.UserAgent = string.Format("Mozilla/5.0 (Android {0}; {2}; rv:{1}.0) Gecko/20100101 Firefox/{1}.0", AndroidOC, version, device);
project.Profile.UserAgentAppVersion = string.Format(@"5.0 (Android {0})", AndroidOC);
project.Profile.UserAgentAppName = "Netscape";
project.Profile.UserAgentAppCodeName = "Mozilla";
project.Profile.UserAgentProduct = "Gecko";
project.Profile.UserAgentProductSub = "20100101";
C#:
// Формируем набор возможных вариантов
string cpu = Macros.TextProcessing.Spintax("{2|4|6|8}");
instance.ShowNavigatorField(ZennoLab.InterfacesLibrary.Enums.Browser.NavigatorField.HardwareConcurrency);
// Устанавливаем рандомное кол-во ядер процессора
instance.SetHeader(ZennoLab.InterfacesLibrary.Enums.Browser.NavigatorField.HardwareConcurrency, cpu);
C#:
instance.SetBrowserPreference("dom.w3c_touch_events.enabled", 1); // Включаем сенсорные события
instance.ShowNavigatorField(ZennoLab.InterfacesLibrary.Enums.Browser.NavigatorField.MaxTouchPoints);
instance.SetHeader(ZennoLab.InterfacesLibrary.Enums.Browser.NavigatorField.MaxTouchPoints, "5"); // Устанавливаем 5 (например) максимальных одновременных касаний.
C#:
instance.SetBrowserPreference("webgl.disabled", true);
instance.SetBrowserPreference("webgl.enable-webgl2", false);
instance.SetBrowserPreference("webgl.disable-extensions", true);
instance.SetBrowserPreference("webgl.min_capability_mode", true);
Явно где то "свечусь", а вот где - пока не пойму.
Пробовал ради эксперимента и приватные/шаред прокси - все так же.
У меня остаётся ровно 1 вариант - ip моего мобильного оператора "засраны" по полной на ali... Ну или ali просто закрутил очень сильно гайки. На sms регистрацию переходить не хочу
Где я облажался?