Как перегенерировать User-Agent Chrome в проекте кубиком или на C#?

POLOZ

Client
Регистрация
06.02.2018
Сообщения
42
Благодарностей
4
Баллы
8
Приветствую. Не могу решить задачу - нужно нагенерировать актуальных user-agent crome и записать их в список. При нажатии на кнопку "Перегенерировать" в меню "Текущий профиль" user-agent изменяются.
54508


Как это действие реализовать в кубике или на C#? Метод генерации юзер-агентов из статьи "Анонимность в каждый ZennoPoster. От Useragent'a до шрифтов. Часть 2." не совсем подходит, т.к. актуальных версий билдов chrome мне не удалось найти (да и не знаю я как их вписывать правильно в chrome-builds.data) и постоянно обновлять билды не хочется, если в самой зенке есть данный функционал.

В операциях над профилем перегенерировать поле user-agent также не получается, действие не выставляется.
54511


Подскажите, как кубиком или на C# перегенерировать профиль или отдельно user-agent, записать user-agent в список, затем снова перегенерировать user-agent и записать новый user-agent в список и так далее.
 

Phoenix78

Client
Read only
Регистрация
06.11.2018
Сообщения
11 790
Благодарностей
5 720
Баллы
113
такой возможности нет. профиль генерируется только при старте шаблона. другие способы генерации закрыты разработчиками. Можно подгружать свои юзер агенты, но не генерировать.
 
  • Спасибо
Реакции: POLOZ

POLOZ

Client
Регистрация
06.02.2018
Сообщения
42
Благодарностей
4
Баллы
8
Ясно. Очень жаль. Буду искать решение проблемы.
Благодарю за разъяснение.
 

Phoenix78

Client
Read only
Регистрация
06.11.2018
Сообщения
11 790
Благодарностей
5 720
Баллы
113
если надо набрать генерированных юзер агентов, то я просто запускаю 100500 раз шаблон, а новый профиль сохраняю. в вашем случае можете так же делать, с разницей что юзер агент будете добавлять в список.
 
  • Спасибо
Реакции: POLOZ

POLOZ

Client
Регистрация
06.02.2018
Сообщения
42
Благодарностей
4
Баллы
8
Так и сделаю. Спасибо.
 

Platon

Client
Регистрация
26.09.2015
Сообщения
260
Благодарностей
122
Баллы
43
то я просто запускаю 100500 раз шаблон
C#:
var rnd = new Random();
//генерация номера сборки
var dt = new DateTime(2000 + rnd.Next(13,15), rnd.Next(1,13), rnd.Next(1,29), rnd.Next(0,24), rnd.Next(0,31), rnd.Next(0,31));
string buildID = dt.ToString("yyyyMMddHHmmss");
// Генерация версии виндовс
string [] os = {"5", "6", "7", "8", "10"};
string oscpu = String.Format("Windows NT {0}.{1}", os[rnd.Next(0,5)], rnd.Next(0,2));
string [] osarr = {"; WOW64", "; Win64", ""};
oscpu += osarr[rnd.Next(0,3)];
//Генерация версия браузера
string version = String.Format("{0}.{1}", rnd.Next(30,45).ToString(), rnd.Next(0,2).ToString());
string UserAgent = String.Format("Mozilla/5.0 ({0}; rv:{1}) Gecko/20100101 Firefox/{1}", oscpu, version);
return UserAgent;
По FF генерил вот таким кодом, кто бы его под Хром модернизировал?)
Было бы не плохо (сам слабо в C# соображаю)
 

Phoenix78

Client
Read only
Регистрация
06.11.2018
Сообщения
11 790
Благодарностей
5 720
Баллы
113
C#:
var rnd = new Random();
//генерация номера сборки
var dt = new DateTime(2000 + rnd.Next(13,15), rnd.Next(1,13), rnd.Next(1,29), rnd.Next(0,24), rnd.Next(0,31), rnd.Next(0,31));
string buildID = dt.ToString("yyyyMMddHHmmss");
// Генерация версии виндовс
string [] os = {"5", "6", "7", "8", "10"};
string oscpu = String.Format("Windows NT {0}.{1}", os[rnd.Next(0,5)], rnd.Next(0,2));
string [] osarr = {"; WOW64", "; Win64", ""};
oscpu += osarr[rnd.Next(0,3)];
//Генерация версия браузера
string version = String.Format("{0}.{1}", rnd.Next(30,45).ToString(), rnd.Next(0,2).ToString());
string UserAgent = String.Format("Mozilla/5.0 ({0}; rv:{1}) Gecko/20100101 Firefox/{1}", oscpu, version);
return UserAgent;
По FF генерил вот таким кодом, кто бы его под Хром модернизировал?)
Было бы не плохо (сам слабо в C# соображаю)
тот еще гемор. собрать все параметры для всех версий. и постоянно его обновлять. бррр.....
проще напарсить пару тыс юзер агентов :-)
 

