Управление 3G модемом!

mihacb

Новичок
Регистрация
05.10.2018
Сообщения
22
Благодарностей
0
Баллы
1
Также можно добавить модуль, который проверяет соединение с интернетом через тот же api. Если соединение не установлено в течении указанного времени,то выходит по красной ветке.
Уважаемые друзья,

Возможно ли добавить в этот код, чтобы после получения гет запроса с новым ip, он сначала этот полученный ip проверял на уникальность в файле "История IP", и в случае если полученный ip уникальный, добавлял его в конец файла. А в случае если такой уже был, то заново выполнял код Csharp, пока не получит уникальный?

Благодарю за ответ. Готов заказать услугу.
2397пять7464 icq
 

lunoxod

Новичок
Регистрация
19.12.2018
Сообщения
6
Благодарностей
0
Баллы
1
Подскажите, даже простая команда в батнике не пашет..
rasdial "название соединения" /disconnect
Батник выдаёт:


C:\>rasdial inet /disconnect
Отсутствуют подключения
Команда успешно выполнена.

Название верное, интернет через роутер по кабелю
 

ilya27

Client
Регистрация
26.06.2018
Сообщения
39
Благодарностей
1
Баллы
8
Может кто знает как сделать перезагрузку модема при переходе по ссылке?
 

slavon

Client
Регистрация
24.06.2016
Сообщения
594
Благодарностей
127
Баллы
43

Dima123321123

Новичок
Регистрация
16.02.2019
Сообщения
1
Благодарностей
0
Баллы
1
Ребята, прошу помощи. Скрипт от Dimionix на каком языке и где и как его использовать?
 

Rooter85

Client
Регистрация
04.07.2015
Сообщения
244
Благодарностей
63
Баллы
28
Управляю перезагрузкой 4Г модема через post-запросы по адресу
http://192.168.0.1/goform/goform_set_cmd_process
Можно ли управлять несколькими модемами, если у них у всех стартовый url 192.168.0.1?
 

Rey

Client
Регистрация
19.01.2018
Сообщения
5
Благодарностей
3
Баллы
3
Доработанная версия скрипта от Dimionix
Т.к. Hilink имеет свой api, но он не обычный, требует id сессии и куки при любом запросе, переделал скрипт под api, почистив от мусора.
Работает смена ip с 4G.
Алгоритм следующий:
Отключаем передачу данных => Переключаем сеть на UMTS => Переключаем сеть на LTE-UMTS => Подключаемся к сети
API по Hilink
PHP:
// Сообщение в лог
project.SendWarningToLog("", "Переподключение сети!", true);
string protocol = project.Variables["Protocol"].Value; // http:// или socks5://
string proxy = project.Variables["Proxy"].Value;
string userAgent = "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:50.0) Gecko/20100101 Firefox/50.0";
string host = project.Variables["proxy_host"].Value; // например, 192.168.1.1
// GET Получаем токен
var resultGet = ZennoPoster.HttpGet(
    "http://" + host + "/api/webserver/SesTokInfo",
    proxy,
    "UTF-8",
    ZennoLab.InterfacesLibrary.Enums.Http.ResponceType.HeaderAndBody,
    30000,
    string.Empty,
    userAgent,
    true,
    5
);
// Парсим Set-Cookie и csrf_token
Match matchCookie = Regex.Match(resultGet, "(?<=<SesInfo>).*(?=</SesInfo>)");
Match matchCsrf_token = Regex.Match(resultGet, "(?<=<TokInfo>).*(?=</TokInfo>)");
if (!matchCookie.Success || !matchCsrf_token.Success)
    return null;
string cookies = matchCookie.Value;
string csrf_token = matchCsrf_token.Value;

// POST Отключаем передачу данных
var resultPost = ZennoPoster.HttpPost(
    "http://" + host + "/api/dialup/mobile-dataswitch",
    "<request><dataswitch>0</dataswitch></request>",
    "",
    proxy,
    "UTF-8",
    ZennoLab.InterfacesLibrary.Enums.Http.ResponceType.BodyOnly,
    30000,
    cookies,
    userAgent,
    true,
    5,
    AdditionalHeaders: new[] {
        "__RequestVerificationToken: " + csrf_token,
    }
);

Thread.Sleep(3 * 1000);

// GET Получаем токен
resultGet = ZennoPoster.HttpGet(
    "http://" + host + "/api/webserver/SesTokInfo",
    proxy,
    "UTF-8",
    ZennoLab.InterfacesLibrary.Enums.Http.ResponceType.HeaderAndBody,
    30000,
    string.Empty,
    userAgent,
    true,
    5
);
// Парсим Set-Cookie и csrf_token
matchCookie = Regex.Match(resultGet, "(?<=<SesInfo>).*(?=</SesInfo>)");
matchCsrf_token = Regex.Match(resultGet, "(?<=<TokInfo>).*(?=</TokInfo>)");
if (!matchCookie.Success || !matchCsrf_token.Success)
    return null;
cookies = matchCookie.Value;
csrf_token = matchCsrf_token.Value;

// POST Переключение на 3g
resultPost = ZennoPoster.HttpPost(
    "http://" + host + "/api/net/net-mode",
    "<request><NetworkMode>02</NetworkMode><NetworkBand>3FFFFFFF</NetworkBand><LTEBand>800C5</LTEBand></request>",
    "",
    proxy,
    "UTF-8",
    ZennoLab.InterfacesLibrary.Enums.Http.ResponceType.BodyOnly,
    30000,
    cookies,
    userAgent,
    true,
    5,
    AdditionalHeaders: new[] {
        "__RequestVerificationToken: " + csrf_token,
    }
);

