Управление 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
Сообщения
16
Благодарностей
1
Баллы
3
Может кто знает как сделать перезагрузку модема при переходе по ссылке?
 

Dima123321123

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

Rooter85

Client
Регистрация
04.07.2015
Сообщения
246
Благодарностей
57
Баллы
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
Сообщения
203
Благодарностей
25
Баллы
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
Сообщения
246
Благодарностей
57
Баллы
28
привет , первый код работает , а во вотром ошибка у меня который проверяет соединение с интернетом через тот же api. можешь помочь?
В снипете проверки соединения в строке 4 переменная называется resultGet1. А в строках 16 и 17 идет обращение к переменной resultGet, которая отсутствует. Поменяйте имя переменной на resultGet1.
 

санчил

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

Rooter85

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

санчил

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

0LEzhka

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

Онегин

Client
Регистрация
18.05.2019
Сообщения
45
Благодарностей
3
Баллы
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
Сообщения
998
Благодарностей
556
Баллы
93
С одной стороны вроде как код пхп
Нет, это просто раньше на форуме при вставке кода не было возможности выбрать C#. Создаете нужные переменные в проекте и вперед, код отлично комментирован.
В следующий раз лучше спрашивайте с цитированием части поста, так автору поста придет оповещение и он быстрее ответит. :bt:
 
  • Спасибо
Реакции: frazer

frazer

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

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

Koqpe

Client
Регистрация
23.12.2014
Сообщения
998
Благодарностей
556
Баллы
93
вроде вижу только переменную 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
Даже если какая-то переменная не используется, все равно создайте, а то выдаст ошибку.
в общем скрипт выдает ошибку...в чем дело не знаю. может кто глянет на досуге
 

dmtet

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

48776
 

Gang

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

Вложения

PavelK

Client
Регистрация
09.04.2020
Сообщения
8
Благодарностей
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
Сообщения
19
Благодарностей
7
Баллы
3
Подскажите для 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
Сообщения
563
Благодарностей
232
Баллы
43
Нашёл в чулане какой-то модем с названием HSUPA (7.2Mbps), больше никаких опознавательных знаков на нём нет. Поиск тоже ничего не дал. Кто-нибудь знает, что это за зверь такой и подойдёт ли перепрошить?
 

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