Как установить рандомную задержку между набором символов?

Belwin

Client
Регистрация
30.06.2015
Сообщения
125
Благодарностей
13
Баллы
18
Насколько я понимаю в экшене "Настройки" браузера для задержки между набором символов можно выбрать только постоянное значение. Например, 200мс. Это же относиться к экшену "Эмуляция клавиатуры". Но можно ли как-то задать задержку в определенном диапазоне, чтобы перед набором каждого символа была рандомная задержка в приделах этого диапазона? К примеру, от 200мс до 250мс? Можно ли это сделать хотя бы с помощью C# сниппета?
 

doc

Client
Регистрация
30.03.2012
Сообщения
8 607
Благодарностей
4 598
Баллы
113
я думаю, она и так там не совсем постоянная
 

Belwin

Client
Регистрация
30.06.2015
Сообщения
125
Благодарностей
13
Баллы
18

ZennoScript

Moderator
Регистрация
04.03.2011
Сообщения
4 450
Благодарностей
1 880
Баллы
113
А зачем? Вы думаете, что сайты считают, сколько времени Вы тратите на заполнение одного поля?
Это можно сделать через С код, стандартными методами нельзя.
 

Belwin

Client
Регистрация
30.06.2015
Сообщения
125
Благодарностей
13
Баллы
18
А зачем? Вы думаете, что сайты считают, сколько времени Вы тратите на заполнение одного поля?
Это можно сделать через С код, стандартными методами нельзя.
Мне нужно в основном для Google и Youtube. Не удивлюсь если Google при той же регистрации gmail учитывает задержки между набором символов. Но с gmail ладно, пока я шаблон для его регистрации писать не собираюсь. По крайней мере в ближайшие дни. Сейчас мне нужно это для Youtube. Я написал шаблон, который собирает определенные данные с YouTube Analytics, многократно вводя поочередно все названия видео, которые есть на канале. Каналов много, как и самих видео. И так как все эти действия происходят в авторизованых аккаунтах, то мне хотелось бы себя дополнительно обезопасить еще и с помощью нормальной эмуляции. А будь у меня возможность между набором каждого символа делать рандомную задержку в указанном диапазоне, я был бы куда спокоен за жизнь своих каналов. Возможно это все излишне, но все больше и больше на моих YouTube каналов появляется автоматизации. Да и мало ли для чего оно еще в будущем может пригодиться.

Если конвертировать экшен "Настройки" браузера с задержкой в 200 мс в C# код, то получиться такой кусок кода:
Код:
instance.SymbolEmulationDelay = 200;
Может, если вам несложно, то вы подскажите, что нужно в него добавить, чтобы задержка между набором каждого символа стала рандомной, и при этом в нужном диапазоне? Например, от 200 мс до 250 мс.
 

Dimionix

Moderator
Регистрация
09.04.2011
Сообщения
3 068
Благодарностей
3 100
Баллы
113
Может, если вам несложно, то вы подскажите, что нужно в него добавить, чтобы задержка между набором каждого символа стала рандомной, и при этом в нужном диапазоне? Например, от 200 мс до 250 мс.
C#:
Random rnd = new Random();
instance.SymbolEmulationDelay = rnd.Next(200, 251); // задержка между набором символов, мс
instance.FieldEmulationDelay = rnd.Next(1000, 5000); // задержка между полями ввода, мс
Но это Вам не подойдет, т.к. кубик C# нужно будет втыкать перед каждым кубиком эмуляции клавиатуры и ГЛАВНОЕ задержки между вводом символов будут все равно одинаковые, рандом будет только для каждого поля.
То, что Вам нужно:
C#:
instance.WaitFieldEmulationDelay(); // не знаю, обязательна ли эта строка, но, в принципе, не мешает

string str = project.Variables["Text"].Value; // переменная с текстом
int latencyMin = 15; // минимальная задержка для ввода одного символа, мс
int latencyMax = 501; // максимальная задержка для ввода одного символа, мс

char[] symbol = str.ToArray();
Random rnd = new Random();
for (int i = 0; i < symbol.Count(); i++)
{
    string text = symbol[i].ToString();
    int latency = rnd.Next(latencyMin, latencyMax);
    instance.SendText(text, latency);
}
PS. Предлагаю данную тему перенести в раздел "Предложения". Добавить подобный функционал в программу "из коробки".
 

Belwin

Client
Регистрация
30.06.2015
Сообщения
125
Благодарностей
13
Баллы
18
То, что Вам нужно:
C#:
instance.WaitFieldEmulationDelay(); // не знаю, обязательна ли эта строка, но, в принципе, не мешает

string str = project.Variables["Text"].Value; // переменная с текстом
int latencyMin = 15; // минимальная задержка для ввода одного символа, мс
int latencyMax = 501; // максимальная задержка для ввода одного символа, мс

char[] symbol = str.ToArray();
Random rnd = new Random();
for (int i = 0; i < symbol.Count(); i++)
{
    string text = symbol[i].ToString();
    int latency = rnd.Next(latencyMin, latencyMax);
    instance.SendText(text, latency);
}
PS. Предлагаю данную тему перенести в раздел "Предложения". Добавить подобный функционал в программу "из коробки".
Спасибо огромное за помощь. Создал новую тему в разделе предложений http://zennolab.com/discussion/threads/randomnaja-zaderzhka-mezhdu-naborom-simvolov.28469/
 
  • Спасибо
Реакции: Dimionix

Dimionix

Moderator
Регистрация
09.04.2011
Сообщения
3 068
Благодарностей
3 100
Баллы
113
  • Спасибо
Реакции: phirelli

Belwin

Client
Регистрация
30.06.2015
Сообщения
125
Благодарностей
13
Баллы
18
  • Спасибо
Реакции: boris99

Gfoblin

Client
Регистрация
30.05.2013
Сообщения
4 518
Благодарностей
990
Баллы
113
C#:
Random rnd = new Random();
instance.SymbolEmulationDelay = rnd.Next(200, 251); // задержка между набором символов, мс
instance.FieldEmulationDelay = rnd.Next(1000, 5000); // задержка между полями ввода, мс
Но это Вам не подойдет, т.к. кубик C# нужно будет втыкать перед каждым кубиком эмуляции клавиатуры и ГЛАВНОЕ задержки между вводом символов будут все равно одинаковые, рандом будет только для каждого поля.
То, что Вам нужно:
C#:
instance.WaitFieldEmulationDelay(); // не знаю, обязательна ли эта строка, но, в принципе, не мешает

string str = project.Variables["Text"].Value; // переменная с текстом
int latencyMin = 15; // минимальная задержка для ввода одного символа, мс
int latencyMax = 501; // максимальная задержка для ввода одного символа, мс

char[] symbol = str.ToArray();
Random rnd = new Random();
for (int i = 0; i < symbol.Count(); i++)
{
    string text = symbol[i].ToString();
    int latency = rnd.Next(latencyMin, latencyMax);
    instance.SendText(text, latency);
}
PS. Предлагаю данную тему перенести в раздел "Предложения". Добавить подобный функционал в программу "из коробки".
C#:
instance.WaitFieldEmulationDelay(); // не знаю, обязательна ли эта строка, но, в принципе, не мешает

string str = project.Variables["Text"].Value; // переменная с текстом
int latencyMin = 15; // минимальная задержка для ввода одного символа, мс
int latencyMax = 501; // максимальная задержка для ввода одного символа, мс

char[] symbol = str.ToArray();
Random rnd = new Random();
for (int i = 0; i < symbol.Count(); i++)
{
    string text = symbol[i].ToString();
    int latency = rnd.Next(latencyMin, latencyMax);
    instance.SendText(text, latency);
    if ((text==" ")|| (text==","))
{
latency = rnd.Next(latencyMin*2, latencyMax*3);
System.Threading.Thread.Sleep(latency);
}

}
Немного очеловечил ) типа бот задумался после ввода пробела или запятой, что писать дальше )
 

Dimionix

Moderator
Регистрация
09.04.2011
Сообщения
3 068
Благодарностей
3 100
Баллы
113
Немного очеловечил ) типа бот задумался после ввода пробела или запятой, что писать дальше )
Ещё человечнее очеловечил))
Теперь бот эмулирует печатание с ошибками (процент ошибок можно задать), которые через небольшое рандомное время удаляет Backspace'ом и вводит правильный символ.
Ошибки - это буквы стоящие рядом с правильной буквой на клавиатуре (RU + EN).
C#:
string str = project.Variables["Text"].Value; // переменная с текстом
int latencyMin = 15; // минимальная задержка для ввода одного символа, мс
int latencyMax = 501; // максимальная задержка для ввода одного символа, мс
int percentE = 5; // процент вероятных ошибок (на конечный результат не влияет)
Random rnd = new Random();

string[] ss = {
    "Q", "W", "E", "R", "T", "Y", "U", "I", "O", "P", "A", "S", "D", "F", "G", "H", "J", "K", "L", "Z", "X", "C", "V", "B", "N", "M",
    "q", "w", "e", "r", "t", "y", "u", "i", "o", "p", "a", "s", "d", "f", "g", "h", "j", "k", "l", "z", "x", "c", "v", "b", "n", "m",
    "Ё", "Й", "Ц", "У", "К", "Е", "Н", "Г", "Ш", "Щ", "З", "Х", "Ъ", "Ф", "Ы", "В", "А", "П", "Р", "О", "Л", "Д", "Ж", "Э", "Я", "Ч", "С", "М", "И", "Т", "Ь", "Б", "Ю",
    "ё", "й", "ц", "у", "к", "е", "н", "г", "ш", "щ", "з", "х", "ъ", "ф", "ы", "в", "а", "п", "р", "о", "л", "д", "ж", "э", "я", "ч", "с", "м", "и", "т", "ь", "б", "ю"
};

string[] ssE = {
    "{W|A}", "{Q|E|A|S}", "{W|R|S|D}", "{E|T|D|F}", "{R|Y|F|G}", "{T|U|G|H}", "{Y|I|H|J}", "{U|O|J|K}", "{I|P|K|L}", "{O|L}", "{Q|S|Z}", "{W|E|A|D|Z|X}", "{E|R|S|F|X|C}", "{R|T|D|G|C|V}", "{T|Y|F|H|V|B}", "{Y|U|G|J|B|N}", "{U|I|H|K|N|M}", "{I|O|J|L|M}", "{O|P|K}", "{A|S|X}", "{S|D|Z|C}", "{D|F|X|V}", "{F|G|C|B}", "{G|H|V|N}", "{H|J|B|M}", "{J|K|N}",
    "{w|a}", "{q|e|a|s}", "{w|r|s|d}", "{e|t|d|f}", "{r|y|f|g}", "{t|u|g|h}", "{y|i|h|j}", "{u|o|j|k}", "{i|p|k|l}", "{o|l}", "{q|s|z}", "{w|e|a|d|z|x}", "{e|r|s|f|x|c}", "{r|t|d|g|c|v}", "{t|y|f|h|v|b}", "{y|u|g|j|b|n}", "{u|i|h|k|n|m}", "{i|o|j|l|m}", "{o|p|k}", "{a|s|x}", "{s|d|z|c}", "{d|f|x|v}", "{f|g|c|b}", "{g|h|v|n}", "{h|j|b|m}", "{j|k|n}",
    "!", "{Ц|Ф}", "{Й|У|Ф|Ы}", "{Ц|К|Ы|В}", "{У|Е|В|А}", "{К|Н|А|П}", "{Е|Г|П|Р}", "{Н|Ш|Р|О}", "{Г|Щ|О|Л}", "{Ш|З|Л|Д}", "{Щ|Х|Д|Ж}", "{З|Ъ|Ж|Э}", "{Х|Э}", "{Й|Ы|Я}", "{Ц|У|Ф|В|Я|Ч}", "{У|К|Ы|А|Ч|С}", "{К|Е|В|П|С|М}", "{Е|Н|А|Р|М|И}", "{Н|Г|П|О|И|Т}", "{Г|Ш|Р|Л|Т|Ь}", "{Ш|Щ|О|Д|Ь|Б}", "{Щ|З|Л|Ж|Б|Ю}", "{З|Х|Д|Э|Ю}", "{Х|Ъ|Ж}", "{Ф|Ы|Ч}", "{Ы|В|Я|С}", "{В|А|Ч|М}", "{А|П|С|И}", "{П|Р|М|Т}", "{Р|О|И|Ь}", "{О|Л|Т|Б}", "{Л|Д|Ь|Ю}", "{Д|Ж|Б}",
    "1", "{ц|ф}", "{й|у|ф|ы}", "{ц|к|ы|в}", "{у|е|в|а}", "{к|н|а|п}", "{е|г|п|р}", "{н|ш|р|о}", "{г|щ|о|л}", "{ш|з|л|д}", "{щ|х|д|ж}", "{з|ъ|ж|э}", "{х|э}", "{й|ы|я}", "{ц|у|ф|в|я|ч}", "{у|к|ы|а|ч|с}", "{к|е|в|п|с|м}", "{е|н|а|р|м|и}", "{н|г|п|о|и|т}", "{г|ш|р|л|т|ь}", "{ш|щ|о|д|ь|б}", "{щ|з|л|ж|б|ю}", "{з|х|д|э|ю}", "{х|ъ|ж}", "{ф|ы|ч}", "{ы|в|я|с}", "{в|а|ч|м}", "{а|п|с|и}", "{п|р|м|т}", "{р|о|и|ь}", "{о|л|т|б}", "{л|д|ь|ю}", "{д|ж|б}"
};

string strE = str;
if (percentE > 0) {
    for (int i = 0; i < strE.Length; i++) {
        if (rnd.Next(100) <= percentE) {
            string s = strE[i].ToString();
            for (int j = 0; j < ss.Count(); j++) {
                if (s == ss[j])
                    strE = strE.Remove(i, 1).Insert(i, TextProcessing.Spintax(ssE[j]));
            }
        }
    }
}