Thread.Sleep(3 * 1000);

// GET Получаем токен
resultGet = ZennoPoster.HttpGet(
    "http://" + host + "/api/webserver/SesTokInfo",
    proxy,
    "UTF-8",
    ZennoLab.InterfacesLibrary.Enums.Http.ResponceType.HeaderAndBody,
    30000,
    string.Empty,
    userAgent,
    true,
    5
);
// Парсим Set-Cookie и csrf_token
matchCookie = Regex.Match(resultGet, "(?<=<SesInfo>).*(?=</SesInfo>)");
matchCsrf_token = Regex.Match(resultGet, "(?<=<TokInfo>).*(?=</TokInfo>)");
if (!matchCookie.Success || !matchCsrf_token.Success)
    return null;
cookies = matchCookie.Value;
csrf_token = matchCsrf_token.Value;

// POST Переключение на 4g-3g lte-UMTS
resultPost = ZennoPoster.HttpPost(
    "http://" + host + "/api/net/net-mode",
    "<request><NetworkMode>0302</NetworkMode><NetworkBand>3FFFFFFF</NetworkBand><LTEBand>800C5</LTEBand></request>",
    "",
    proxy,
    "UTF-8",
    ZennoLab.InterfacesLibrary.Enums.Http.ResponceType.BodyOnly,
    30000,
    cookies,
    userAgent,
    true,
    5,
    AdditionalHeaders: new[] {
        "__RequestVerificationToken: " + csrf_token,
    }
);
Thread.Sleep(3 * 1000);

// GET Получаем токен
resultGet = ZennoPoster.HttpGet(
    "http://" + host + "/api/webserver/SesTokInfo",
    proxy,
    "UTF-8",
    ZennoLab.InterfacesLibrary.Enums.Http.ResponceType.HeaderAndBody,
    30000,
    string.Empty,
    userAgent,
    true,
    5
);
// Парсим Set-Cookie и csrf_token
matchCookie = Regex.Match(resultGet, "(?<=<SesInfo>).*(?=</SesInfo>)");
matchCsrf_token = Regex.Match(resultGet, "(?<=<TokInfo>).*(?=</TokInfo>)");
if (!matchCookie.Success || !matchCsrf_token.Success)
    return null;
cookies = matchCookie.Value;
csrf_token = matchCsrf_token.Value;

// POST Включаем передачу данных
resultPost = ZennoPoster.HttpPost(
    "http://" + host + "/api/dialup/mobile-dataswitch",
    "<request><dataswitch>1</dataswitch></request>",
    "",
    proxy,
    "UTF-8",
    ZennoLab.InterfacesLibrary.Enums.Http.ResponceType.BodyOnly,
    30000,
    cookies,
    userAgent,
    true,
    5,
    AdditionalHeaders: new[] {
        "__RequestVerificationToken: " + csrf_token,
    }
);

Также можно добавить модуль, который проверяет соединение с интернетом через тот же api. Если соединение не установлено в течении указанного времени,то выходит по красной ветке.

PHP:
int x1 = 40;// Количество циклов ожидания подключения модема к сети. Пауза между циклами 3сек,чтоб не напрягать модем. По умолчанию 40 - это 120сек (2минуты)
while (x1 > 0){
    // GET Получаем токен
    var resultGet1 = ZennoPoster.HttpGet(
        "http://" + host + "/api/webserver/SesTokInfo",
        proxy,
        "UTF-8",
        ZennoLab.InterfacesLibrary.Enums.Http.ResponceType.HeaderAndBody,
        30000,
        string.Empty,
        userAgent,
        true,
        5
    );
    // Парсим Set-Cookie и csrf_token
    Match matchCookie1 = Regex.Match(resultGet, "(?<=<SesInfo>).*(?=</SesInfo>)");
    Match matchCsrf_token1 = Regex.Match(resultGet, "(?<=<TokInfo>).*(?=</TokInfo>)");
    if (!matchCookie1.Success || !matchCsrf_token1.Success)
        return null;
    string cookies1 = matchCookie1.Value;
    string csrf_token1 = matchCsrf_token1.Value;
    // GET Получаем статус соединения
    resultGet1 = ZennoPoster.HttpGet(
        "http://" + host + "/api/monitoring/status",
        proxy,
        "UTF-8",
        ZennoLab.InterfacesLibrary.Enums.Http.ResponceType.HeaderAndBody,
        30000,
        cookies1,
        userAgent,
        true,
        5,
        AdditionalHeaders: new[] {
            "__RequestVerificationToken: " + csrf_token1,
        }
    );
    Match matchConnectionStatus = Regex.Match(resultGet1, "(?<=<ConnectionStatus>).*(?=</ConnectionStatus>)");
    string ConnectionStatus = matchConnectionStatus.Value;
    if (ConnectionStatus == "901"){
        project.SendInfoToLog("Соединение установлено!", true);
        break;
    }
    System.Threading.Thread.Sleep(3000);
    x1--;
}
if (x1 == 0){
    project.SendErrorToLog("Соединение не установлено!", true);
    return null;
}
Такой вопрос как реализировать подключение к модему через Api если требуется авторизация?
Логин и пароль стоит дефолтный..
 

санчил

