После моей первой статьи (которая по видимому зашла) мне в личку начали поступать сообщения с просьбами о написании различных программ. Ребят я бесплатно не хочу тратить время на это, так как и любой другой уважающий себя человек. Но тем кто просил помощи в обучении я конечно же с радостью помогу. Неоднократно был вопрос о ****е почт, отправка запросов на сайты. написание ботов для сайтов. Сейчас я покажу как это делается на примере LolzTeam.(помниться пользователям обещали приложение для телефона от форума). Запросы бывают разные самые распространенные это POST и GET. GET запрос вы можете самостоятельно отправить из строки браузера. Выглядит он так: сайт.ру/index.html?login=blablabla&password=12345 Все что после знака "?" это параметры запроса. В данном случае параметры login и pasword. Думаю с этим все понятно, по этому сегодня мы разберем пример POST запросов. Использовать я буду C# framework 4.0, так как малварь мы не пишем и четвертая версия даст нам немного больше свободы действий, и библиотеку Xnet. Почему эта библиотека а не стандартные средства? Все просто она поможет сделать все быстро и без заморочек (но во всем есть свои минусы), многие кто просил меня помочь с запросами уже начали использовать ее, по этому и урок я делаю соответствующий. Слишком много предисловия, надеюсь камнями не закидаете. Давайте начнем! Писать будем авторизацию на данном форуме. Первым делом мы должны узнать какой пост запрос отправляет браузер когда мы авторизируемся на сайте. Для этого открываем браузер (я буду использовать хром) переходим на форум, жмем F12 и тыкаем вкладочку Network. Далее авторизируемся и смотрим все файлы в которых у нас передался наш логин и пароль (чаще всего это один из первых), в данном случае это "login": В самом верху мы видим страницу на который отправляем пост запрос (https://zelenka.guru/login/login) и метод запроса (POST). Также основные параметры которые нам нужны для передачи находятся внизу в "Form Data". Тут мы видем такие параметры: login password remember cookie_check _xfToken redirect По мимо этих параметров нам нужно передать еще и заголовки (Request Headers) Accept Origin Accept-Language Cache-Control Client-Software Referer Остальные параметры либо не обязательны либо генерируются сами Давайте же перейдем к коду: Я создаю проект winforms, кидаю на форму кнопку, 2 текстбокса(называю их Login и Password) и лейбл. Переходим к коду кнопки подключаем библиотеку XNet и прописываем данные взятые с форума: using (xNet.HttpRequest httpRequest = new xNet.HttpRequest()) { CookieDictionary cookieDictionary = new CookieDictionary(false); httpRequest.Cookies = cookieDictionary; httpRequest.AddHeader("Accept", "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8"); httpRequest.AddHeader("Origin", "https://zelenka.guru"); httpRequest.UserAgent = "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/62.0.3202.94 YaBrowser/17.11.1.990 Yowser/2.5 Safari/537.36"; httpRequest.AddHeader("Accept-Language", "ru,en;q=0.9"); httpRequest.AddHeader("Cache-Control", "max-age=0"); httpRequest.AddHeader("Client-Software", "WEB v4.17.0"); httpRequest.Referer = "https://zelenka.guru/threads/452894/"; string nameUser = httpRequest.Post("https://zelenka.guru/login/login", "login=" + Login.Text + "®ister=0&password=" + Password.Text + "&remember=0&cookie_check=0&redirect=/&_xfToken=", "application/x-www-form-urlencoded").LoadedBody; string Nick = pars("<strong class=\"hiddenNarrowUnder accountUsername\">", nameUser, "</strong>"); if (Nick.Length > 50) label1.Text = "неверный логин"; else label1.Text = "Добро пожаловать: "+Nick; } } Код using (xNet.HttpRequest httpRequest = new xNet.HttpRequest()) { CookieDictionary cookieDictionary = new CookieDictionary(false); httpRequest.Cookies = cookieDictionary; httpRequest.AddHeader("Accept", "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8"); httpRequest.AddHeader("Origin", "https://zelenka.guru"); httpRequest.UserAgent = "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/62.0.3202.94 YaBrowser/17.11.1.990 Yowser/2.5 Safari/537.36"; httpRequest.AddHeader("Accept-Language", "ru,en;q=0.9"); httpRequest.AddHeader("Cache-Control", "max-age=0"); httpRequest.AddHeader("Client-Software", "WEB v4.17.0"); httpRequest.Referer = "https://zelenka.guru/threads/452894/"; string nameUser = httpRequest.Post("https://zelenka.guru/login/login", "login=" + Login.Text + "®ister=0&password=" + Password.Text + "&remember=0&cookie_check=0&redirect=/&_xfToken=", "application/x-www-form-urlencoded").LoadedBody; string Nick = pars("<strong class=\"hiddenNarrowUnder accountUsername\">", nameUser, "</strong>"); if (Nick.Length > 50) label1.Text = "неверный логин"; else label1.Text = "Добро пожаловать: "+Nick; } } Параметр httpRequest.UserAgent мы можем генерировать как библиотекой (там уже есть готовые), так и найти в интернете любые другие. httpRequest.Post - отправляет наши параметры, присмотритесь внимательно как выглядят эти параметры в коде и не путайтесь с символами! После передачи этого запроса сайт вернет ответ который мы записываем в переменную nameUser. Окей, допустим мы авторизуемся таким образом. но как проверить? давайте спарсим ник который отображается у всех нас в правой части форума. для этого кликаем на него правой кнопкой мыши и выбираем исследовать элемент и получаем что-то вроде этого: <strong class="hiddenNarrowUnder accountUsername">Skrom</strong> теперь из нашей переменной которая хранит ответ форума мы найдем наш ник (если успешно авторизовались) и запишем его в label, для этого используем данный метод: string Nick = pars("<strong class=\"hiddenNarrowUnder accountUsername\">", nameUser, "</strong>"); Чтобы у нас работала функция pars ее необходимо описать(сделаем это немного ниже нашего кода): public static string pars(string starttag, string source, string endtag) { try { int startIndex = source.IndexOf(starttag, StringComparison.Ordinal) + starttag.Length; source = source.Substring(startIndex, source.Length - startIndex); int length = source.IndexOf(endtag, StringComparison.Ordinal); if (length <= 0) return ""; return source.Substring(0, length); } catch { return "0"; } } Код public static string pars(string starttag, string source, string endtag) { try { int startIndex = source.IndexOf(starttag, StringComparison.Ordinal) + starttag.Length; source = source.Substring(startIndex, source.Length - startIndex); int length = source.IndexOf(endtag, StringComparison.Ordinal); if (length <= 0) return ""; return source.Substring(0, length); } catch { return "0"; } } Эта функция принимает три параметра: начало строки, строка, конец строки. В данном случае в строке будет найдено слово или подстрока которая находится между "начало строки" и "конец строки". в самом коде у нас используется такое условие: if (Nick.Length > 50) label1.Text = "неверный логин"; else label1.Text = "Добро пожаловать: "+Nick; Код if (Nick.Length > 50) label1.Text = "неверный логин"; else label1.Text = "Добро пожаловать: "+Nick; Если авторизация не прошла, то нам вернулась целая страница с ошибкой(это много букаф). А если прошла, то наш ник на форуме. Отсюда и условие. Надеюсь я четко дал понять как использовать пост запросы. Они вам пригодятся для написания: ****а, ботов для сайта, чекеров, спамеров, флуда и т.д. Прошу прощения на этот раз без видео по некоторым причинам, в следующей статье оно обязательно будет. #моястатья
ГОООДНАААТААА! СПАСИБО БРО, авторку данному человечку по любому!!! RaysMorgan может в журналисты его? Он крутотенюшку пишет. Не пропустите этого чувака!
В следующий раз буду стараться делать под видео. В этот раз не было возможности извиняюсь, но постарался разжевать и приложить скрины.
такие новореги как ты заставляют задуматься "а все ли новореги мрази и скамеры с других бич форумов или нет" ты лучший новорег за последнюю 1000 лет)
Я в статье описал что меня многие просили опубликовать статью на данную тему. Этот материал будет полезен при написании ****а, спама, флуда на сайтах, ботов и многое другое.