instance.WaitFieldEmulationDelay();
for (int i = 0; i < str.Count(); i++) {
    string s = str[i].ToString();
    string sE = strE[i].ToString();
    int latency = rnd.Next(latencyMin, latencyMax);
    if (s == " " || s == "," || s == ".")
        latency = latency * 2;
    if (s == sE)
        instance.SendText(s, latency);
    else {
        instance.SendText(sE, latency);
        Thread.Sleep(latency * 3);
        instance.SendText("{BACKSPACE}", latency);
        Thread.Sleep(latency * 2);
        instance.SendText(s, latency);
    }
}
 

jun_dev

Пользователь
Регистрация
04.08.2017
Сообщения
121
Благодарностей
7
Баллы
18

inotoxic

Client
Регистрация
20.04.2015
Сообщения
354
Благодарностей
162
Баллы
43
  • Спасибо
Реакции: Mikhail B.

Peplos

Client
Регистрация
31.07.2018
Сообщения
28
Благодарностей
5
Баллы
3
Ещё человечнее очеловечил))
Теперь бот эмулирует печатание с ошибками (процент ошибок можно задать), которые через небольшое рандомное время удаляет Backspace'ом и вводит правильный символ.
Ошибки - это буквы стоящие рядом с правильной буквой на клавиатуре (RU + EN).
C#:
string str = project.Variables["Text"].Value; // переменная с текстом
int latencyMin = 15; // минимальная задержка для ввода одного символа, мс
int latencyMax = 501; // максимальная задержка для ввода одного символа, мс
int percentE = 5; // процент вероятных ошибок (на конечный результат не влияет)
Random rnd = new Random();

string[] ss = {
    "Q", "W", "E", "R", "T", "Y", "U", "I", "O", "P", "A", "S", "D", "F", "G", "H", "J", "K", "L", "Z", "X", "C", "V", "B", "N", "M",
    "q", "w", "e", "r", "t", "y", "u", "i", "o", "p", "a", "s", "d", "f", "g", "h", "j", "k", "l", "z", "x", "c", "v", "b", "n", "m",
    "Ё", "Й", "Ц", "У", "К", "Е", "Н", "Г", "Ш", "Щ", "З", "Х", "Ъ", "Ф", "Ы", "В", "А", "П", "Р", "О", "Л", "Д", "Ж", "Э", "Я", "Ч", "С", "М", "И", "Т", "Ь", "Б", "Ю",
    "ё", "й", "ц", "у", "к", "е", "н", "г", "ш", "щ", "з", "х", "ъ", "ф", "ы", "в", "а", "п", "р", "о", "л", "д", "ж", "э", "я", "ч", "с", "м", "и", "т", "ь", "б", "ю"
};

string[] ssE = {
    "{W|A}", "{Q|E|A|S}", "{W|R|S|D}", "{E|T|D|F}", "{R|Y|F|G}", "{T|U|G|H}", "{Y|I|H|J}", "{U|O|J|K}", "{I|P|K|L}", "{O|L}", "{Q|S|Z}", "{W|E|A|D|Z|X}", "{E|R|S|F|X|C}", "{R|T|D|G|C|V}", "{T|Y|F|H|V|B}", "{Y|U|G|J|B|N}", "{U|I|H|K|N|M}", "{I|O|J|L|M}", "{O|P|K}", "{A|S|X}", "{S|D|Z|C}", "{D|F|X|V}", "{F|G|C|B}", "{G|H|V|N}", "{H|J|B|M}", "{J|K|N}",
    "{w|a}", "{q|e|a|s}", "{w|r|s|d}", "{e|t|d|f}", "{r|y|f|g}", "{t|u|g|h}", "{y|i|h|j}", "{u|o|j|k}", "{i|p|k|l}", "{o|l}", "{q|s|z}", "{w|e|a|d|z|x}", "{e|r|s|f|x|c}", "{r|t|d|g|c|v}", "{t|y|f|h|v|b}", "{y|u|g|j|b|n}", "{u|i|h|k|n|m}", "{i|o|j|l|m}", "{o|p|k}", "{a|s|x}", "{s|d|z|c}", "{d|f|x|v}", "{f|g|c|b}", "{g|h|v|n}", "{h|j|b|m}", "{j|k|n}",
    "!", "{Ц|Ф}", "{Й|У|Ф|Ы}", "{Ц|К|Ы|В}", "{У|Е|В|А}", "{К|Н|А|П}", "{Е|Г|П|Р}", "{Н|Ш|Р|О}", "{Г|Щ|О|Л}", "{Ш|З|Л|Д}", "{Щ|Х|Д|Ж}", "{З|Ъ|Ж|Э}", "{Х|Э}", "{Й|Ы|Я}", "{Ц|У|Ф|В|Я|Ч}", "{У|К|Ы|А|Ч|С}", "{К|Е|В|П|С|М}", "{Е|Н|А|Р|М|И}", "{Н|Г|П|О|И|Т}", "{Г|Ш|Р|Л|Т|Ь}", "{Ш|Щ|О|Д|Ь|Б}", "{Щ|З|Л|Ж|Б|Ю}", "{З|Х|Д|Э|Ю}", "{Х|Ъ|Ж}", "{Ф|Ы|Ч}", "{Ы|В|Я|С}", "{В|А|Ч|М}", "{А|П|С|И}", "{П|Р|М|Т}", "{Р|О|И|Ь}", "{О|Л|Т|Б}", "{Л|Д|Ь|Ю}", "{Д|Ж|Б}",
    "1", "{ц|ф}", "{й|у|ф|ы}", "{ц|к|ы|в}", "{у|е|в|а}", "{к|н|а|п}", "{е|г|п|р}", "{н|ш|р|о}", "{г|щ|о|л}", "{ш|з|л|д}", "{щ|х|д|ж}", "{з|ъ|ж|э}", "{х|э}", "{й|ы|я}", "{ц|у|ф|в|я|ч}", "{у|к|ы|а|ч|с}", "{к|е|в|п|с|м}", "{е|н|а|р|м|и}", "{н|г|п|о|и|т}", "{г|ш|р|л|т|ь}", "{ш|щ|о|д|ь|б}", "{щ|з|л|ж|б|ю}", "{з|х|д|э|ю}", "{х|ъ|ж}", "{ф|ы|ч}", "{ы|в|я|с}", "{в|а|ч|м}", "{а|п|с|и}", "{п|р|м|т}", "{р|о|и|ь}", "{о|л|т|б}", "{л|д|ь|ю}", "{д|ж|б}"
};

string strE = str;
if (percentE > 0) {
    for (int i = 0; i < strE.Length; i++) {
        if (rnd.Next(100) <= percentE) {
            string s = strE[i].ToString();
            for (int j = 0; j < ss.Count(); j++) {
                if (s == ss[j])
                    strE = strE.Remove(i, 1).Insert(i, TextProcessing.Spintax(ssE[j]));
            }
        }
    }
}

instance.WaitFieldEmulationDelay();
for (int i = 0; i < str.Count(); i++) {
    string s = str[i].ToString();
    string sE = strE[i].ToString();
    int latency = rnd.Next(latencyMin, latencyMax);
    if (s == " " || s == "," || s == ".")
        latency = latency * 2;
    if (s == sE)
        instance.SendText(s, latency);
    else {
        instance.SendText(sE, latency);
        Thread.Sleep(latency * 3);
        instance.SendText("{BACKSPACE}", latency);
        Thread.Sleep(latency * 2);
        instance.SendText(s, latency);
    }
}
Если переменная состоит из нескольких строк, например