Platon

Client
Регистрация
26.09.2015
Сообщения
260
Благодарностей
122
Баллы
43

Phoenix78

Client
Read only
Регистрация
06.11.2018
Сообщения
11 790
Благодарностей
5 720
Баллы
113
Да это понятно) но вопрос то был именно о генерации
ну проблема в том что поддерживать актуальность в своем коде достаточно трудоемко. я проще делаю, из инета список обновляемый самых топовых, наиболее часто встречаемых юзерагентов раз в сутки получаю, а когда зенка генерит профиль сверяю юзер агент с этим списком. и не парюсь с поддержкой кода, зеннолаб эту работу делает, я только фильтрую :-)
 
  • Спасибо
Реакции: ZSharp

Platon

Client
Регистрация
26.09.2015
Сообщения
260
Благодарностей
122
Баллы
43
из инета список обновляемый самых топовых, наиболее часто встречаемых юзерагентов раз в сутки получаю, а когда зенка генерит профиль сверяю юзер агент с этим списком
Это сколько же телодвижений) По крайней мере нужно получить(или спарсить?)
Затем в список, затем сверить, последнее так вовсе не понятно, как сверить?
До полного совпадения или как?
 

Phoenix78

Client
Read only
Регистрация
06.11.2018
Сообщения
11 790
Благодарностей
5 720
Баллы
113
Это сколько же телодвижений) По крайней мере нужно получить(или спарсить?)
Затем в список, затем сверить, последнее так вовсе не понятно, как сверить?
До полного совпадения или как?
сколько телодвижений ? да два шаблона всего. парсер платный за пачку сигарет. и один генератор с проверкой. проверка тупо на полное совпадение по строке юзерагента :-) вообще ни о чем :-) один раз написал, и гоняют по расписанию уже месяца 2 точно. даже не заглядывал туда ни разу.
 

Platon

Client
Регистрация
26.09.2015
Сообщения
260
Благодарностей
122
Баллы
43

Phoenix78

Client
Read only
Регистрация
06.11.2018
Сообщения
11 790
Благодарностей
5 720
Баллы
113
Тогда вопрос, а зачем вообще генерировать?
ну я так не только юзерагенты генерирую, я же писал, генерирую профили. а профиль это далеко не только юзер агент. разрешение, шрифты, и вся та кучи информации что нужна для уникализации. это автору нужен генерированный юзерагент, а зачем мне не ведомо. по мне если только юзерагент нужен, то проще напарсить в инете :ce:
 

Roman48

Client
Регистрация
28.02.2016
Сообщения
2 058
Благодарностей
745
Баллы
113

Platon

Client
Регистрация
26.09.2015
Сообщения
260
Благодарностей
122
Баллы
43

Phoenix78