Client
Регистрация
15.04.2016
Сообщения
318
Благодарностей
55
Баллы
28
Доработанная версия скрипта от Dimionix
Т.к. Hilink имеет свой api, но он не обычный, требует id сессии и куки при любом запросе, переделал скрипт под api, почистив от мусора.
Работает смена ip с 4G.
Алгоритм следующий:
Отключаем передачу данных => Переключаем сеть на UMTS => Переключаем сеть на LTE-UMTS => Подключаемся к сети
API по Hilink
PHP:
// Сообщение в лог
project.SendWarningToLog("", "Переподключение сети!", true);
string protocol = project.Variables["Protocol"].Value; // http:// или socks5://
string proxy = project.Variables["Proxy"].Value;
string userAgent = "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:50.0) Gecko/20100101 Firefox/50.0";
string host = project.Variables["proxy_host"].Value; // например, 192.168.1.1
// GET Получаем токен
var resultGet = ZennoPoster.HttpGet(
    "http://" + host + "/api/webserver/SesTokInfo",
    proxy,
    "UTF-8",
    ZennoLab.InterfacesLibrary.Enums.Http.ResponceType.HeaderAndBody,
    30000,
    string.Empty,
    userAgent,
    true,
    5
);
// Парсим Set-Cookie и csrf_token
Match matchCookie = Regex.Match(resultGet, "(?<=<SesInfo>).*(?=</SesInfo>)");
Match matchCsrf_token = Regex.Match(resultGet, "(?<=<TokInfo>).*(?=</TokInfo>)");
if (!matchCookie.Success || !matchCsrf_token.Success)
    return null;
string cookies = matchCookie.Value;
string csrf_token = matchCsrf_token.Value;

// POST Отключаем передачу данных
var resultPost = ZennoPoster.HttpPost(
    "http://" + host + "/api/dialup/mobile-dataswitch",
    "<request><dataswitch>0</dataswitch></request>",
    "",
    proxy,
    "UTF-8",
    ZennoLab.InterfacesLibrary.Enums.Http.ResponceType.BodyOnly,
    30000,
    cookies,
    userAgent,
    true,
    5,
    AdditionalHeaders: new[] {
        "__RequestVerificationToken: " + csrf_token,
    }
);

Thread.Sleep(3 * 1000);

// GET Получаем токен
resultGet = ZennoPoster.HttpGet(
    "http://" + host + "/api/webserver/SesTokInfo",
    proxy,
    "UTF-8",
    ZennoLab.InterfacesLibrary.Enums.Http.ResponceType.HeaderAndBody,
    30000,
    string.Empty,
    userAgent,
    true,
    5
);
// Парсим Set-Cookie и csrf_token
matchCookie = Regex.Match(resultGet, "(?<=<SesInfo>).*(?=</SesInfo>)");
matchCsrf_token = Regex.Match(resultGet, "(?<=<TokInfo>).*(?=</TokInfo>)");
if (!matchCookie.Success || !matchCsrf_token.Success)
    return null;
cookies = matchCookie.Value;
csrf_token = matchCsrf_token.Value;

// POST Переключение на 3g
resultPost = ZennoPoster.HttpPost(
    "http://" + host + "/api/net/net-mode",
    "<request><NetworkMode>02</NetworkMode><NetworkBand>3FFFFFFF</NetworkBand><LTEBand>800C5</LTEBand></request>",
    "",
    proxy,
    "UTF-8",
    ZennoLab.InterfacesLibrary.Enums.Http.ResponceType.BodyOnly,
    30000,
    cookies,
    userAgent,
    true,
    5,
    AdditionalHeaders: new[] {
        "__RequestVerificationToken: " + csrf_token,
    }
);

Thread.Sleep(3 * 1000);

// GET Получаем токен
resultGet = ZennoPoster.HttpGet(
    "http://" + host + "/api/webserver/SesTokInfo",
    proxy,
    "UTF-8",
    ZennoLab.InterfacesLibrary.Enums.Http.ResponceType.HeaderAndBody,
    30000,
    string.Empty,
    userAgent,
    true,
    5
);
// Парсим Set-Cookie и csrf_token
matchCookie = Regex.Match(resultGet, "(?<=<SesInfo>).*(?=</SesInfo>)");
matchCsrf_token = Regex.Match(resultGet, "(?<=<TokInfo>).*(?=</TokInfo>)");
if (!matchCookie.Success || !matchCsrf_token.Success)
    return null;
cookies = matchCookie.Value;
csrf_token = matchCsrf_token.Value;

// POST Переключение на 4g-3g lte-UMTS
resultPost = ZennoPoster.HttpPost(
    "http://" + host + "/api/net/net-mode",
    "<request><NetworkMode>0302</NetworkMode><NetworkBand>3FFFFFFF</NetworkBand><LTEBand>800C5</LTEBand></request>",
    "",
    proxy,
    "UTF-8",
    ZennoLab.InterfacesLibrary.Enums.Http.ResponceType.BodyOnly,
    30000,
    cookies,
    userAgent,
    true,
    5,
    AdditionalHeaders: new[] {
        "__RequestVerificationToken: " + csrf_token,
    }
);
Thread.Sleep(3 * 1000);

// GET Получаем токен
resultGet = ZennoPoster.HttpGet(
    "http://" + host + "/api/webserver/SesTokInfo",
    proxy,
    "UTF-8",
    ZennoLab.InterfacesLibrary.Enums.Http.ResponceType.HeaderAndBody,
    30000,
    string.Empty,
    userAgent,
    true,
    5
);
// Парсим Set-Cookie и csrf_token
matchCookie = Regex.Match(resultGet, "(?<=<SesInfo>).*(?=</SesInfo>)");
matchCsrf_token = Regex.Match(resultGet, "(?<=<TokInfo>).*(?=</TokInfo>)");
if (!matchCookie.Success || !matchCsrf_token.Success)
    return null;
cookies = matchCookie.Value;
csrf_token = matchCsrf_token.Value;