mail.bk.ru
mail2.bk.ru
mail3.bk.ru

то при вводе этой переменной с помощью вышеуказанного кода она записывается в одну строку - mail.bk.rumail2.bk.rumail3.bk.ru. Если вводить с помощью стандартного кубика - то все норм, пишется в столбик как и должно. Подскажите пожалуйста, как сделать так, чтобы код вводил переменную столбиком.
 

Ostap1992

Client
Регистрация
26.02.2020
Сообщения
42
Благодарностей
3
Баллы
8
А зачем? Вы думаете, что сайты считают, сколько времени Вы тратите на заполнение одного поля?
Это можно сделать через С код, стандартными методами нельзя.
есть сайты у которых стоит акамаи но в него входят разные параметры кто то и мышку отслеживает
 

oleg66

Client
Регистрация
30.03.2016
Сообщения
88
Благодарностей
24
Баллы
8
еще вопрос - как сделать чтобы с цифрами также было (например ввожу в поле логин цифры телефона)
добавил цифры по аналогии с буквами - но ошибку выдает
"Выполнение действия CSharp OwnCode: Ввод логина - печатание с ошибками. [Строка: 33; Столбец: 20] Индекс находился вне границ массива."

C#:
string str = project.Variables["TabTelefon"].Value; // переменная с текстом
int latencyMin = 15; // минимальная задержка для ввода одного символа, мс
int latencyMax = 501; // максимальная задержка для ввода одного символа, мс
int percentE = 15; // процент вероятных ошибок (на конечный результат не влияет)
Random rnd = new Random();

string[] ss = {
    "Q", "W", "E", "R", "T", "Y", "U", "I", "O", "P", "A", "S", "D", "F", "G", "H", "J", "K", "L", "Z", "X", "C", "V", "B", "N", "M",
    "q", "w", "e", "r", "t", "y", "u", "i", "o", "p", "a", "s", "d", "f", "g", "h", "j", "k", "l", "z", "x", "c", "v", "b", "n", "m",
    "Ё", "Й", "Ц", "У", "К", "Е", "Н", "Г", "Ш", "Щ", "З", "Х", "Ъ", "Ф", "Ы", "В", "А", "П", "Р", "О", "Л", "Д", "Ж", "Э", "Я", "Ч", "С", "М", "И", "Т", "Ь", "Б", "Ю",
    "ё", "й", "ц", "у", "к", "е", "н", "г", "ш", "щ", "з", "х", "ъ", "ф", "ы", "в", "а", "п", "р", "о", "л", "д", "ж", "э", "я", "ч", "с", "м", "и", "т", "ь", "б", "ю",
    "0","1", "2", "3", "4", "5", "6", "7", "8", "9"
};

string[] ssE = {
    "{W|A}", "{Q|E|A|S}", "{W|R|S|D}", "{E|T|D|F}", "{R|Y|F|G}", "{T|U|G|H}", "{Y|I|H|J}", "{U|O|J|K}", "{I|P|K|L}", "{O|L}", "{Q|S|Z}", "{W|E|A|D|Z|X}", "{E|R|S|F|X|C}", "{R|T|D|G|C|V}", "{T|Y|F|H|V|B}", "{Y|U|G|J|B|N}", "{U|I|H|K|N|M}", "{I|O|J|L|M}", "{O|P|K}", "{A|S|X}", "{S|D|Z|C}", "{D|F|X|V}", "{F|G|C|B}", "{G|H|V|N}", "{H|J|B|M}", "{J|K|N}",
    "{w|a}", "{q|e|a|s}", "{w|r|s|d}", "{e|t|d|f}", "{r|y|f|g}", "{t|u|g|h}", "{y|i|h|j}", "{u|o|j|k}", "{i|p|k|l}", "{o|l}", "{q|s|z}", "{w|e|a|d|z|x}", "{e|r|s|f|x|c}", "{r|t|d|g|c|v}", "{t|y|f|h|v|b}", "{y|u|g|j|b|n}", "{u|i|h|k|n|m}", "{i|o|j|l|m}", "{o|p|k}", "{a|s|x}", "{s|d|z|c}", "{d|f|x|v}", "{f|g|c|b}", "{g|h|v|n}", "{h|j|b|m}", "{j|k|n}",
    "!", "{Ц|Ф}", "{Й|У|Ф|Ы}", "{Ц|К|Ы|В}", "{У|Е|В|А}", "{К|Н|А|П}", "{Е|Г|П|Р}", "{Н|Ш|Р|О}", "{Г|Щ|О|Л}", "{Ш|З|Л|Д}", "{Щ|Х|Д|Ж}", "{З|Ъ|Ж|Э}", "{Х|Э}", "{Й|Ы|Я}", "{Ц|У|Ф|В|Я|Ч}", "{У|К|Ы|А|Ч|С}", "{К|Е|В|П|С|М}", "{Е|Н|А|Р|М|И}", "{Н|Г|П|О|И|Т}", "{Г|Ш|Р|Л|Т|Ь}", "{Ш|Щ|О|Д|Ь|Б}", "{Щ|З|Л|Ж|Б|Ю}", "{З|Х|Д|Э|Ю}", "{Х|Ъ|Ж}", "{Ф|Ы|Ч}", "{Ы|В|Я|С}", "{В|А|Ч|М}", "{А|П|С|И}", "{П|Р|М|Т}", "{Р|О|И|Ь}", "{О|Л|Т|Б}", "{Л|Д|Ь|Ю}", "{Д|Ж|Б}",
    "{1|2}", "{3|5|7|9}", "{2|4|6|8}", "{1|3|5|7}", "{3|4|7|8}", "{2|3|5|7}", "{1|2|4|5}", "{0|2|4|6}", "{0|1|3|4}", "{9|7|1|0}", "{8|6|2|0}", "{0|9}", "{7|1|5}", "{2|9|7|5|6|1}", "{0|1|4|5|8|9}", "{2|1|4|3|7|6}", "{6|0|5|1|4|2}", "{9|1|8|2|7|3}", "{8|2|7|3|6|4}", "{7|3|6|4|5|3}", "{6|5|4|7|1|0}", "{1|9|3|7|8}", "{5|0|3}", "{8|9|2}", "{3|6|8|0}", "{4|6|7|0}", "{5|1|6|2}", "{7|4|2|3}", "{8|1|4|7}", "{9|8|0|2}", "{0|5|7|2}", "{2|8|4}"
};

string strE = str;
if (percentE > 0) {
    for (int i = 0; i < strE.Length; i++) {
        if (rnd.Next(100) <= percentE) {
            string s = strE[i].ToString();
            for (int j = 0; j < ss.Count(); j++) {
                if (s == ss[j])
                    strE = strE.Remove(i, 1).Insert(i, TextProcessing.Spintax(ssE[j]));
            }
        }
    }
}

instance.WaitFieldEmulationDelay();
for (int i = 0; i < str.Count(); i++) {
    string s = str[i].ToString();
    string sE = strE[i].ToString();
    int latency = rnd.Next(latencyMin, latencyMax);
    if (s == " " || s == "," || s == ".")
        latency = latency * 2;
    if (s == sE)
        instance.SendText(s, latency);
    else {
        instance.SendText(sE, latency);
        Thread.Sleep(latency * 3);
        instance.SendText("{BACKSPACE}", latency);
        Thread.Sleep(latency * 2);
        instance.SendText(s, latency);
    }
}
 

djaga

Client
Регистрация
26.04.2020
Сообщения
505
Благодарностей
1 052
Баллы
93
еще вопрос - как сделать чтобы с цифрами также было (например ввожу в поле логин цифры телефона)
добавил цифры по аналогии с буквами - но ошибку выдает
"Выполнение действия CSharp OwnCode: Ввод логина - печатание с ошибками. [Строка: 33; Столбец: 20] Индекс находился вне границ массива."

C#:
string str = project.Variables["TabTelefon"].Value; // переменная с текстом
int latencyMin = 15; // минимальная задержка для ввода одного символа, мс
int latencyMax = 501; // максимальная задержка для ввода одного символа, мс
int percentE = 15; // процент вероятных ошибок (на конечный результат не влияет)
Random rnd = new Random();

string[] ss = {
    "Q", "W", "E", "R", "T", "Y", "U", "I", "O", "P", "A", "S", "D", "F", "G", "H", "J", "K", "L", "Z", "X", "C", "V", "B", "N", "M",
    "q", "w", "e", "r", "t", "y", "u", "i", "o", "p", "a", "s", "d", "f", "g", "h", "j", "k", "l", "z", "x", "c", "v", "b", "n", "m",
    "Ё", "Й", "Ц", "У", "К", "Е", "Н", "Г", "Ш", "Щ", "З", "Х", "Ъ", "Ф", "Ы", "В", "А", "П", "Р", "О", "Л", "Д", "Ж", "Э", "Я", "Ч", "С", "М", "И", "Т", "Ь", "Б", "Ю",
    "ё", "й", "ц", "у", "к", "е", "н", "г", "ш", "щ", "з", "х", "ъ", "ф", "ы", "в", "а", "п", "р", "о", "л", "д", "ж", "э", "я", "ч", "с", "м", "и", "т", "ь", "б", "ю",
    "0","1", "2", "3", "4", "5", "6", "7", "8", "9"
};

string[] ssE = {
    "{W|A}", "{Q|E|A|S}", "{W|R|S|D}", "{E|T|D|F}", "{R|Y|F|G}", "{T|U|G|H}", "{Y|I|H|J}", "{U|O|J|K}", "{I|P|K|L}", "{O|L}", "{Q|S|Z}", "{W|E|A|D|Z|X}", "{E|R|S|F|X|C}", "{R|T|D|G|C|V}", "{T|Y|F|H|V|B}", "{Y|U|G|J|B|N}", "{U|I|H|K|N|M}", "{I|O|J|L|M}", "{O|P|K}", "{A|S|X}", "{S|D|Z|C}", "{D|F|X|V}", "{F|G|C|B}", "{G|H|V|N}", "{H|J|B|M}", "{J|K|N}",
    "{w|a}", "{q|e|a|s}", "{w|r|s|d}", "{e|t|d|f}", "{r|y|f|g}", "{t|u|g|h}", "{y|i|h|j}", "{u|o|j|k}", "{i|p|k|l}", "{o|l}", "{q|s|z}", "{w|e|a|d|z|x}", "{e|r|s|f|x|c}", "{r|t|d|g|c|v}", "{t|y|f|h|v|b}", "{y|u|g|j|b|n}", "{u|i|h|k|n|m}", "{i|o|j|l|m}", "{o|p|k}", "{a|s|x}", "{s|d|z|c}", "{d|f|x|v}", "{f|g|c|b}", "{g|h|v|n}", "{h|j|b|m}", "{j|k|n}",
    "!", "{Ц|Ф}", "{Й|У|Ф|Ы}", "{Ц|К|Ы|В}", "{У|Е|В|А}", "{К|Н|А|П}", "{Е|Г|П|Р}", "{Н|Ш|Р|О}", "{Г|Щ|О|Л}", "{Ш|З|Л|Д}", "{Щ|Х|Д|Ж}", "{З|Ъ|Ж|Э}", "{Х|Э}", "{Й|Ы|Я}", "{Ц|У|Ф|В|Я|Ч}", "{У|К|Ы|А|Ч|С}", "{К|Е|В|П|С|М}", "{Е|Н|А|Р|М|И}", "{Н|Г|П|О|И|Т}", "{Г|Ш|Р|Л|Т|Ь}", "{Ш|Щ|О|Д|Ь|Б}", "{Щ|З|Л|Ж|Б|Ю}", "{З|Х|Д|Э|Ю}", "{Х|Ъ|Ж}", "{Ф|Ы|Ч}", "{Ы|В|Я|С}", "{В|А|Ч|М}", "{А|П|С|И}", "{П|Р|М|Т}", "{Р|О|И|Ь}", "{О|Л|Т|Б}", "{Л|Д|Ь|Ю}", "{Д|Ж|Б}",
    "{1|2}", "{3|5|7|9}", "{2|4|6|8}", "{1|3|5|7}", "{3|4|7|8}", "{2|3|5|7}", "{1|2|4|5}", "{0|2|4|6}", "{0|1|3|4}", "{9|7|1|0}", "{8|6|2|0}", "{0|9}", "{7|1|5}", "{2|9|7|5|6|1}", "{0|1|4|5|8|9}", "{2|1|4|3|7|6}", "{6|0|5|1|4|2}", "{9|1|8|2|7|3}", "{8|2|7|3|6|4}", "{7|3|6|4|5|3}", "{6|5|4|7|1|0}", "{1|9|3|7|8}", "{5|0|3}", "{8|9|2}", "{3|6|8|0}", "{4|6|7|0}", "{5|1|6|2}", "{7|4|2|3}", "{8|1|4|7}", "{9|8|0|2}", "{0|5|7|2}", "{2|8|4}"
};

string strE = str;
if (percentE > 0) {
    for (int i = 0; i < strE.Length; i++) {
        if (rnd.Next(100) <= percentE) {
            string s = strE[i].ToString();
            for (int j = 0; j < ss.Count(); j++) {
                if (s == ss[j])
                    strE = strE.Remove(i, 1).Insert(i, TextProcessing.Spintax(ssE[j]));
            }
        }
    }
}

instance.WaitFieldEmulationDelay();
for (int i = 0; i < str.Count(); i++) {
    string s = str[i].ToString();
    string sE = strE[i].ToString();
    int latency = rnd.Next(latencyMin, latencyMax);
    if (s == " " || s == "," || s == ".")
        latency = latency * 2;
    if (s == sE)
        instance.SendText(s, latency);
    else {
        instance.SendText(sE, latency);
        Thread.Sleep(latency * 3);
        instance.SendText("{BACKSPACE}", latency);
        Thread.Sleep(latency * 2);
        instance.SendText(s, latency);
    }
}
Привет.
Поправил вашу ошибку. Теперь все работает.)