Client
Read only
Регистрация
06.11.2018
Сообщения
11 790
Благодарностей
5 720
Баллы
113
А разница то какая? Полученные UA можно подставлять в профиль, это же проще?
Или не??))
а как связывать по юзер агенту всю инфу из раздела навигат ? ручками под каждую ось/браузер проставлять ? разрешение тоже угадывать ? такс чо тут у нас загрузилось... вин 10... и чешешь репу, толи это таблетка толи десктоп :-)
 

POLOZ

Client
Регистрация
06.02.2018
Сообщения
42
Благодарностей
4
Баллы
8

Platon

Client
Регистрация
26.09.2015
Сообщения
260
Благодарностей
122
Баллы
43

Phoenix78

Client
Read only
Регистрация
06.11.2018
Сообщения
11 790
Благодарностей
5 720
Баллы
113
Если в настройках генерации стоит десктоп откуда там что-то другое появится?))
Значит
я про загрузку юзерагента. при генерации программа сама соответствие проставляет, что мне и надо.
 

Roman48

Client
Регистрация
28.02.2016
Сообщения
2 058
Благодарностей
745
Баллы
113
C#:
var rnd = new Random();
//генерация номера сборки
var dt = new DateTime(2000 + rnd.Next(13,15), rnd.Next(1,13), rnd.Next(1,29), rnd.Next(0,24), rnd.Next(0,31), rnd.Next(0,31));
string buildID = dt.ToString("yyyyMMddHHmmss");
// Генерация версии виндовс
string [] os = {"5", "6", "7", "8", "10"};
string oscpu = String.Format("Windows NT {0}.{1}", os[rnd.Next(0,5)], rnd.Next(0,2));
string [] osarr = {"; WOW64", "; Win64", ""};
oscpu += osarr[rnd.Next(0,3)];
//Генерация версия браузера
string version = String.Format("{0}.{1}", rnd.Next(30,45).ToString(), rnd.Next(0,2).ToString());
string UserAgent = String.Format("Mozilla/5.0 ({0}; rv:{1}) Gecko/20100101 Firefox/{1}", oscpu, version);
return UserAgent;
По FF генерил вот таким кодом, кто бы его под Хром модернизировал?)
Было бы не плохо (сам слабо в C# соображаю)
C#:
//zennolab.com/discussion/threads/anonimnost-v-kazhdyj-zennoposter-ot-useragenta-do-shriftov-chast-2.44575/

Random r = new Random();

Tuple<string, int, int>[] ChromeBuild = {
    Tuple.Create("55", 2841, 2883),
    Tuple.Create("56", 2884, 2924),
    Tuple.Create("57", 2925, 2987),
    Tuple.Create("58", 2988, 3029),
    Tuple.Create("59", 3030, 3071),
    Tuple.Create("60", 3072, 3112),
    Tuple.Create("61", 3113, 3163),
    Tuple.Create("62", 3164, 3202),
    Tuple.Create("63", 3203, 3239),
    Tuple.Create("64", 3240, 3282),
    Tuple.Create("65", 3283, 3290)
};

int random = r.Next(0, ChromeBuild.Length);

string version = ChromeBuild[random].Item1;
string build = Convert.ToString(r.Next(ChromeBuild[random].Item2, ChromeBuild[random].Item3));
string build2 = string.Empty;


int randomNumber = r.Next(0, ChromeBuild.Length);

foreach (string line in File.ReadLines(string.Format(@"{0}chrome-builds.data", project.Path)))
{
    if (line.Contains(string.Format(@"{0}.{1}", ChromeBuild[randomNumber].Item1, ChromeBuild[randomNumber].Item3)))
    {
        project.SendInfoToLog(string.Format(@"{0}.{1}", ChromeBuild[2].Item1, ChromeBuild[2].Item2));
        string[] temp = line.Split(new[] {','}, StringSplitOptions.None);
        string lastBuild = line.Split(';')[1].Split(',')[r.Next(0, temp.Length)];
        if (lastBuild.Contains("-")) {lastBuild = Convert.ToString(r.Next(int.Parse(lastBuild.Split('-')[0]), int.Parse(lastBuild.Split('-')[1])+1));}
        build2 = lastBuild;
    }
}

// Формируем набор версий операционной системы Windows
// 6.0 Windows Vista
// 6.1 Windows 7
// 6.2 Windows 8
// 6.3 Windows 8.1
// 10.0 Windows 10
string winOC = Macros.TextProcessing.Spintax("{6.0|6.1|6.2|6.3|10.0}");
string platform = Macros.TextProcessing.Spintax("{Win32|Win64}");

// Определяем "битность" самого приложения
string platformApp = string.Empty;
if(platform=="Win32"){
    platformApp = Macros.TextProcessing.Spintax("{; WOW64|}");
} else {
    platformApp = "; Win64; x64";
}
// Устанавливаем Useragent
project.Profile.UserAgent = string.Format("Mozilla/5.0 (Windows NT {0}{1}) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/{2} Safari/537.36", winOC, platformApp, string.Format(@"{0}.0.{1}.{2}", version, build, build2));
project.Profile.UserAgentAppVersion = project.Profile.UserAgent.Replace(@"Mozilla/", "");
project.Profile.UserAgentAppName = "Netscape";
project.Profile.UserAgentAppCodeName = "Mozilla";
project.Profile.UserAgentProduct = "Gecko";
project.Profile.UserAgentProductSub = "20030107"; // Дата первого релиза браузера. Данное значение является константой.
instance.ShowNavigatorField(ZennoLab.InterfacesLibrary.Enums.Browser.NavigatorField.BuildId);
// Устанавливаем BuildID
instance.SetHeader(ZennoLab.InterfacesLibrary.Enums.Browser.NavigatorField.BuildId, null);
// Устанавливаем Vendor
instance.ShowNavigatorField(ZennoLab.InterfacesLibrary.Enums.Browser.NavigatorField.Vendor);
instance.SetHeader(ZennoLab.InterfacesLibrary.Enums.Browser.NavigatorField.Vendor, "Google Inc.");
// Устанавливаем VendorSub
instance.ShowNavigatorField(ZennoLab.InterfacesLibrary.Enums.Browser.NavigatorField.VendorSub);
instance.SetHeader(ZennoLab.InterfacesLibrary.Enums.Browser.NavigatorField.VendorSub, null);

// OC
project.Profile.UserAgentOsCpu = string.Format("Windows NT {0}{1}", winOC, platformApp);
project.Profile.UserAgentPlatform = platform;
надо отредактировать свежими и все норм будет.если получиться сообщи
Браузер содержит достаточно большое кол-во билдов (то, что перечислено в ChromeBuild - это ещё не всё), поэтому я вынес эту в отдельную таблицу в виде файла chrome-builds.data, который Вы можете скачать здесь. Разместить его необходимо рядом с шаблоном.
 

ZSharp

Client
Регистрация
29.09.2013
Сообщения
395
Благодарностей
126
Баллы
43

ZSharp

Client
Регистрация
29.09.2013
Сообщения
395
Благодарностей
126
Баллы
43

bigloafer

Client
Регистрация
23.07.2020
Сообщения
243
Благодарностей
76
Баллы
28
А есть ли сейчас смысл устанавливать свой UA при том что он генерируется из коробки?
Или он все таки не особо качественно генерируется и необходимо его задать самостоятельно?
 

tanaris

Client
Регистрация
07.01.2019
Сообщения
29
Благодарностей
2
Баллы
3
В случае с мобильными юзерагентами, моделей телефонов существует тысячи от различных вендоров и под разные версии андроида в том числе после апдейтов. В зенке нет большого выбора, даже рядом нет того что нужно для рандомизации комфортной, постоянно повторяются, самсунги, сяомишки.
 

Hanacalan

Новичок
Регистрация
04.03.2021
Сообщения
3
Благодарностей
0
Баллы
1
Про мобильных юзеров согласен с Вами
 

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