1 место C# Sharp vs WebBrowser

lexone

Client
Регистрация
12.10.2012
Сообщения
420
Благодарностей
726
Баллы
93
Без имени-12.png





Делаем редиректы на post / get + размножаем одну ссылку на 1000 вариантов.




Скачать: https://yadi.sk/d/oGgaIGAAdWAMF


======================================
StringBuilder, String. Клеим и работаем со строками ...


1. Работаем с макросами.



Код:
var input = project.Variables["p"].Value;
var replacements = new Dictionary<string, string>()
    {
        { "[RANDOM]", project.Variables["qqqw"].Value },
        { "[WORD]", "Статья на форум)" }
    };

var outputBuilder = new StringBuilder(input);

foreach (var replacement in replacements)
{
    outputBuilder.Replace(replacement.Key, replacement.Value);
}

var result = outputBuilder.ToString();
return outputBuilder.ToString();
Конструкций может быть сколько угодно:

Код:
    {
        { "[RANDOM]", project.Variables["qqqw"].Value },
        { "[WORD]", "Статья на форум)" },
        { "Вечером", "Утром)" },
        { project.Variables["url"].Value, project.Variables["qqq"].Value }
    };
Для чего нужен этот сниппет?
  1. Если вы делаете на зенки дорген и нужно разбавлять текст и конструкции шаблона макросами.
  2. Быстрые вызовы-макросы для любого постинга. Например, нужно оставить в комментах на ютубе рандомную ссылку в средине текста, но сам макрос будет прописан в текстовом файле (а от туда вы не вызовите переменную). Тут нам и поможет этот сниппет.
  3. Любое кол-во макросов в одном экшене
---------------------------

2. Замена и метод Replace
Код:
string s = "Мама  мыла  раму. ";
string pattern = @"\s+";
string target = " ";
Regex regex = new Regex(pattern);
string result = regex.Replace(s, target);
return result;
Данная версия метода Replace принимает два параметра: строку с текстом, где надо выполнить замену, и сама строка замены. Так как в качестве шаблона выбрано выражение "\s+ (то есть наличие одного и более пробелов), метод Replace проходит по всему тексту и заменяет несколько подряд идущих пробелов ординарными.

Результатом обработки будет: Мама мыла раму. {вместо двух пробелов между словами, как было изначально} .
+ не забываем вместо слов подставлять переменные.

Код:
string s = project.Variables["url"].Value;
string pattern = @"\s+";
string target = " ";
Regex regex = new Regex(pattern);
string result = regex.Replace(s, target);
return result;
Или вот вариант покороче:
Входная строка: test.test......t.test.pdf
Код:
string filename = "test.test......t.test.pdf";
string newFilename = new Regex(@"\.(?!(\w{3,4}$))").Replace(filename, "");
return newFilename;
Результат: testtestttest.pdf

-----------------------

3. Обрезать, заменить , добавить.

Вход: Привет мир

Задача:
  1. Заменить мир на "world"
  2. На 7 символе вставить слово "компьютерный"
  3. В конец строчки добавить "!!!"
  4. удалить 6 символов, начиная с 1-го
Код:
StringBuilder sb = new StringBuilder("Привет мир");
sb.Append("!!!");
sb.Insert(7, "Компьютерный ");
Console.WriteLine(sb);
// заменяем слово
sb.Replace("мир", "world");
Console.WriteLine(sb);
// удаляем 6 символов, начиная с 1-го
sb.Remove(0, 6);
Console.WriteLine(sb);
// получаем строку из объекта StringBuilder
string s = sb.ToString();
Console.WriteLine(s);
return s;

Результат: Компьютерный world!!!

========================================

API - подтверждение по смс. Принимаем и обрабатываем смс на тех сайтах, где его просят



Для демонстрации работы я выбрал api от - http://smsvk.net/21-api-20b.html

Почему?

  1. Дешевые номера + часто их меняют в течении дня.
  2. Схожее api с сервисом - http://sms-area.org/ (если нужные номера кончились, то просто в hosts файле делаем переадресацию на нужный домен ).
  3. Нормальная тех.поддержка
  4. Очень быстро приходят СмС

Скачать: https://yadi.sk/d/ANyzsr7vdWCqu
Также решил привести пример полу-автоматического регера.




Где от нас потребуется:

  1. Занести номера в текстовик (на которые будем принимать смс)
  2. Разгадать капчу (можно включить авто распознавание)
  3. Ввести код от смс
+ регистрация будет идти с разных ip адрессов.

Скачать: https://yadi.sk/d/ANyzsr7vdWCqu

===================================


Анализируем чужие программы в сниффере (перед этим проксируем их через 127.0.0.1:8888 - чтобы мог читать https наш снифер). И переписываем под зенку








  1. Качаем FreeCap по этой ссылке - http://www.freecap.ru/files/freecap_setup.exe
  2. Качаем Fiddler - http://www.telerik.com/download/fiddler
Настройка:

1. Запускаем Freecap
2. Заходим в настройки
3. Прописываем свой локальный ip адрес.



4. Убираем ненужные функции.



5. Пропишем пути.





----------------------------------------------------------

Теперь:

  1. Запустим Fiddler и начинаем анализ (по умолчанию фиддлер в боевой готовности.. поэтому кнопок старт жать не нужно).
  2. Делаем шаг 5, как на прошлом скрине
  3. Загружаем мыльники и нажимаем в программе (mailbox@reg) - чекать мыло на валидность
  4. Ждем пока набегут логи в Fiddler




Как видим на скриншоте ниже...

  1. Мы взяли первый рандомный лог, который получили при анализе mailbox@reg в фиддлере
  2. Посмотрели куда он стучит
  3. Какие данные отправляет
  4. Повторили данный шаг в зенно с помощью экшена - "Post-запрос"
  5. Добавили обработку аккаунтов и логику на Good / Bad



Скорость чека 1 аккаунта в 1 поток = 1 секунда.

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

Скачать: https://yadi.sk/d/C4vHmXgDdWHWD
======================================

Чекер Вк аккаунтов.
----------------------------------------------------------

Наши действия:

  1. Запусаем Wincap
  2. Добавляем пути до программы (Brute&Checker Vk.com [API] 1.1)
  3. Запускаем Fiddler
  4. Запускаем Brute&Checker Vk.com [API] 1.1 и нажимаем на чек аккаунтов
----------------------------------------------------------

Что мы видим?

http|://oauth.vk.com:443/token?grant_type=password&client_id=2274003&client_secret=hHbZxrka2uZ6jB1inYsH&username=79284332024&password=blablabla
client_id=2274003
client_secret=hHbZxrka2uZ6jB1inYsH


Первые два параметра (см.выше), скорее всего отвечают за уже созданное приложение в ВК... для использования внутреннего API vk. Можно заменить на свое, но не вижу пока смысла (работают эта два ключа больше года).

username=79284332024
password=blablabla

дУМАЮ все понятно))

-------------
Если наш пароль не валиден, то мы получим Username or password is incorrect.



Или



---------------------------------------------------
Итого:




http://zennolab.com/discussion/threads/sozdaem-cheker-akkauntov-vk-com.17291/ - Аригато годзаймасу за идею)
--------------------------------
Скачать: https://yadi.sk/d/E56fhPgMdWLQE
--------------------------------
Пароль: lexone
--------------------------------


Копируем видео из чужой группы в свою (vk.bot)

Наши действия:

  1. Запусаем Wincap Создаем рядом с vkbot.exe файлик proxy.txt и вписуем туда 127.0.0.1:8888
  2. Запускаем vkbot и идем на вкладку: Медиа --- Скопировать --- Скорпировать видео в сообщество
  3. Запускаем Fiddler
  4. Вводим id своей группы и чужой (от куда будем брать видео)
  5. Начинаем анализирвоать
======================================

При заходе в программу vk_bot, вас попросят ввести логин-пароль. После этого в сниффере вы увидите get/post запросы на авторизацию и получения кук. (они нам нужны будут для дальнейших действий).



И




----------------

Теперь реализуем это в зеннопостере:



---------------------------


Первые шаги vk_bota будет:

1. заходит на страничку группы
2. Парсит все ее видеозаписи
3. Извлекает из этих данных hesh и id видео с помощью регулярных выражений



--------------------------
Повторяем в зенно



----------------------------------------------------

Действия Вк_бота на 3 шаге:Без имени-12.png




----------------------------------------------------
Адаптируем под зенку:



Итого: мы за 230 секунд скопировали 200 видео.

--------------------------------
Скачать: https://yadi.sk/d/iOv1jZmEdWPxR
--------------------------------
 
Тема статьи
Нестандартные хаки
Номер конкурса статей
Второй конкурс статей

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

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

Последнее редактирование:

lexone

Client
Регистрация
12.10.2012
Сообщения
420
Благодарностей
726
Баллы
93
Аналог xpath на зенно (c#)

Наша задача:
  1. Перейти в компанию (названия каждый раз будет раномным.. поэтому под него не цепляемся)
  2. Внутри компании кликнуть на подкомпании.
  3. Скопировать каждое объявление c подкомпании в новую подкомпаниию
======================================

Скажу вам сразу.. если бы делал без c#, то пришлось бы реализовывать этот клик через очень большие костыли..



----------------------------------------------------
Наши действия:

  1. Ищем ограниченное пространство, где больше не будет совпадений по union_id=
  2. Начинаем искать по регулярному выражению в найденом куске. (этим мы отсечем разные блоки, где были такие же повторы).
  3. Вызываем в коде клик, если нашли нужный элемент.



Код:
var tab = instance.ActiveTab;

var theme_select = tab.FindElementByAttribute("tbody", "fulltag", "tbody", "text", 3);
if (!theme_select.IsVoid)
{
    var btn_click = theme_select.FindChildByAttribute("a", "href", @"http://vk\.com/ads\?act=office&union_id=", "regexp", 0);
    if (!btn_click.IsVoid)
    {
        btn_click.RiseEvent("click", "Full");
        while (tab.IsBusy)
            System.Threading.Thread.Sleep(1000);
        return 0;
    }
}

throw new Exception("не смог выбрать!");

======================================
Шаг 2:

Ничего интересного.. сразу нашли нужный нам аргумент.

--------------

Шаг 3:


Видим туже самую ситуацию + тут не один элемент, а сразу несколько (нужен перебор значений).




======================================
Наши действия:





Код:
int a = Convert.ToInt32(project.Variables["var"].Value);
var tab = instance.ActiveTab;

var theme_select = tab.FindElementByAttribute("tbody", "fulltag", "tbody", "text", 3);
if (!theme_select.IsVoid)
{
    var btn_click = theme_select.FindChildByAttribute("a", "href", @"http://vk\.com/ads\?act=office&union_id=", "regexp", a);
    if (!btn_click.IsVoid)
    {
        btn_click.RiseEvent("click", "Full");
        while (tab.IsBusy)
            System.Threading.Thread.Sleep(1000);
        return 0;
    }
}

throw new Exception("не смог выбрать!");
--------------------------------
Скачать: https://yadi.sk/d/iOv1jZmEdWPxR
--------------------------------
 
Последнее редактирование:

lexone

Client
Регистрация
12.10.2012
Сообщения
420
Благодарностей
726
Баллы
93
Налаживаем Watermark на картинки через c# сниппет



Начальные данные:

  1. картинка.png (наша Watermark)
  2. Папки (в папках должны быть только картинки)

Получаем названия папок:

Код:
var textContains = project.Variables["var"].Value;
var subdir = System.IO.Directory.GetDirectories((textContains));
for(int i=0;i<subdir.Length;i++)
{
    project.Lists["list1"].Add(subdir[i]);
}
--------------------
Накладываем Watermark.

Код:
    {
        using (Image image = Image.FromFile(@"{-Variable.new-}"))
        using (Image watermarkImage = Image.FromFile(@"{-Variable.leo-}"))
        using (Graphics imageGraphics = Graphics.FromImage(image))
        using (TextureBrush watermarkBrush = new TextureBrush(watermarkImage))
        {
            int x = (image.Width / 2 - watermarkImage.Width / 2);
            int y = (image.Height / 2 - watermarkImage.Height / 2);
            watermarkBrush.TranslateTransform(x, y);
            imageGraphics.FillRectangle(watermarkBrush, new Rectangle(new Point(x, y), new Size(watermarkImage.Width+1, watermarkImage.Height)));
            image.Save(@"{-Variable.line-}new\{-Variable.new1-}.jpg");
        }

    }
--------------------

На выходе

  • Папка1new
  • Папка2new

и.т.д (шаблон создает новые папки с именем старых (только приставку new добавляет) и перемещает туда уже обработанные изображения .

--------------------------------
Скачать: https://yadi.sk/d/CfybxDv2dWV7r
--------------------------------

Регер Ucoz аккаунтов на c#





  1. Почему я решил делать регер именно на c# блоках?

Ответ: если вы не пропишите AdditionalHeaders, то Ucoz не даст вам отправить конечный post запрос. (видать на основе моих заголовках что-то генерирует).
В обычном get/post запросе зеннопостера это не прописать.. поэтому воспользуемся c#блоком

Код:
var resultHttpPost = ZennoPoster.HttpPost("http://www.ucoz.ru/main",
   "a=checkemail&email=" + project.Variables["mail"].Value + "&v=2&_tp_=xml",
   "application/x-www-form-urlencoded", project.Variables["proxy"].Value,
   respType: ZennoLab.InterfacesLibrary.Enums.Http.ResponceType.HeaderAndBody,
   Cookies: project.Variables["cookie"].Value,
   UserAgent: "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:24.0) Gecko/20100101 Firefox/24.0",
   AdditionalHeaders: new[]
   {
     "Accept: application/xml, text/xml, */*",
     "Accept-Language: en-US,en;q=0.5",
     "X-Requested-With: XMLHttpRequest",
     "Referer: http://www.ucoz.ru/register",
     "Pragma: no-cache",
     "Cache-Control: no-cache",
   });
return resultHttpPost;
===============================

2. Ucoz ввел автоматическую защиту от спамеров.



Если глянуть по параметрку - otwtejv(каждый раз рандомное имя), то нам предлагают вот эту строку из исходника

HTML:
<input type="hidden" name="otwtejv" value="828612">
Но если глянуть по "651470" :



HTML:
    var pwds = ['1234qwer','password','1234567','abc123','123abc','myspace','iloveyou','blink182','qwerty','baseball','adminadmin','administrator','202839','12345678','fuckyou','slipknot','651470','123456789','superman','football','123456','138470','access','soccer','monkey','liverpool','123123','123qwe','123qwer','princess','jordan','jordan23','229455','933730','591998','915161'];
Когда мы регаемся через браузер, то эта строка сама подтягивается неведомо каким образом.

Но не в нашем случае, так как мы напрямую должны отправлять уже заранее сформулированный post запрос.

====================

После несколько тестов мы выяснили, что значения для ответа берется из этого блока

['1234qwer','password','1234567','abc123','123abc','myspace','iloveyou','blink182','qwerty','baseball','adminadmin','administrator','202839','12345678','fuckyou','slipknot','651470','123456789','superman','football','123456','138470','access','soccer','monkey','liverpool','123123','123qwe','123qwer','princess','jordan','jordan23','229455','933730','591998','915161']

И всегда начинается на 6, а также состоит только из цифр.

После мы составим регулярку и будем потдягивать это число в наш post запрос

(?<=',')6[0-9]*?(?=',')
====================

Далее нас ждет новый сюрприз))




Как видим, юкоз в post запросе отправляет метки всех своих полей (Имя, Фамилия, Мыло , ответ на капчу, город) - в режиме морфинга.

То_есть при каждой новой регистрации, юкоз будет просить совсем разные id полей.
====================

Для этого мы должны научится подтягивать новые id полей на автомате и подставлять в post запрос.

Делать это будем с помощью Регулярных выражений.
Смотрим в исходную страницу и определяем какие теги окружают наши id




В конечном итоге у меня получилось 26 регулярных выражений.

Код:
"a=register2&" + project.Variables["z1"].Value + "=" + project.Variables["z2"].Value + "&" + project.Variables["milo"].Value + "=" + project.Variables["mail"].Value + "&" + project.Variables["pas_heh"].Value + "=" + project.Variables["password"].Value + "&" + project.Variables["name_reg"].Value + "=" + project.Profile.Name + "&" + project.Variables["famalu"].Value + "=" + project.Profile.Surname + "&" + project.Variables["niks"].Value + "=" + project.Profile.NickName + "&" + project.Variables["day"].Value + "="+ project.Profile.BornDay + "&" + project.Variables["mecyz"].Value + "=" + project.Profile.BornMonth + "&" + project.Variables["god"].Value + "=" + project.Profile.BornYear + "&" + project.Variables["gender"].Value + "=1&" + project.Variables["gorod1"].Value + "=" + project.Variables["gorod2"].Value + "&" + project.Variables["capths"].Value + "=" + project.Variables["otvet"].Value + "&" + project.Variables["pole_captha"].Value + "=" + project.Variables["pole_captha2"].Value + "&" + project.Variables["chec_bocs"].Value + "=1&" + project.Variables["chec_bocs_2"].Value + "=0&" + project.Variables["chec_bocs_3"].Value + "=&" + project.Variables["z5"].Value + "=" + project.Variables["z6"].Value,
Также в шаблоне показан метод, как скачать капчу с кукой + перекодировать ее в Base64 для дальнейшей отправки на сервис антикапчи.



--------------------------------
Скачать: https://yadi.sk/d/342LWuAWdWVwU
--------------------------------

Регистрация mail аккаунтов на c#

Почти тоже самое, что и с Ucoz.. только без секретного вопроса в Post запросе.

На второй страницы этой темы все архивы доступны для скачивания

P.s.s: статья нон-стоп писалась более 10 часов..
Поэтому возможны косяки в оформлении, словах (днем почищу).
 
Последнее редактирование модератором:

Tritatushki

Client
Регистрация
08.04.2010
Сообщения
70
Благодарностей
19
Баллы
8
Хорошая статья, за проксирование и сниффинг прог респект :-)
 
  • Спасибо
Реакции: Slava и lexone

Gerero

Client
Регистрация
20.12.2010
Сообщения
86
Благодарностей
83
Баллы
18
То же понравилось.
 
  • Спасибо
Реакции: lexone

jkvoka

Client
Регистрация
24.02.2009
Сообщения
478
Благодарностей
3
Баллы
18
обалдеть
 
  • Спасибо
Реакции: LightWood и lexone

strannic

Client
Регистрация
05.12.2010
Сообщения
224
Благодарностей
10
Баллы
18
Спасибо! Все понятно и четко изложено!
 
  • Спасибо
Реакции: lexone

Другой

Client
Регистрация
09.12.2014
Сообщения
9
Благодарностей
6
Баллы
3
Чувствую, как мозг приятно напрягся от новой информации. Спасибо.
Одна из крутейших статей за два конкурса
 
  • Спасибо
Реакции: iBotovod, seomiks и lexone

Adigen

Client
Регистрация
28.07.2014
Сообщения
825
Благодарностей
653
Баллы
93
Отличная статья.
 
  • Спасибо
Реакции: lexone

lexone

Client
Регистрация
12.10.2012
Сообщения
420
Благодарностей
726
Баллы
93
Всем снова привет :bt:

Времени было в обрез (вышел за дедлайн конкурса).. пришлось очень много примеров урезать.

Специально для всех заинтересовавшихся темой - Анализируем чужие программы в сниффере (перед этим проксируем их через 127.0.0.1:8888 - чтобы мог читать https наш снифер). И переписываем под зенку

Я опубликую в скором времени - C# Sharp vs WebBrowser. Часть 2, еще больше софта!!!!!
Пока остановлюсь на - "парсере картинок яндекса / гугла" - переписываем под многопоток и C#, || "зеброид" - постим в Web 2.0 на автомате. || ваши идеи.
Если есть идеи, какой еще софт анализировать.. кидайте его название в эту тему.
 

barkasian

Client
Регистрация
03.12.2014
Сообщения
127
Благодарностей
137
Баллы
43
Вот класс, достойно! Есть к чему стремиться.
 
  • Спасибо
Реакции: lexone

LexxWork

Client
Регистрация
31.10.2013
Сообщения
1 190
Благодарностей
791
Баллы
113
автор молодец!
мои 5 коп.
 
  • Спасибо
Реакции: lexone

Roman*

Client
Регистрация
25.09.2013
Сообщения
1 657
Благодарностей
656
Баллы
113
Просто браво, все самое полезное и в нужное время.
 
  • Спасибо
Реакции: Fedsas и lexone

Fedsas

Client
Регистрация
28.06.2014
Сообщения
12
Благодарностей
6
Баллы
3
что сказать, пять с плюсом, - однозначно.
 
  • Спасибо
Реакции: Roman* и lexone

twitter

Client
Регистрация
05.09.2013
Сообщения
20
Благодарностей
8
Баллы
3
Вот только ради таких статей и стоит купить Zennoposter. Админы, а у буржуев вы проводите такие конкурсы?
 
  • Спасибо
Реакции: lexone

iZenno

Client
Регистрация
21.12.2014
Сообщения
24
Благодарностей
8
Баллы
3
Суперская статья, можно и мне пароль?
 
  • Спасибо
Реакции: lexone

svaminar

Client
Регистрация
21.08.2013
Сообщения
834
Благодарностей
379
Баллы
63
можно и мне пароль.
 
  • Спасибо
Реакции: lexone

simbioz

Client
Регистрация
31.08.2014
Сообщения
150
Благодарностей
27
Баллы
28
Супер! Отличная статья!
 
  • Спасибо
Реакции: lexone

GreenWay

Client
Регистрация
11.05.2012
Сообщения
432
Благодарностей
139
Баллы
43
Очень, очень МОЛОДЕЦ!
Про post и get подробно - то что нужно.
 
  • Спасибо
Реакции: lexone

Roman*

Client
Регистрация
25.09.2013
Сообщения
1 657
Благодарностей
656
Баллы
113
Если буржуи будут такие статьи писать, то мы будем в переди планеты всей, а бабла будет у нас за счет их идей уух сколько)
 
  • Спасибо
Реакции: twitter и lexone

despro

Client
Регистрация
18.09.2009
Сообщения
55
Благодарностей
8
Баллы
8
Вопрос собсно к Администрации.
Когда, как и где начнеца голосование за статьи?
Кто может, а кто не может учавствовать в этом?

Спасибо
 

Tuw

Client
Регистрация
07.09.2014
Сообщения
441
Благодарностей
150
Баллы
43
Отличная статья, браво! Можно мне тоже пароль в лс 8-)
 

Tuw

Client
Регистрация
07.09.2014
Сообщения
441
Благодарностей
150
Баллы
43
В смысле статус client? Это обладатель программы вы имеете ввиду?
 

duksa

Client
Регистрация
18.12.2011
Сообщения
40
Благодарностей
3
Баллы
8
Отличная статья!
и мне тоже пароль дайте.
 

rostonix

Известная личность
Регистрация
23.12.2011
Сообщения
29 067
Благодарностей
5 715
Баллы
113
Привет ) Архив нужно прикрепить к статье :-)
 

Gerero

Client
Регистрация
20.12.2010
Сообщения
86
Благодарностей
83
Баллы
18
Привет ) Архив нужно прикрепить к статье :-)
Видимо в правилах необходимо строго прописать что архив должен прикрепляться к статье, быть незапароленным и шаблоны не зашифрованные. А то получается сплошное попрашайничество и какой толк от зашифрованных шабов?
 
  • Спасибо
Реакции: lexone

goingup

Client
Регистрация
10.09.2013
Сообщения
42
Благодарностей
13
Баллы
8
Отлична мега работа ТС!!!
Молодец!!!!!
 
  • Спасибо
Реакции: lexone

execut0r

Client
Регистрация
12.03.2014
Сообщения
263
Благодарностей
271
Баллы
63
Спасибо за разжевку по раскладке работы программ на зенку!
Плюсую!
 
  • Спасибо
Реакции: lexone

goblin2oo8

Client
Регистрация
27.08.2013
Сообщения
93
Благодарностей
95
Баллы
18
Однозначно +
Лучший материал!
 
  • Спасибо
Реакции: lexone

simbioz

Client
Регистрация
31.08.2014
Сообщения
150
Благодарностей
27
Баллы
28
Жалко что по Авито шабы закрыты, не посмотреть что к чему.
 
  • Спасибо
Реакции: lexone

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