Имитация ошибок при вводе текста и цифр:
string str = project.Variables["Text"].Value; // переменная с текстом
int latencyMin = 15; // минимальная задержка для ввода одного символа, мс
int latencyMax = 501; // максимальная задержка для ввода одного символа, мс
int percentE = 55; // процент вероятных ошибок (на конечный результат не влияет)
Random rnd = new Random();

string[] ss = {
    "Q", "W", "E", "R", "T", "Y", "U", "I", "O", "P", "A", "S", "D", "F", "G", "H", "J", "K", "L", "Z", "X", "C", "V", "B", "N", "M",
    "q", "w", "e", "r", "t", "y", "u", "i", "o", "p", "a", "s", "d", "f", "g", "h", "j", "k", "l", "z", "x", "c", "v", "b", "n", "m",
    "Ё", "Й", "Ц", "У", "К", "Е", "Н", "Г", "Ш", "Щ", "З", "Х", "Ъ", "Ф", "Ы", "В", "А", "П", "Р", "О", "Л", "Д", "Ж", "Э", "Я", "Ч", "С", "М", "И", "Т", "Ь", "Б", "Ю",
    "ё", "й", "ц", "у", "к", "е", "н", "г", "ш", "щ", "з", "х", "ъ", "ф", "ы", "в", "а", "п", "р", "о", "л", "д", "ж", "э", "я", "ч", "с", "м", "и", "т", "ь", "б", "ю",
    "0","1", "2", "3", "4", "5", "6", "7", "8", "9"
};

string[] ssE = {
    "{W|A}", "{Q|E|A|S}", "{W|R|S|D}", "{E|T|D|F}", "{R|Y|F|G}", "{T|U|G|H}", "{Y|I|H|J}", "{U|O|J|K}", "{I|P|K|L}", "{O|L}", "{Q|S|Z}", "{W|E|A|D|Z|X}", "{E|R|S|F|X|C}", "{R|T|D|G|C|V}", "{T|Y|F|H|V|B}", "{Y|U|G|J|B|N}", "{U|I|H|K|N|M}", "{I|O|J|L|M}", "{O|P|K}", "{A|S|X}", "{S|D|Z|C}", "{D|F|X|V}", "{F|G|C|B}", "{G|H|V|N}", "{H|J|B|M}", "{J|K|N}",
    "{w|a}", "{q|e|a|s}", "{w|r|s|d}", "{e|t|d|f}", "{r|y|f|g}", "{t|u|g|h}", "{y|i|h|j}", "{u|o|j|k}", "{i|p|k|l}", "{o|l}", "{q|s|z}", "{w|e|a|d|z|x}", "{e|r|s|f|x|c}", "{r|t|d|g|c|v}", "{t|y|f|h|v|b}", "{y|u|g|j|b|n}", "{u|i|h|k|n|m}", "{i|o|j|l|m}", "{o|p|k}", "{a|s|x}", "{s|d|z|c}", "{d|f|x|v}", "{f|g|c|b}", "{g|h|v|n}", "{h|j|b|m}", "{j|k|n}",
    "!", "{Ц|Ф}", "{Й|У|Ф|Ы}", "{Ц|К|Ы|В}", "{У|Е|В|А}", "{К|Н|А|П}", "{Е|Г|П|Р}", "{Н|Ш|Р|О}", "{Г|Щ|О|Л}", "{Ш|З|Л|Д}", "{Щ|Х|Д|Ж}", "{З|Ъ|Ж|Э}", "{Х|Э}", "{Й|Ы|Я}", "{Ц|У|Ф|В|Я|Ч}", "{У|К|Ы|А|Ч|С}", "{К|Е|В|П|С|М}", "{Е|Н|А|Р|М|И}", "{Н|Г|П|О|И|Т}", "{Г|Ш|Р|Л|Т|Ь}", "{Ш|Щ|О|Д|Ь|Б}", "{Щ|З|Л|Ж|Б|Ю}", "{З|Х|Д|Э|Ю}", "{Х|Ъ|Ж}", "{Ф|Ы|Ч}", "{Ы|В|Я|С}", "{В|А|Ч|М}", "{А|П|С|И}", "{П|Р|М|Т}", "{Р|О|И|Ь}", "{О|Л|Т|Б}", "{Л|Д|Ь|Ю}", "{Д|Ж|Б}",
    "1", "{ц|ф}", "{й|у|ф|ы}", "{ц|к|ы|в}", "{у|е|в|а}", "{к|н|а|п}", "{е|г|п|р}", "{н|ш|р|о}", "{г|щ|о|л}", "{ш|з|л|д}", "{щ|х|д|ж}", "{з|ъ|ж|э}", "{х|э}", "{й|ы|я}", "{ц|у|ф|в|я|ч}", "{у|к|ы|а|ч|с}", "{к|е|в|п|с|м}", "{е|н|а|р|м|и}", "{н|г|п|о|и|т}", "{г|ш|р|л|т|ь}", "{ш|щ|о|д|ь|б}", "{щ|з|л|ж|б|ю}", "{з|х|д|э|ю}", "{х|ъ|ж}", "{ф|ы|ч}", "{ы|в|я|с}", "{в|а|ч|м}", "{а|п|с|и}", "{п|р|м|т}", "{р|о|и|ь}", "{о|л|т|б}", "{л|д|ь|ю}", "{д|ж|б}",
    "{1|2}", "{3|5|7|9}", "{2|4|6|8}", "{1|3|5|7}", "{3|4|7|8}", "{2|3|5|7}", "{1|2|4|5}", "{0|2|4|6}", "{0|1|3|4}", "{9|7|1|0}"
};

string strE = str;
if (percentE > 0) {
    for (int i = 0; i < strE.Length; i++) {
        if (rnd.Next(100) <= percentE) {
            string s = strE[i].ToString();
            for (int j = 0; j < ss.Count(); j++) {
                if (s == ss[j])
                    strE = strE.Remove(i, 1).Insert(i, TextProcessing.Spintax(ssE[j]));
            }
        }
    }
}

instance.WaitFieldEmulationDelay();
for (int i = 0; i < str.Count(); i++) {
    string s = str[i].ToString();
    string sE = strE[i].ToString();
    int latency = rnd.Next(latencyMin, latencyMax);
    if (s == " " || s == "," || s == ".")
        latency = latency * 2;
    if (s == sE)
        instance.SendText(s, latency);
    else {
        instance.SendText(sE, latency);
        Thread.Sleep(latency * 3);
        instance.SendText("{BACKSPACE}", latency);
        Thread.Sleep(latency * 2);
        instance.SendText(s, latency);
    }
}
Приложил шаблон ↓
 

Вложения

oleg66

Client
Регистрация
30.03.2016
Сообщения
88
Благодарностей
24
Баллы
8
Благодарю djaga - все работает !
 

Krende1

Client
Регистрация
14.03.2022
Сообщения
226
Благодарностей
50
Баллы
28
Привет.
Поправил вашу ошибку. Теперь все работает.)

Имитация ошибок при вводе текста и цифр:
string str = project.Variables["Text"].Value; // переменная с текстом
int latencyMin = 15; // минимальная задержка для ввода одного символа, мс
int latencyMax = 501; // максимальная задержка для ввода одного символа, мс
int percentE = 55; // процент вероятных ошибок (на конечный результат не влияет)
Random rnd = new Random();

