- Регистрация
- 20.08.2020
- Сообщения
- 439
- Благодарностей
- 114
- Баллы
- 43
Я долго не мог найти решение вопроса, который интересует тех,кто только начинает заниматься изучением гет поста.
На своём личном примере, хочу показать, что мне удалось найти за долгое время поисков. Представляю вашему внимаю загрузку аватарок на почту mail.ru
1.В первую очередь нужно авторизироваться
2. Генерируем токен для пост запроса.
ответ данного кода нужно добавить в переменную.
3.получаем token
4. формирование пост запроса
4.1 указом UAL https://id.mail.ru/api/v1/user/avatars/add?token={-Variable.token-}
4.2 Referer https://id.mail.ru/profile?utm_campaign=mailid&utm_medium=ph&from=headline
4.3 кодировка utf-8
4.4 таймаут от 30 до 60 секунд
4.5 указываем generation_token
4.6 указываем почту от почтового ящика mail.ru
4.7 взял данную информацию semafor
Следующий стандартный макрос, о котором стоит сказать — {-TimeNow.UnixTime-}. Возвращает значение вида 1588674065.50537, где до точки указано количество целых секунд прошедших с наступления эпохи Unix(подробнее о ней ниже). UnixTime выводится по времени UTC. Для чего нужны милли или микросекунды (а может пико или нано, не вникал), следующие после запятой, мне не ясно — имхо это лишний кубик по их удалению, но может имеется и возможность задать формат вывода.
4.8 указываем прямой путь к аватарке на пк
4.9 тип данных не забываем поменять на multipart
4.10 только содержимое (чтобы проверить ответ об успешной загрузке)
4.11 теперь вы можете создать любую переменную,в которую можно добавить ответ.
На своём личном примере, хочу показать, что мне удалось найти за долгое время поисков. Представляю вашему внимаю загрузку аватарок на почту mail.ru
1.В первую очередь нужно авторизироваться
авторизация в почте mail.ru:
/*--------------------------------
Данные для запроса
*///------------------------------
string _account = "[email protected];spirampa-yo88ft"; // аккаунт через разделитель "login:pass" или "login;pass".
string _proxy = "";
/*----------------------------------------------------
Авторизация майлру
*///---------------------------------------------------
string _login = String.Empty, _password = String.Empty;
try
{
_login = _account.Split(':', ';')[0];
_password = _account.Split(':', ';')[1];
if (String.IsNullOrWhiteSpace(_login)) throw new Exception("Логин не указан");
if (String.IsNullOrWhiteSpace(_password)) throw new Exception("Пароль не указан");
project.Profile.CookieContainer.Clear(); // очистка контейнера куков.
string HttpResponse = ZennoPoster.HTTP.Request
(
ZennoLab.InterfacesLibrary.Enums.Http.HttpMethod.GET, "https://mail.ru/", "", "", _proxy, "UTF-8",
ZennoLab.InterfacesLibrary.Enums.Http.ResponceType.BodyOnly, 20000, "", project.Profile.UserAgent, true, 5,
new String[]{}, "", false, false, project.Profile.CookieContainer
);
if (String.IsNullOrWhiteSpace(HttpResponse)) throw new Exception("HttpResponse пуст");
string token = Regex.Match(HttpResponse, "((?<=CSRF:\").*?(?=\")|(?<=CSRF:\\ \").*?(?=\"))").Value; // парсинг токена для авторизации.
// парсинг токена для авторизации.
if (String.IsNullOrWhiteSpace(token)) throw new Exception("token для авторизации не найден");
/*Авторизация*/
HttpResponse = ZennoPoster.HTTP.Request
(
ZennoLab.InterfacesLibrary.Enums.Http.HttpMethod.POST, "https://auth.mail.ru/jsapi/auth",
$"login={ZennoLab.Macros.TextProcessing.UrlEncode(_login)}&password={ZennoLab.Macros.TextProcessing.UrlEncode(_password)}&saveauth=1&token={token}&project=e.mail.ru&_="
+ Convert.ToString((DateTime.UtcNow - new DateTime(1970, 1, 1)).TotalSeconds).Replace(",", "").Substring(0, 13),
"application/x-www-form-urlencoded", _proxy, "UTF-8",
ZennoLab.InterfacesLibrary.Enums.Http.ResponceType.HeaderAndBody, 20000, "", project.Profile.UserAgent, true, 5,
new String[]
{
"Accept: */*",
"Origin: https://mail.ru",
"Referer: https://mail.ru/",
"Connection: keep-alive"
},
"", false, false, project.Profile.CookieContainer
);
if (Regex.IsMatch(HttpResponse, "{\"status\":\"ok\",\"code_number\":200}"))
{
project.Profile.Save($@"{project.Directory}\profiles\{_login}.zpprofile", true, true, true, true, true, true, true, true, true, new string[]{"PROXY"}); // сейв профиля.
project.SendInfoToLog($"{_login} | Успешная авторизация", true); // лог для zp.
}
else
{
/*Определение ошибки, если не вышло авторизоваться*/
if (!Regex.IsMatch(HttpResponse, "((?<=\\{\"status\":\")break.*?(?=\"})|(?<=\"status\":\")fail.*?(?=\"}))")) throw new Exception("Неизвестная ошибка авторизации");
if (Regex.IsMatch(HttpResponse, "(?<=\\{\"status\":\")break.*?(?=\"})")) throw new Exception("Требуется SMS подтверждение/Восстановление доступа");
if (Regex.IsMatch(HttpResponse, "(?<=\"status\":\")fail.*?(?=\"})")) throw new Exception("Не верный логин или пароль");
}
}
catch (Exception ex)
{
project.SendWarningToLog(!String.IsNullOrWhiteSpace(_login) ? $"{_login} | {ex.Message}" : $"{ex.Message}", true);
}
код для генерирования токена generation_token:
return string.Format(@"WebKitFormBoundary{0}",DateTime.Now.Ticks.ToString("x"));
3.получаем token
Получить token:
/*--------------------------------
Данные для запроса
*///------------------------------
var email = "[email protected]";
var proxy = "";
/*--------------------------------
Перенос письма
*///------------------------------
var unixTime = ((DateTime.UtcNow - new DateTime(1970, 1, 1)).TotalSeconds).ToString().Replace(".", "").Substring(0, 13);
project.Variables["unixTime"].Value = Convert.ToString(unixTime);
var httpResponse = ZennoPoster.HTTP.Request
(
method: ZennoLab.InterfacesLibrary.Enums.Http.HttpMethod.GET,
respType: ZennoLab.InterfacesLibrary.Enums.Http.ResponceType.BodyOnly,
url: "https://e.mail.ru/inbox/?filter_unread=1",
UserAgent: project.Profile.UserAgent, proxy: proxy, Encoding: "utf-8", Timeout: 30000, UseRedirect: true, MaxRedirectCount: 5,
cookieContainer: project.Profile.CookieContainer
);
if (Regex.IsMatch(httpResponse, @"(?<=')&afterReload=1.*?(?=';)"))
{
httpResponse = ZennoPoster.HTTP.Request
(
method: ZennoLab.InterfacesLibrary.Enums.Http.HttpMethod.GET,
respType: ZennoLab.InterfacesLibrary.Enums.Http.ResponceType.BodyOnly,
url: "https://e.mail.ru/inbox/?afterReload=1",
UserAgent: project.Profile.UserAgent, proxy: proxy, Encoding: "utf-8", Timeout: 30000, UseRedirect: true, MaxRedirectCount: 5,
cookieContainer: project.Profile.CookieContainer
);
}
var token = Regex.Match(httpResponse, "(?<=\"token\":\").*?(?=\")|(?<=updateToken\\(\").*?(?=\")").Value;
project.Variables["token"].Value = Convert.ToString(token);
4.1 указом UAL https://id.mail.ru/api/v1/user/avatars/add?token={-Variable.token-}
4.2 Referer https://id.mail.ru/profile?utm_campaign=mailid&utm_medium=ph&from=headline
4.3 кодировка utf-8
4.4 таймаут от 30 до 60 секунд
4.5 указываем generation_token
4.6 указываем почту от почтового ящика mail.ru
4.7 взял данную информацию semafor
Следующий стандартный макрос, о котором стоит сказать — {-TimeNow.UnixTime-}. Возвращает значение вида 1588674065.50537, где до точки указано количество целых секунд прошедших с наступления эпохи Unix(подробнее о ней ниже). UnixTime выводится по времени UTC. Для чего нужны милли или микросекунды (а может пико или нано, не вникал), следующие после запятой, мне не ясно — имхо это лишний кубик по их удалению, но может имеется и возможность задать формат вывода.
4.8 указываем прямой путь к аватарке на пк
4.9 тип данных не забываем поменять на multipart
4.10 только содержимое (чтобы проверить ответ об успешной загрузке)
4.11 теперь вы можете создать любую переменную,в которую можно добавить ответ.
C#:
------{-Variable.generation_token-}
Content-Disposition: form-data; name="email"
{-Variable.Email-}
------{-Variable.generation_token-}
Content-Disposition: form-data; name="htmlencoded"
false
------{-Variable.generation_token-}
Content-Disposition: form-data; name="_avatar"
{-Variable.unixTime-}.png.jpeg
------{-Variable.generation_token-}
Content-Disposition: form-data; name="_mainphoto"
{-Variable.unixTime-}.png.jpeg
------{-Variable.generation_token-}
Content-Disposition: form-data; name="avatar"; filename="{-Variable.unixTime-}.png.jpeg"
Content-Type: image/jpeg
C:\Users\lbvf-\OneDrive\Изображения\Feedback\{1A1254EC-8EA6-4949-BD31-C38D273D6F8D}\Capture001.png
Для запуска проектов требуется программа ZennoPoster.
Это основное приложение, предназначенное для выполнения автоматизированных шаблонов действий (ботов).
Подробнее...
Для того чтобы запустить шаблон, откройте программу ZennoPoster. Нажмите кнопку «Добавить», и выберите файл проекта, который хотите запустить.
Подробнее о том, где и как выполняется проект.
Последнее редактирование: