Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.71/7: Рейтинг темы: голосов - 7, средняя оценка - 4.71
2 / 2 / 1
Регистрация: 09.01.2015
Сообщений: 383

Messanger для рассылки файлов по личкам на форуме

29.08.2019, 13:34. Показов 1496. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день ! Нужно собрать такого зверя :
1) Авторизируемся на сайте
PHP
1
2
3
    <input type="text" placeholder="Имя пользователя" name="auth" id="auth"  autocomplete="username">
    <input type="password" placeholder="Пароль" name="password" id="password"  autocomplete="current-password">
    <button type="submit" name="_processLogin" value="usernamepassword" class="ipsButton ipsButton_primary ipsButton_small" id="elSignIn_submit">Войти</button>
2) Загружаем список имен
3) Загружаем директорию с файлами
4) Создаем сообщение
a) имя пользователя
b) название темы
c) вкладываем файл
5) отсылаем и так по всему списку .

Пните в нужном направлении ( как будет проще реализовать ) ?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
29.08.2019, 13:34
Ответы с готовыми решениями:

Messanger и IOC сделать виднім для всех проектво в решении
Есть решенеи и в нем несколько проектов(разбил функционал по проектам). Главный проект - Wpf mvvm ligth(8.1). Как я понимаю - в нем есть...

Wlan messanger
Посоветуйте программу которая устанавливается на Винду, типа чат без доступа к интернету между компьютерами в беспроводной сети

Messanger MVVM Light
Здравствуйте! Разбираюсь с MVVM Light. Никак не могу настроить передачу сообщений из одной ViewModel в другую, помогите. ViewModel -...

6
2 / 2 / 1
Регистрация: 09.01.2015
Сообщений: 383
29.08.2019, 20:27  [ТС]
авторизацию реализовал так :
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
    public partial class Form1 : Form
    {
        private CookieCollection Cooks = new CookieCollection();
        CookieContainer cookies = new CookieContainer();
 
        public Form1()
        {
            InitializeComponent();
        }
 
        private void b_connect_Click(object sender, EventArgs e)
        {
            string data = "auth="+ t_name.Text + "&password=" + t_pass.Text;
            string s = sendPost(data, ref cookies, "https://*******.com/login/");
            int a = s.IndexOf("name=\"csrfKey\" value=");
            string csrfKey = s.Substring(a+22, 32);
            Log.AppendText(csrfKey + "\n");
            string data2 = "csrfKey=" + csrfKey + "&" + data + "&remember_me = 1&_processLogin=usernamepassword&_processLogin=usernamepassword";
            Log.AppendText(sendPost(data2, ref cookies,"https://*******.com/login/"));
        }
        public static string sendPost(string data, ref CookieContainer cookies,string url)
        {
            HttpWebRequest request = (HttpWebRequest)WebRequest.Create(@""+ url);
            request.AllowAutoRedirect = true;
            request.Method = "POST";
            request.ContentType = "application/x-www-form-urlencoded";
            request.UserAgent = "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:45.0) Gecko/20100101 Firefox/45.0";
            byte[] sentData = Encoding.UTF8.GetBytes(data);
            request.ContentLength = sentData.Length;
            request.CookieContainer = cookies;
            Stream sendStream = request.GetRequestStream();
            sendStream.Write(sentData, 0, sentData.Length);
            sendStream.Close();
            WebResponse response = request.GetResponse();
            return (new StreamReader(response.GetResponseStream())).ReadToEnd();
        }
    }
}
как реализовать multipart:

Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
------WebKitFormBoundaryAOTg7XbTkNpGTzFu
Content-Disposition: form-data; name="form_submitted"
 
1
------WebKitFormBoundaryAOTg7XbTkNpGTzFu
Content-Disposition: form-data; name="csrfKey"
 
9f0c9c009f767f8ba84b0846069c46f7
------WebKitFormBoundaryAOTg7XbTkNpGTzFu
Content-Disposition: form-data; name="MAX_FILE_SIZE"
 
103809024
------WebKitFormBoundaryAOTg7XbTkNpGTzFu
Content-Disposition: form-data; name="plupload"
 
2716fccaaceb9d641645166bd8d3edf2
------WebKitFormBoundaryAOTg7XbTkNpGTzFu
Content-Disposition: form-data; name="messenger_to_original"
 
 
------WebKitFormBoundaryAOTg7XbTkNpGTzFu
Content-Disposition: form-data; name="messenger_to"
 
Вася
------WebKitFormBoundaryAOTg7XbTkNpGTzFu
Content-Disposition: form-data; name="messenger_title"
 
test
------WebKitFormBoundaryAOTg7XbTkNpGTzFu
Content-Disposition: form-data; name="messenger_content"
 
<p>
    1
</p>
 
------WebKitFormBoundaryAOTg7XbTkNpGTzFu
Content-Disposition: form-data; name="messenger_content_upload"
 
d3b61b45f9d7f9664f7a79201a7ef011
------WebKitFormBoundaryAOTg7XbTkNpGTzFu--
0
Администратор
Эксперт .NET
 Аватар для OwenGlendower
18291 / 14214 / 5368
Регистрация: 17.03.2014
Сообщений: 28,891
Записей в блоге: 1
30.08.2019, 10:04
Цитата Сообщение от Marchcat Посмотреть сообщение
Пните в нужном направлении
Пинаю - не надо заниматься спамом.
1
2 / 2 / 1
Регистрация: 09.01.2015
Сообщений: 383
30.08.2019, 11:48  [ТС]
Здесь нет ни какого спама . Чисто рабочий процесс . нужно рассылать людям прошивки которые они купили ))
0
Администратор
Эксперт .NET
 Аватар для OwenGlendower