string[] ss = {
    "Q", "W", "E", "R", "T", "Y", "U", "I", "O", "P", "A", "S", "D", "F", "G", "H", "J", "K", "L", "Z", "X", "C", "V", "B", "N", "M",
    "q", "w", "e", "r", "t", "y", "u", "i", "o", "p", "a", "s", "d", "f", "g", "h", "j", "k", "l", "z", "x", "c", "v", "b", "n", "m",
    "Ё", "Й", "Ц", "У", "К", "Е", "Н", "Г", "Ш", "Щ", "З", "Х", "Ъ", "Ф", "Ы", "В", "А", "П", "Р", "О", "Л", "Д", "Ж", "Э", "Я", "Ч", "С", "М", "И", "Т", "Ь", "Б", "Ю",
    "ё", "й", "ц", "у", "к", "е", "н", "г", "ш", "щ", "з", "х", "ъ", "ф", "ы", "в", "а", "п", "р", "о", "л", "д", "ж", "э", "я", "ч", "с", "м", "и", "т", "ь", "б", "ю",
    "0","1", "2", "3", "4", "5", "6", "7", "8", "9"
};

string[] ssE = {
    "{W|A}", "{Q|E|A|S}", "{W|R|S|D}", "{E|T|D|F}", "{R|Y|F|G}", "{T|U|G|H}", "{Y|I|H|J}", "{U|O|J|K}", "{I|P|K|L}", "{O|L}", "{Q|S|Z}", "{W|E|A|D|Z|X}", "{E|R|S|F|X|C}", "{R|T|D|G|C|V}", "{T|Y|F|H|V|B}", "{Y|U|G|J|B|N}", "{U|I|H|K|N|M}", "{I|O|J|L|M}", "{O|P|K}", "{A|S|X}", "{S|D|Z|C}", "{D|F|X|V}", "{F|G|C|B}", "{G|H|V|N}", "{H|J|B|M}", "{J|K|N}",
    "{w|a}", "{q|e|a|s}", "{w|r|s|d}", "{e|t|d|f}", "{r|y|f|g}", "{t|u|g|h}", "{y|i|h|j}", "{u|o|j|k}", "{i|p|k|l}", "{o|l}", "{q|s|z}", "{w|e|a|d|z|x}", "{e|r|s|f|x|c}", "{r|t|d|g|c|v}", "{t|y|f|h|v|b}", "{y|u|g|j|b|n}", "{u|i|h|k|n|m}", "{i|o|j|l|m}", "{o|p|k}", "{a|s|x}", "{s|d|z|c}", "{d|f|x|v}", "{f|g|c|b}", "{g|h|v|n}", "{h|j|b|m}", "{j|k|n}",
    "!", "{Ц|Ф}", "{Й|У|Ф|Ы}", "{Ц|К|Ы|В}", "{У|Е|В|А}", "{К|Н|А|П}", "{Е|Г|П|Р}", "{Н|Ш|Р|О}", "{Г|Щ|О|Л}", "{Ш|З|Л|Д}", "{Щ|Х|Д|Ж}", "{З|Ъ|Ж|Э}", "{Х|Э}", "{Й|Ы|Я}", "{Ц|У|Ф|В|Я|Ч}", "{У|К|Ы|А|Ч|С}", "{К|Е|В|П|С|М}", "{Е|Н|А|Р|М|И}", "{Н|Г|П|О|И|Т}", "{Г|Ш|Р|Л|Т|Ь}", "{Ш|Щ|О|Д|Ь|Б}", "{Щ|З|Л|Ж|Б|Ю}", "{З|Х|Д|Э|Ю}", "{Х|Ъ|Ж}", "{Ф|Ы|Ч}", "{Ы|В|Я|С}", "{В|А|Ч|М}", "{А|П|С|И}", "{П|Р|М|Т}", "{Р|О|И|Ь}", "{О|Л|Т|Б}", "{Л|Д|Ь|Ю}", "{Д|Ж|Б}",
    "1", "{ц|ф}", "{й|у|ф|ы}", "{ц|к|ы|в}", "{у|е|в|а}", "{к|н|а|п}", "{е|г|п|р}", "{н|ш|р|о}", "{г|щ|о|л}", "{ш|з|л|д}", "{щ|х|д|ж}", "{з|ъ|ж|э}", "{х|э}", "{й|ы|я}", "{ц|у|ф|в|я|ч}", "{у|к|ы|а|ч|с}", "{к|е|в|п|с|м}", "{е|н|а|р|м|и}", "{н|г|п|о|и|т}", "{г|ш|р|л|т|ь}", "{ш|щ|о|д|ь|б}", "{щ|з|л|ж|б|ю}", "{з|х|д|э|ю}", "{х|ъ|ж}", "{ф|ы|ч}", "{ы|в|я|с}", "{в|а|ч|м}", "{а|п|с|и}", "{п|р|м|т}", "{р|о|и|ь}", "{о|л|т|б}", "{л|д|ь|ю}", "{д|ж|б}",
    "{1|2}", "{3|5|7|9}", "{2|4|6|8}", "{1|3|5|7}", "{3|4|7|8}", "{2|3|5|7}", "{1|2|4|5}", "{0|2|4|6}", "{0|1|3|4}", "{9|7|1|0}"
};

string strE = str;
if (percentE > 0) {
    for (int i = 0; i < strE.Length; i++) {
        if (rnd.Next(100) <= percentE) {
            string s = strE[i].ToString();
            for (int j = 0; j < ss.Count(); j++) {
                if (s == ss[j])
                    strE = strE.Remove(i, 1).Insert(i, TextProcessing.Spintax(ssE[j]));
            }
        }
    }
}

instance.WaitFieldEmulationDelay();
for (int i = 0; i < str.Count(); i++) {
    string s = str[i].ToString();
    string sE = strE[i].ToString();
    int latency = rnd.Next(latencyMin, latencyMax);
    if (s == " " || s == "," || s == ".")
        latency = latency * 2;
    if (s == sE)
        instance.SendText(s, latency);
    else {
        instance.SendText(sE, latency);
        Thread.Sleep(latency * 3);
        instance.SendText("{BACKSPACE}", latency);
        Thread.Sleep(latency * 2);
        instance.SendText(s, latency);
    }
}
Приложил шаблон ↓
объясните не понимающему в C#

97928

почему не хочет выполнять, если я цифры в переменные вставил? чтобы из меню можно было настраивать задержки
 

Sergodjan

Administrator
Команда форума
Регистрация
05.09.2012
Сообщения
19 458
Благодарностей
8 683
Баллы
113
почему не хочет выполнять, если я цифры в переменные вставил? чтобы из меню можно было настраивать задержки
Нужно сконвертировать эти переменные в числовые.
На форуме есть примеры методов конвертации, попробуйте поискать.
 
  • Спасибо
Реакции: Krende1

Krende1

Client
Регистрация
14.03.2022
Сообщения
226
Благодарностей
50
Баллы
28
Нужно сконвертировать эти переменные в числовые.
На форуме есть примеры методов конвертации, попробуйте поискать.
97929

сконвертировать получилось, а как теперь вставить в первоночальный код?

методом тыка не получилось
97930
 

Krende1

Client
Регистрация
14.03.2022
Сообщения
226
Благодарностей
50
Баллы
28

xDESTROYx

Client
Регистрация
21.09.2019
Сообщения
133
Благодарностей
18
Баллы
18
Привет.
Поправил вашу ошибку. Теперь все работает.)

Имитация ошибок при вводе текста и цифр:
string str = project.Variables["Text"].Value; // переменная с текстом
int latencyMin = 15; // минимальная задержка для ввода одного символа, мс
int latencyMax = 501; // максимальная задержка для ввода одного символа, мс
int percentE = 55; // процент вероятных ошибок (на конечный результат не влияет)
Random rnd = new Random();

string[] ss = {
    "Q", "W", "E", "R", "T", "Y", "U", "I", "O", "P", "A", "S", "D", "F", "G", "H", "J", "K", "L", "Z", "X", "C", "V", "B", "N", "M",
    "q", "w", "e", "r", "t", "y", "u", "i", "o", "p", "a", "s", "d", "f", "g", "h", "j", "k", "l", "z", "x", "c", "v", "b", "n", "m",
    "Ё", "Й", "Ц", "У", "К", "Е", "Н", "Г", "Ш", "Щ", "З", "Х", "Ъ", "Ф", "Ы", "В", "А", "П", "Р", "О", "Л", "Д", "Ж", "Э", "Я", "Ч", "С", "М", "И", "Т", "Ь", "Б", "Ю",
    "ё", "й", "ц", "у", "к", "е", "н", "г", "ш", "щ", "з", "х", "ъ", "ф", "ы", "в", "а", "п", "р", "о", "л", "д", "ж", "э", "я", "ч", "с", "м", "и", "т", "ь", "б", "ю",
    "0","1", "2", "3", "4", "5", "6", "7", "8", "9"
};

string[] ssE = {
    "{W|A}", "{Q|E|A|S}", "{W|R|S|D}", "{E|T|D|F}", "{R|Y|F|G}", "{T|U|G|H}", "{Y|I|H|J}", "{U|O|J|K}", "{I|P|K|L}", "{O|L}", "{Q|S|Z}", "{W|E|A|D|Z|X}", "{E|R|S|F|X|C}", "{R|T|D|G|C|V}", "{T|Y|F|H|V|B}", "{Y|U|G|J|B|N}", "{U|I|H|K|N|M}", "{I|O|J|L|M}", "{O|P|K}", "{A|S|X}", "{S|D|Z|C}", "{D|F|X|V}", "{F|G|C|B}", "{G|H|V|N}", "{H|J|B|M}", "{J|K|N}",
    "{w|a}", "{q|e|a|s}", "{w|r|s|d}", "{e|t|d|f}", "{r|y|f|g}", "{t|u|g|h}", "{y|i|h|j}", "{u|o|j|k}", "{i|p|k|l}", "{o|l}", "{q|s|z}", "{w|e|a|d|z|x}", "{e|r|s|f|x|c}", "{r|t|d|g|c|v}", "{t|y|f|h|v|b}", "{y|u|g|j|b|n}", "{u|i|h|k|n|m}", "{i|o|j|l|m}", "{o|p|k}", "{a|s|x}", "{s|d|z|c}", "{d|f|x|v}", "{f|g|c|b}", "{g|h|v|n}", "{h|j|b|m}", "{j|k|n}",
    "!", "{Ц|Ф}", "{Й|У|Ф|Ы}", "{Ц|К|Ы|В}", "{У|Е|В|А}", "{К|Н|А|П}", "{Е|Г|П|Р}", "{Н|Ш|Р|О}", "{Г|Щ|О|Л}", "{Ш|З|Л|Д}", "{Щ|Х|Д|Ж}", "{З|Ъ|Ж|Э}", "{Х|Э}", "{Й|Ы|Я}", "{Ц|У|Ф|В|Я|Ч}", "{У|К|Ы|А|Ч|С}", "{К|Е|В|П|С|М}", "{Е|Н|А|Р|М|И}", "{Н|Г|П|О|И|Т}", "{Г|Ш|Р|Л|Т|Ь}", "{Ш|Щ|О|Д|Ь|Б}", "{Щ|З|Л|Ж|Б|Ю}", "{З|Х|Д|Э|Ю}", "{Х|Ъ|Ж}", "{Ф|Ы|Ч}", "{Ы|В|Я|С}", "{В|А|Ч|М}", "{А|П|С|И}", "{П|Р|М|Т}", "{Р|О|И|Ь}", "{О|Л|Т|Б}", "{Л|Д|Ь|Ю}", "{Д|Ж|Б}",
    "1", "{ц|ф}", "{й|у|ф|ы}", "{ц|к|ы|в}", "{у|е|в|а}", "{к|н|а|п}", "{е|г|п|р}", "{н|ш|р|о}", "{г|щ|о|л}", "{ш|з|л|д}", "{щ|х|д|ж}", "{з|ъ|ж|э}", "{х|э}", "{й|ы|я}", "{ц|у|ф|в|я|ч}", "{у|к|ы|а|ч|с}", "{к|е|в|п|с|м}", "{е|н|а|р|м|и}", "{н|г|п|о|и|т}", "{г|ш|р|л|т|ь}", "{ш|щ|о|д|ь|б}", "{щ|з|л|ж|б|ю}", "{з|х|д|э|ю}", "{х|ъ|ж}", "{ф|ы|ч}", "{ы|в|я|с}", "{в|а|ч|м}", "{а|п|с|и}", "{п|р|м|т}", "{р|о|и|ь}", "{о|л|т|б}", "{л|д|ь|ю}", "{д|ж|б}",
    "{1|2}", "{3|5|7|9}", "{2|4|6|8}", "{1|3|5|7}", "{3|4|7|8}", "{2|3|5|7}", "{1|2|4|5}", "{0|2|4|6}", "{0|1|3|4}", "{9|7|1|0}"
};

string strE = str;
if (percentE > 0) {
    for (int i = 0; i < strE.Length; i++) {
        if (rnd.Next(100) <= percentE) {
            string s = strE[i].ToString();
            for (int j = 0; j < ss.Count(); j++) {
                if (s == ss[j])
                    strE = strE.Remove(i, 1).Insert(i, TextProcessing.Spintax(ssE[j]));
            }
        }
    }
}

instance.WaitFieldEmulationDelay();
for (int i = 0; i < str.Count(); i++) {
    string s = str[i].ToString();
    string sE = strE[i].ToString();
    int latency = rnd.Next(latencyMin, latencyMax);
    if (s == " " || s == "," || s == ".")
        latency = latency * 2;
    if (s == sE)
        instance.SendText(s, latency);
    else {
        instance.SendText(sE, latency);
        Thread.Sleep(latency * 3);
        instance.SendText("{BACKSPACE}", latency);
        Thread.Sleep(latency * 2);
        instance.SendText(s, latency);
    }
}
Приложил шаблон ↓
уважаемый, а можно еще добавить эмодзи как-то? делаю вставку контента через данный сниппет, бывают в тексте эмодзи он их пропускает...
 

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