// POST Включаем передачу данных
resultPost = ZennoPoster.HttpPost(
    "http://" + host + "/api/dialup/mobile-dataswitch",
    "<request><dataswitch>1</dataswitch></request>",
    "",
    proxy,
    "UTF-8",
    ZennoLab.InterfacesLibrary.Enums.Http.ResponceType.BodyOnly,
    30000,
    cookies,
    userAgent,
    true,
    5,
    AdditionalHeaders: new[] {
        "__RequestVerificationToken: " + csrf_token,
    }
);

Также можно добавить модуль, который проверяет соединение с интернетом через тот же api. Если соединение не установлено в течении указанного времени,то выходит по красной ветке.

PHP:
int x1 = 40;// Количество циклов ожидания подключения модема к сети. Пауза между циклами 3сек,чтоб не напрягать модем. По умолчанию 40 - это 120сек (2минуты)
while (x1 > 0){
    // GET Получаем токен
    var resultGet1 = ZennoPoster.HttpGet(
        "http://" + host + "/api/webserver/SesTokInfo",
        proxy,
        "UTF-8",
        ZennoLab.InterfacesLibrary.Enums.Http.ResponceType.HeaderAndBody,
        30000,
        string.Empty,
        userAgent,
        true,
        5
    );
    // Парсим Set-Cookie и csrf_token
    Match matchCookie1 = Regex.Match(resultGet, "(?<=<SesInfo>).*(?=</SesInfo>)");
    Match matchCsrf_token1 = Regex.Match(resultGet, "(?<=<TokInfo>).*(?=</TokInfo>)");
    if (!matchCookie1.Success || !matchCsrf_token1.Success)
        return null;
    string cookies1 = matchCookie1.Value;
    string csrf_token1 = matchCsrf_token1.Value;
    // GET Получаем статус соединения
    resultGet1 = ZennoPoster.HttpGet(
        "http://" + host + "/api/monitoring/status",
        proxy,
        "UTF-8",
        ZennoLab.InterfacesLibrary.Enums.Http.ResponceType.HeaderAndBody,
        30000,
        cookies1,
        userAgent,
        true,
        5,
        AdditionalHeaders: new[] {
            "__RequestVerificationToken: " + csrf_token1,
        }
    );
    Match matchConnectionStatus = Regex.Match(resultGet1, "(?<=<ConnectionStatus>).*(?=</ConnectionStatus>)");
    string ConnectionStatus = matchConnectionStatus.Value;
    if (ConnectionStatus == "901"){
        project.SendInfoToLog("Соединение установлено!", true);
        break;
    }
    System.Threading.Thread.Sleep(3000);
    x1--;
}
if (x1 == 0){
    project.SendErrorToLog("Соединение не установлено!", true);
    return null;
}
привет , первый код работает , а во вотром ошибка у меня который проверяет соединение с интернетом через тот же api. можешь помочь?
 

Rooter85

Client
Регистрация
04.07.2015
Сообщения
244
Благодарностей
63
Баллы
28
привет , первый код работает , а во вотром ошибка у меня который проверяет соединение с интернетом через тот же api. можешь помочь?
В снипете проверки соединения в строке 4 переменная называется resultGet1. А в строках 16 и 17 идет обращение к переменной resultGet, которая отсутствует. Поменяйте имя переменной на resultGet1.
 

санчил

Client
Регистрация
15.04.2016
Сообщения
318
Благодарностей
55
Баллы
28
В снипете проверки соединения в строке 4 переменная называется resultGet1. А в строках 16 и 17 идет обращение к переменной resultGet, которая отсутствует. Поменяйте имя переменной на resultGet1.
http://prntscr.com/nxqmjl
спасибо за ответ, поменял как высказали . но все равно не работает
 

Rooter85

Client
Регистрация
04.07.2015
Сообщения
244
Благодарностей
63
Баллы
28
спасибо за ответ, поменял как высказали . но все равно не работает
PM ругается на отсутствие переменных в снипете. Скопируйте строки 4, 5, 6 из снипета смены IP и вставьте в снипет проверки сети.
А string proxy лучше присвоить значение String.Empty , не понимаю зачем ей присваивать значение прокси проекта, если модем управляется через локальный IP.
 
  • Спасибо
Реакции: санчил

санчил

Client
Регистрация
15.04.2016
Сообщения
318
Благодарностей
55
Баллы
28
cgfcb,j
PM ругается на отсутствие переменных в снипете. Скопируйте строки 4, 5, 6 из снипета смены IP и вставьте в снипет проверки сети.
А string proxy лучше присвоить значение String.Empty , не понимаю зачем ей присваивать значение прокси проекта, если модем управляется через локальный IP.
спасибо скопировал, все работает. мой модем управляется не в локалке, я удаленно управляю 5 модемами
 
Последнее редактирование:

0LEzhka

Client
Регистрация
08.08.2019
Сообщения
41
Благодарностей
4
Баллы
8
Привет всем. Решил проблему перезагрузки модема huawei e3372 в режиме 4G, как в ОС linux, так и на Windows.
В Linux использую bash скрипт
В Windows использую зеннопостер (кубик на C#)
Кому интересно - могу помочь в этом !
можно выложить этот кубик? уже просто голову сломал не могу прикрутить в зенопостер модем.
 

Онегин

Client
Регистрация
18.05.2019
Сообщения
64
Благодарностей
6
Баллы
8
Подскажите новоиспечённому зенкаводу, что делать с файлом bat , просто создать файл с этим кодом и запустить или его куда то нужно запихнуть? :cn:
 

VIXA

Client
Регистрация
17.06.2016
Сообщения
54
Благодарностей
8
Баллы
8
Последнее редактирование:
  • Спасибо
Реакции: semenka

frazer

Client
Регистрация
29.11.2019
Сообщения
4
Благодарностей
4
Баллы
3
Подскажите как реализовать такой метод перезагрузки https://zennolab.com/discussion/threads/upravlenie-3g-modemom.33960/post-388846
С одной стороны вроде как код пхп,который в зенке не поддерживается, с другой стороны внутри кода я вижу функции с зенно.

И еще вопрос- как отключить запуск браузера при перезагрузке модема?
 

Koqpe

Client
Регистрация
23.12.2014
Сообщения
1 100
Благодарностей
649
Баллы
113
С одной стороны вроде как код пхп
Нет, это просто раньше на форуме при вставке кода не было возможности выбрать C#. Создаете нужные переменные в проекте и вперед, код отлично комментирован.
В следующий раз лучше спрашивайте с цитированием части поста, так автору поста придет оповещение и он быстрее ответит. :bt:
 
  • Спасибо
Реакции: frazer

frazer

Client
Регистрация
29.11.2019
Сообщения
4
Благодарностей
4
Баллы
3
Нет, это просто раньше на форуме при вставке кода не было возможности выбрать C#. Создаете нужные переменные в проекте и вперед, код отлично комментирован.
В следующий раз лучше спрашивайте с цитированием части поста, так автору поста придет оповещение и он быстрее ответит. :bt:
вроде вижу только переменную host .

Как я понимаю- это будет мой айпишник модема, т.е. к примеру в начале проекта перменная host присваивает значение 192.168.8.1 и далее выполняется блок с кодом выше.
 

Koqpe

Client
Регистрация
23.12.2014
Сообщения
1 100
Благодарностей
649
Баллы
113
вроде вижу только переменную host .
Три переменные:
C#:
project.Variables["Protocol"].Value; // http:// или socks5://

project.Variables["Proxy"].Value;

project.Variables["proxy_host"].Value; // например, 192.168.1.1
Имена переменных которые нужно создать в ПМ находятся в квадратных скобках в кавычках: Protocol, Proxy, proxy_host
Даже если какая-то переменная не используется, все равно создайте, а то выдаст ошибку.
 
  • Спасибо
Реакции: frazer

frazer

Client
Регистрация
29.11.2019
Сообщения
4
Благодарностей
4
Баллы
3
Три переменные:
C#:
project.Variables["Protocol"].Value; // http:// или socks5://

project.Variables["Proxy"].Value;

project.Variables["proxy_host"].Value; // например, 192.168.1.1
Имена переменных которые нужно создать в ПМ находятся в квадратных скобках в кавычках: Protocol, Proxy, proxy_host
Даже если какая-то переменная не используется, все равно создайте, а то выдаст ошибку.
в общем скрипт выдает ошибку...в чем дело не знаю. может кто глянет на досуге
 

frazer

Client
Регистрация
29.11.2019
Сообщения
4
Благодарностей
4
Баллы
3
все,в чате помогли разобраться. Не там переменные задал. Вот кому надо исходник
 

dmtet

Client
Регистрация
06.07.2010
Сообщения
185
Благодарностей
21
Баллы
18
Кину и свой батник, может кому пригодится. Использую для перезагрузки 3G модема от Интертелеком (Украина).
Что-то не сработал ваш батник
usb модем E355

48776
 

Gang

Client
Регистрация
04.04.2010
Сообщения
577
Благодарностей
313
Баллы
63

todayer

Client
Регистрация
07.08.2013
Сообщения
938
Благодарностей
390
Баллы
63
Подскажите, есть ли возможность смены ip у huawei 3372 через post get запросы? Прошивка hilink
 

санчил

Client
Регистрация
15.04.2016
Сообщения
318
Благодарностей
55
Баллы
28
  • Спасибо
Реакции: todayer

todayer

Client
Регистрация
07.08.2013
Сообщения
938
Благодарностей
390
Баллы
63

PavelK

Client
Регистрация
09.04.2020
Сообщения
9
Благодарностей
2
Баллы
3
Смена IP адреса (Переподключение сети) для 3G/4G модемов с прошивкой HiLink и Модифицированным веб-интерфейсом на основе WebUI.

Без перезагрузки модема!
Смена IP происходит за 10 сек.

Внимание! В настройках сети предпочтительный режим должен быть выбран UMTS или GSM, т.к. в сети 4G (LTE) данный способ смены IP не работает.


Посмотреть вложение 17994 Посмотреть вложение 17995

C#:
// Сообщение в лог
project.SendWarningToLog("", "Переподключение сети!", true);

string protocol = project.Variables["Protocol"].Value; // http:// или socks5://
string proxy = project.Variables["Proxy"].Value;
string userAgent = "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:50.0) Gecko/20100101 Firefox/50.0";
string host = project.Variables["Host"].Value; // например, 192.168.1.1

// GET запрос
var resultGet = ZennoPoster.HttpGet(
    "http://" + host + "/html/mobileconnection.html",
    protocol + proxy,
    "UTF-8",
    ZennoLab.InterfacesLibrary.Enums.Http.ResponceType.HeaderAndBody,
    30000,
    string.Empty,
    userAgent,
    true,
    5,
    AdditionalHeaders: new[] {
        "Host: " + host,
        "Accept: */*",
        "Accept-Language: ru-RU",
        "Connection: keep-alive",
        "Referer: http://" + host + "/html/home.html"
    }
);

// Парсим Set-Cookie и csrf_token
Match matchCookie = Regex.Match(resultGet, "(?<=Set-Cookie: ).*?(?=;)");
Match matchCsrf_token = Regex.Match(resultGet, "(?<=\"csrf_token\" content=\").*?(?=\")");
if (!matchCookie.Success || !matchCsrf_token.Success)
    return null;
string cookies = matchCookie.Value;
string csrf_token = matchCsrf_token.Value;

// POST Отключение
var resultPost = ZennoPoster.HttpPost(
    "http://" + host + "/api/dialup/mobile-dataswitch",
    "<?xml version=\"1.0\" encoding=\"UTF-8\"?><request><dataswitch>0</dataswitch></request>",
    "application/x-www-form-urlencoded",
    protocol + proxy,
    "UTF-8",
    ZennoLab.InterfacesLibrary.Enums.Http.ResponceType.BodyOnly,
    30000,
    cookies,
    userAgent,
    true,
    5,
    AdditionalHeaders: new[] {
        "Host: " + host,
        "Accept: */*",
        "Accept-Language: ru-RU",
        "Accept-Encoding: gzip, deflate",
        "DNT: 1",
        "Content-Type: application/x-www-form-urlencoded; charset=UTF-8",
        "__RequestVerificationToken: " + csrf_token,
        "X-Requested-With: XMLHttpRequest",
        "Connection: keep-alive",
        "Referer: http://" + host + "/html/mobileconnection.html"
    }
);

// Пауза
Thread.Sleep(2 * 1000);

// GET запрос 2
resultGet = ZennoPoster.HttpGet(
    "http://" + host + "/html/mobileconnection.html",
    protocol + proxy,
    "UTF-8",
    ZennoLab.InterfacesLibrary.Enums.Http.ResponceType.HeaderAndBody,
    30000,
    string.Empty,
    userAgent,
    true,
    5,
    AdditionalHeaders: new[] {
        "Host: " + host,
        "Accept: */*",
        "Accept-Language: ru-RU",
        "Connection: keep-alive",
        "Referer: http://" + host + "/html/home.html"
    }
);

// Парсим Set-Cookie и csrf_token
matchCookie = Regex.Match(resultGet, "(?<=Set-Cookie: ).*?(?=;)");
matchCsrf_token = Regex.Match(resultGet, "(?<=\"csrf_token\" content=\").*?(?=\")");
if (!matchCookie.Success || !matchCsrf_token.Success)
    return null;
cookies = matchCookie.Value;
csrf_token = matchCsrf_token.Value;

// POST Подключение
resultPost = ZennoPoster.HttpPost(
    "http://" + host + "/api/dialup/mobile-dataswitch",
    "<?xml version=\"1.0\" encoding=\"UTF-8\"?><request><dataswitch>1</dataswitch></request>",
    "application/x-www-form-urlencoded",
    protocol + proxy,
    "UTF-8",
    ZennoLab.InterfacesLibrary.Enums.Http.ResponceType.BodyOnly,
    30000,
    cookies,
    userAgent,
    true,
    5,
    AdditionalHeaders: new[] {
        "Host: " + host,
        "Accept: */*",
        "Accept-Language: ru-RU",
        "Accept-Encoding: gzip, deflate",
        "DNT: 1",
        "Content-Type: application/x-www-form-urlencoded; charset=UTF-8",
        "__RequestVerificationToken: " + csrf_token,
        "X-Requested-With: XMLHttpRequest",
        "Connection: keep-alive",
        "Referer: http://" + host + "/html/mobileconnection.html"
    }
);

// Рандомная пауза
Random rnd = new Random();
Thread.Sleep(rnd.Next(7, 11) * 1000);

Как перепрошить свой 3G/4G модем в HiLink читайте на форуме 4pda.ru
Подскажите для huawei 8372 HiLink использую это скрипт

C#:
// Сообщение в лог
project.SendWarningToLog("", "Переподключение сети!", true);
string protocol ="http://";
string proxy = string.Empty;
string userAgent = "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:50.0) Gecko/20100101 Firefox/50.0";

// GET Получаем токен
var resultGet = ZennoPoster.HttpGet(
    "http://192.168.8.1/api/webserver/SesTokInfo",
    proxy,
    "UTF-8",
    ZennoLab.InterfacesLibrary.Enums.Http.ResponceType.HeaderAndBody,
    30000,
    string.Empty,
    userAgent,
    true,
    5
);

// Парсим Set-Cookie и csrf_token
Match matchCookie = Regex.Match(resultGet, "(?<=<SesInfo>).*(?=</SesInfo>)");
Match matchCsrf_token = Regex.Match(resultGet, "(?<=<TokInfo>).*(?=</TokInfo>)");
if (!matchCookie.Success || !matchCsrf_token.Success)
    return null;
string cookies = matchCookie.Value;
string csrf_token = matchCsrf_token.Value;

// POST Отключаем передачу данных
var resultPost = ZennoPoster.HttpPost(
    "http://192.168.8.1/api/dialup/mobile-dataswitch",
    "<request><dataswitch>0</dataswitch></request>",
    "",
    proxy,
    "UTF-8",
    ZennoLab.InterfacesLibrary.Enums.Http.ResponceType.BodyOnly,
    30000,
    cookies,
    userAgent,
    true,
    5,
    AdditionalHeaders: new[] {
        "__RequestVerificationToken: " + csrf_token,
    }
);

project.Variables["resultpost1"].Value=resultPost;


Thread.Sleep(3 * 1000);

// GET Получаем токен
resultGet = ZennoPoster.HttpGet(
    "http://192.168.8.1/api/webserver/SesTokInfo",
    proxy,
    "UTF-8",
    ZennoLab.InterfacesLibrary.Enums.Http.ResponceType.HeaderAndBody,
    30000,
    string.Empty,
    userAgent,
    true,
    5
);
// Парсим Set-Cookie и csrf_token
matchCookie = Regex.Match(resultGet, "(?<=<SesInfo>).*(?=</SesInfo>)");
matchCsrf_token = Regex.Match(resultGet, "(?<=<TokInfo>).*(?=</TokInfo>)");
if (!matchCookie.Success || !matchCsrf_token.Success)
    return null;
cookies = matchCookie.Value;
csrf_token = matchCsrf_token.Value;

// POST Переключение на 3g
resultPost = ZennoPoster.HttpPost(
    "http://192.168.8.1/api/net/net-mode",
    "<request><NetworkMode>02</NetworkMode><NetworkBand>3FFFFFFF</NetworkBand><LTEBand>800C5</LTEBand></request>",
    "",
    proxy,
    "UTF-8",
    ZennoLab.InterfacesLibrary.Enums.Http.ResponceType.BodyOnly,
    30000,
    cookies,
    userAgent,
    true,
    5,
    AdditionalHeaders: new[] {
        "__RequestVerificationToken: " + csrf_token,
    }
);

project.Variables["resultpost2"].Value=resultPost;


Thread.Sleep(3 * 1000);

// GET Получаем токен
resultGet = ZennoPoster.HttpGet(
    "http://192.168.8.1/api/webserver/SesTokInfo",
    proxy,
    "UTF-8",
    ZennoLab.InterfacesLibrary.Enums.Http.ResponceType.HeaderAndBody,
    30000,
    string.Empty,
    userAgent,
    true,
    5
);

project.Variables["resultpost4"].Value=resultPost;


// Парсим Set-Cookie и csrf_token
matchCookie = Regex.Match(resultGet, "(?<=<SesInfo>).*(?=</SesInfo>)");
matchCsrf_token = Regex.Match(resultGet, "(?<=<TokInfo>).*(?=</TokInfo>)");
if (!matchCookie.Success || !matchCsrf_token.Success)
    return null;
cookies = matchCookie.Value;
csrf_token = matchCsrf_token.Value;

// POST Переключение на 4g-3g lte-UMTS
resultPost = ZennoPoster.HttpPost(
    "http://192.168.8.1/api/net/net-mode",
    "<request><NetworkMode>0302</NetworkMode><NetworkBand>3FFFFFFF</NetworkBand><LTEBand>800C5</LTEBand></request>",
    "",
    proxy,
    "UTF-8",
    ZennoLab.InterfacesLibrary.Enums.Http.ResponceType.BodyOnly,
    30000,
    cookies,
    userAgent,
    true,
    5,
    AdditionalHeaders: new[] {
        "__RequestVerificationToken: " + csrf_token,
    }
);

project.Variables["resultpost3"].Value=resultPost;


Thread.Sleep(3 * 1000);

// GET Получаем токен
resultGet = ZennoPoster.HttpGet(
    "http://192.168.8.1/api/webserver/SesTokInfo",
    proxy,
    "UTF-8",
    ZennoLab.InterfacesLibrary.Enums.Http.ResponceType.HeaderAndBody,
    30000,
    string.Empty,
    userAgent,
    true,
    5
);
// Парсим Set-Cookie и csrf_token
matchCookie = Regex.Match(resultGet, "(?<=<SesInfo>).*(?=</SesInfo>)");
matchCsrf_token = Regex.Match(resultGet, "(?<=<TokInfo>).*(?=</TokInfo>)");
if (!matchCookie.Success || !matchCsrf_token.Success)
    return null;
cookies = matchCookie.Value;
csrf_token = matchCsrf_token.Value;

// POST Включаем передачу данных
resultPost = ZennoPoster.HttpPost(
    "http://192.168.8.1/api/dialup/mobile-dataswitch",
    "<request><dataswitch>1</dataswitch></request>",
    "",
    proxy,
    "UTF-8",
    ZennoLab.InterfacesLibrary.Enums.Http.ResponceType.BodyOnly,
    30000,
    cookies,
    userAgent,
    true,
    5,
    AdditionalHeaders: new[] {
        "__RequestVerificationToken: " + csrf_token,
    }
);

project.Variables["resultpost4"].Value=resultPost;

в ответ на post запрос приходит

<?xml version="1.0" encoding="UTF-8"?>
<error>
<code>100003</code>
<message></message>
</error>


Думаю что это из за того что нет логина, подскажите как исправить код
 
Последнее редактирование:

Fisher312

Client
Регистрация
06.08.2018
Сообщения
59
Благодарностей
23
Баллы
8
Подскажите для huawei 8372 HiLink использую это скрипт

C#:
// Сообщение в лог
project.SendWarningToLog("", "Переподключение сети!", true);
string protocol ="http://";
string proxy = string.Empty;
string userAgent = "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:50.0) Gecko/20100101 Firefox/50.0";

// GET Получаем токен
var resultGet = ZennoPoster.HttpGet(
    "http://192.168.8.1/api/webserver/SesTokInfo",
    proxy,
    "UTF-8",
    ZennoLab.InterfacesLibrary.Enums.Http.ResponceType.HeaderAndBody,
    30000,
    string.Empty,
    userAgent,
    true,
    5
);

// Парсим Set-Cookie и csrf_token
Match matchCookie = Regex.Match(resultGet, "(?<=<SesInfo>).*(?=</SesInfo>)");
Match matchCsrf_token = Regex.Match(resultGet, "(?<=<TokInfo>).*(?=</TokInfo>)");
if (!matchCookie.Success || !matchCsrf_token.Success)
    return null;
string cookies = matchCookie.Value;
string csrf_token = matchCsrf_token.Value;

// POST Отключаем передачу данных
var resultPost = ZennoPoster.HttpPost(
    "http://192.168.8.1/api/dialup/mobile-dataswitch",
    "<request><dataswitch>0</dataswitch></request>",
    "",
    proxy,
    "UTF-8",
    ZennoLab.InterfacesLibrary.Enums.Http.ResponceType.BodyOnly,
    30000,
    cookies,
    userAgent,
    true,
    5,
    AdditionalHeaders: new[] {
        "__RequestVerificationToken: " + csrf_token,
    }
);

project.Variables["resultpost1"].Value=resultPost;


Thread.Sleep(3 * 1000);

// GET Получаем токен
resultGet = ZennoPoster.HttpGet(
    "http://192.168.8.1/api/webserver/SesTokInfo",
    proxy,
    "UTF-8",
    ZennoLab.InterfacesLibrary.Enums.Http.ResponceType.HeaderAndBody,
    30000,
    string.Empty,
    userAgent,
    true,
    5
);
// Парсим Set-Cookie и csrf_token
matchCookie = Regex.Match(resultGet, "(?<=<SesInfo>).*(?=</SesInfo>)");
matchCsrf_token = Regex.Match(resultGet, "(?<=<TokInfo>).*(?=</TokInfo>)");
if (!matchCookie.Success || !matchCsrf_token.Success)
    return null;
cookies = matchCookie.Value;
csrf_token = matchCsrf_token.Value;

// POST Переключение на 3g
resultPost = ZennoPoster.HttpPost(
    "http://192.168.8.1/api/net/net-mode",
    "<request><NetworkMode>02</NetworkMode><NetworkBand>3FFFFFFF</NetworkBand><LTEBand>800C5</LTEBand></request>",
    "",
    proxy,
    "UTF-8",
    ZennoLab.InterfacesLibrary.Enums.Http.ResponceType.BodyOnly,
    30000,
    cookies,
    userAgent,
    true,
    5,
    AdditionalHeaders: new[] {
        "__RequestVerificationToken: " + csrf_token,
    }
);

project.Variables["resultpost2"].Value=resultPost;


Thread.Sleep(3 * 1000);

// GET Получаем токен
resultGet = ZennoPoster.HttpGet(
    "http://192.168.8.1/api/webserver/SesTokInfo",
    proxy,
    "UTF-8",
    ZennoLab.InterfacesLibrary.Enums.Http.ResponceType.HeaderAndBody,
    30000,
    string.Empty,
    userAgent,
    true,
    5
);

project.Variables["resultpost4"].Value=resultPost;


// Парсим Set-Cookie и csrf_token
matchCookie = Regex.Match(resultGet, "(?<=<SesInfo>).*(?=</SesInfo>)");
matchCsrf_token = Regex.Match(resultGet, "(?<=<TokInfo>).*(?=</TokInfo>)");
if (!matchCookie.Success || !matchCsrf_token.Success)
    return null;
cookies = matchCookie.Value;
csrf_token = matchCsrf_token.Value;

// POST Переключение на 4g-3g lte-UMTS
resultPost = ZennoPoster.HttpPost(
    "http://192.168.8.1/api/net/net-mode",
    "<request><NetworkMode>0302</NetworkMode><NetworkBand>3FFFFFFF</NetworkBand><LTEBand>800C5</LTEBand></request>",
    "",
    proxy,
    "UTF-8",
    ZennoLab.InterfacesLibrary.Enums.Http.ResponceType.BodyOnly,
    30000,
    cookies,
    userAgent,
    true,
    5,
    AdditionalHeaders: new[] {
        "__RequestVerificationToken: " + csrf_token,
    }
);

project.Variables["resultpost3"].Value=resultPost;


Thread.Sleep(3 * 1000);

// GET Получаем токен
resultGet = ZennoPoster.HttpGet(
    "http://192.168.8.1/api/webserver/SesTokInfo",
    proxy,
    "UTF-8",
    ZennoLab.InterfacesLibrary.Enums.Http.ResponceType.HeaderAndBody,
    30000,
    string.Empty,
    userAgent,
    true,
    5
);
// Парсим Set-Cookie и csrf_token
matchCookie = Regex.Match(resultGet, "(?<=<SesInfo>).*(?=</SesInfo>)");
matchCsrf_token = Regex.Match(resultGet, "(?<=<TokInfo>).*(?=</TokInfo>)");
if (!matchCookie.Success || !matchCsrf_token.Success)
    return null;
cookies = matchCookie.Value;
csrf_token = matchCsrf_token.Value;

// POST Включаем передачу данных
resultPost = ZennoPoster.HttpPost(
    "http://192.168.8.1/api/dialup/mobile-dataswitch",
    "<request><dataswitch>1</dataswitch></request>",
    "",
    proxy,
    "UTF-8",
    ZennoLab.InterfacesLibrary.Enums.Http.ResponceType.BodyOnly,
    30000,
    cookies,
    userAgent,
    true,
    5,
    AdditionalHeaders: new[] {
        "__RequestVerificationToken: " + csrf_token,
    }
);

project.Variables["resultpost4"].Value=resultPost;

в ответ на post запрос приходит

<?xml version="1.0" encoding="UTF-8"?>
<error>
<code>100003</code>
<message></message>
</error>


Думаю что это из за того что нет логина, подскажите как исправить код
Привет. Напиши в мне в лс.
 
Последнее редактирование:

Zedx

Client
Регистрация
12.06.2018
Сообщения
1 165
Благодарностей
811
Баллы
113
Нашёл в чулане какой-то модем с названием HSUPA (7.2Mbps), больше никаких опознавательных знаков на нём нет. Поиск тоже ничего не дал. Кто-нибудь знает, что это за зверь такой и подойдёт ли перепрошить?
 

Igorst

Client
Регистрация
07.08.2011
Сообщения
188
Благодарностей
16
Баллы
18

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