18291 / 14214 / 5368
Регистрация: 17.03.2014
Сообщений: 28,891
Записей в блоге: 1
30.08.2019, 12:10
Marchcat, ок. В таком случае советую переключиться на класс HttpClient и MultipartFormDataContent. Без него придется вручную формировать текст запроса что неудобно.
0
2 / 2 / 1
Регистрация: 09.01.2015
Сообщений: 383
03.09.2019, 20:42  [ТС]
Что то мой старенький Express не хочет подгружать System.Net.Http ((

Добавлено через 11 минут
А все. Подгрузил C:\Program Files\Reference Assemblies\Microsoft\Framework\.NETFrame work\v4.5.1\System.Net.Http.dll и начало работать . Вопрос №2 . Можно несколько элементарных примеров

Добавлено через 35 минут
И не видит асинхронные методы ((

Добавлено через 2 часа 48 минут
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
using System;
using System.IO;
using System.Net;
using System.Net.Http;
using System.Threading.Tasks;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
 
 
 
 
namespace Messanger_for_IprogPro_scripts
{
    public partial class Form1 : Form
    {
        CookieContainer cookies = new CookieContainer();
        string URL = "https://*****.com";
        string csrfKey = "";
        string Boundary = "";
 
        public Form1()
        {
            InitializeComponent();
            t_name.Text = "******";
            t_pass.Text = "******";
            t_title.Text = "Test";
            t_message.Text = "UpDate";
        }
 
        private void b_connect_Click(object sender, EventArgs e)
        {
 
           
            string Page = POST_http(URL + "/login/", "",1);
            int StartIndex = Page.IndexOf("name=\"csrfKey\" value=");
            csrfKey = Page.Substring(StartIndex + 22, 32);
 
            string data = "csrfKey=" + csrfKey + "&auth=" + t_name.Text + "&password=" + t_pass.Text + "&_processLogin=usernamepassword&_processLogin=usernamepassword";
            Page = POST_http(URL + "/login/", data,1);
            StartIndex = Page.IndexOf("csrfKey: \"");
            csrfKey = Page.Substring(StartIndex + 10, 32);
 
            Page = POST_http(URL + "/messenger/compose/", "", 0);
 
            Log.AppendText(Page);
 
 
        }
 
        public string GET_http(string url)
        {
            System.Net.ServicePointManager.ServerCertificateValidationCallback = delegate { return true; };
            System.Net.WebRequest reqGET = System.Net.WebRequest.Create(url);
            System.Net.WebResponse resp = reqGET.GetResponse();
            System.IO.Stream stream = resp.GetResponseStream();
            System.IO.StreamReader sr = new System.IO.StreamReader(stream);
            string html = sr.ReadToEnd();
            return html;
        }
 
        public string POST_http(string url, string data , int type)
        {
            
            ServicePointManager.Expect100Continue = false;
 
            var request = (HttpWebRequest)WebRequest.Create(@"" + url);
            request.CookieContainer = cookies;
            request.AllowAutoRedirect = true;
            request.Method = "POST";
            if (type == 1)
            {
                request.ContentType = "application/x-www-form-urlencoded";
            }
            else
            {
                Boundary = "----WebKitFormBoundaryqiS" + DateTime.Now.Ticks.ToString("x");
                request.ContentType = "multipart/form-data; boundary=" + Boundary;
                data = GenerateMultiString("******");
            }
            request.UserAgent = "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:45.0) Gecko/20100101 Firefox/45.0";
            byte[] sentData = Encoding.UTF8.GetBytes(data);
            request.ContentLength = sentData.Length;
            request.CookieContainer = cookies;
            Stream sendStream = request.GetRequestStream();
            sendStream.Write(sentData, 0, sentData.Length);
            sendStream.Close();
            WebResponse response = request.GetResponse();
            return (new StreamReader(response.GetResponseStream())).ReadToEnd();
        }
 
        private void Form1_FormClosing(object sender, FormClosingEventArgs e)
        {
            string Page = POST_http(URL + "/logout/?csrfKey=" + csrfKey,"",1);
        }
 
       public string GenerateMultiString(string nick)
        {
            string b = "--" + Boundary + "\n" + "Content-Disposition: form-data; name=\"";
            string Message = "";
            Message += b + "form_submitted\"" + "\n" + "\n" + "1" + "\n";
            Message += b + "csrfKey\"" + "\n" + "\n" + csrfKey + "\n";
            Message += b + "MAX_FILE_SIZE\"" + "\n" + "\n" + "103809024" + "\n";
            Message += b + "plupload\"" + "\n" + "\n" + "00000000000000000000000000000000" + "\n";
            Message += b + "messenger_to_original\"" + "\n" + "\n" + "\n";
            Message += b + "messenger_to\"" + "\n" + "\n"+ nick + "\n";
            Message += b + "messenger_title\"" + "\n" + "\n" + t_title.Text + "\n";
            Message += b + "messenger_content\"" + "\n" + "\n" + "<p>" + "\n" + "\t" + t_message.Text + "\n" + "</p>" + "\n" + "\n";
            Message += b + "messenger_content_upload\"" + "\n" + "\n" + "00000000000000000000000000000000" + "\n";
            Message += "--" + Boundary + "--";
           return Message;
        }
 
    }
}
Вот так отправляет сообщение . только вот вопрос . plupload и messenger_content_upload - как я полагаю MD5 . только вот от чего берется ?

Добавлено через 4 часа 44 минуты
А так же интересует как передать файл в plupload . и обратно получить на него ссылку или имя ?
0
2 / 2 / 1
Регистрация: 09.01.2015
Сообщений: 383
06.09.2019, 12:49  [ТС]
не получается загрузить файл и получить на него ссылку ((
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
        public string POST_http(string url, string data, string filename, string filedir)
        {
 
            ServicePointManager.Expect100Continue = false;
 
            var request = (HttpWebRequest)WebRequest.Create(@"" + url);
            request.CookieContainer = cookies;
            request.Accept = "*/*";
            request.AllowAutoRedirect = true;
            request.KeepAlive = true;
            request.Method = "POST";
            request.UserAgent = "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.132 Safari/537.36";
            Boundary = "----WebKitFormBoundaryqiS" + DateTime.Now.Ticks.ToString("x");
            request.ContentType = "multipart/form-data; boundary=" + Boundary;
            data = GenerateMultiFileString(filename, filedir);
 
            byte[] nach = Encoding.UTF8.GetBytes(data.ToString());
            byte[] sendfile = File.ReadAllBytes(filedir + filename);
            byte[] stri = Encoding.UTF8.GetBytes(Environment.NewLine);
            byte[] str2 = Encoding.UTF8.GetBytes("--" + Boundary + "--");
          /*  for (int i = 0; i < sendfile.Length; i++)
            {
                Log.AppendText(sendfile[i].ToString("x"));
            }*/
 
            Log.AppendText(Encoding.UTF8.GetString(nach));
            Log.AppendText(Encoding.UTF8.GetString(sendfile));
            Log.AppendText(Encoding.UTF8.GetString(stri));
            Log.AppendText(Encoding.UTF8.GetString(str2));
 
            request.ContentLength = nach.Length + sendfile.Length + str2.Length + stri.Length;
 
            using (Stream requestStream = request.GetRequestStream())
            {
                requestStream.Write(nach, 0, nach.Length);
                requestStream.Write(sendfile, 0, sendfile.Length);
                requestStream.Write(stri, 0, stri.Length);
                requestStream.Write(str2, 0, str2.Length);
                requestStream.Close();
            }
 
            request.CookieContainer = cookies;
            WebResponse response = request.GetResponse() as HttpWebResponse;
            return (new StreamReader(response.GetResponseStream())).ReadToEnd();
 
        }
       public string GenerateMultiFileString(string filename, string filedir)
        {
            string b = "--" + Boundary + "\n" + "Content-Disposition: form-data; name=\"";
            string Message = "";
            Message += b + "name\"" + "\r\n" + "\r\n" + filename + "\r\n";
            Message += b + "chunk\"" + "\r\n" + "\r\n" + "0" + "\r\n";
            Message += b + "chunks\"" + "\r\n" + "\r\n" + "1" + "\r\n";
            Message += b + "messenger_content_upload\"; filename=\"" + filename + "\"" + "\r\n" + "Content-Type: application/zip" + "\r\n" + "\r\n";
            return Message;
        }
Вот POST запрос из Chrome
Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
------WebKitFormBoundaryKRh8PkAPI3GWSrZo
Content-Disposition: form-data; name="name"
 
text.txt
------WebKitFormBoundaryKRh8PkAPI3GWSrZo
Content-Disposition: form-data; name="chunk"
 
0
------WebKitFormBoundaryKRh8PkAPI3GWSrZo
Content-Disposition: form-data; name="chunks"
 
1
------WebKitFormBoundaryKRh8PkAPI3GWSrZo
Content-Disposition: form-data; name="messenger_content_upload"; filename="text.txt"
Content-Type: text/plain
 
 
------WebKitFormBoundaryKRh8PkAPI3GWSrZo--
авторизация и рассылка писем работает .
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
06.09.2019, 12:49
Помогаю со студенческими работами здесь

Как запустить Instant Messanger
Доброго всем времени суток . Как запустить службу Instant messanger на сервере. делаю пинг на порт 1533 не доступен значит на нем нисего...

Как создать skype bot messanger?
Привет ребята... Я хочу создат скаип бот... Оно далжно отправит 3 сообшении по вибронному скаип неим... А ето скаип неим должно вибиратса в...

Программа для рассылки
написал прогу для рассылки сообщений на icq номера которые записаные в мемо! но не знаю как сделать что бы прога отправляла по очереди на...

Вёрстка письма для рассылки
Всем привет. Ребята выручайте. Кто сталкивался с такой проблемой в верстке писем: - суть проблемы - Яндекс почта ведет себя неадекватно,...

Программы для рассылки объявлений.
Помогите пожалуйста определиться какая программа лучше всего подходит для рассылки информации рекламного характера ( новости, объявления,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru