С Новым годом! Форум программистов, компьютерный форум, киберфорум
C# Windows Forms
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.50/6: Рейтинг темы: голосов - 6, средняя оценка - 4.50
1 / 1 / 1
Регистрация: 07.12.2013
Сообщений: 67
1

Подмена внешнего IP после каждого "тика" таймера

13.05.2014, 17:32. Показов 1086. Ответов 9
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Всем Привет. Что нужно прописать и какие библиотеки использовать в форме, чтобы после каждого тика таймера у нас изменялся внешний IP адрес(делаю накрутчик хостов).
0
IT_Exp
Эксперт
8794 / 1073 / 104
Регистрация: 17.06.2006
Сообщений: 12,602
Блог
13.05.2014, 17:32
Ответы с готовыми решениями:

Оптимизация/обработчик тика таймера
Привет, написал пример того, что мне нужно: Imports System.Timers Module Module1 Dim i As...

Как добавить событие для тика таймера в создаваемой динамически форме
Во, се, гугол задымился! =) Нашел решения всех, на данный момент, проблем. Здесь вы можете найти...

Изменение интервала таймера после каждого цикла
Доброго времени суток. Пытаюсь написать небольшую кликалку мышкой. Подскажите, плз, как в...

Как создать события для "тика" таймера
Как создать события для "тика" таймера? пытался так сделать, но это не правильно ...

9
158 / 187 / 48
Регистрация: 25.11.2013
Сообщений: 978
13.05.2014, 18:38 2
Подсказака: DHCP server
0
Почетный модератор
Эксперт по компьютерным сетямЭксперт Windows
28046 / 15779 / 983
Регистрация: 15.09.2009
Сообщений: 67,752
Записей в блоге: 78
13.05.2014, 18:55 3
Цитата Сообщение от DataPlanner Посмотреть сообщение
DHCP server
чем бедняге поможет? менять надо внешний IP.
dimonkhr, в вашем случае смотреть на переподключение с помощью анонимайзеров.
0
Заблокирован
14.05.2014, 02:30 4
Использовать прокси сервера? например использовать TOP
0
1 / 1 / 1
Регистрация: 07.12.2013
Сообщений: 67
14.05.2014, 14:23  [ТС] 5
а нельзя как то быстро перезагрузить роутер?)))
0
60 / 56 / 5
Регистрация: 17.08.2011
Сообщений: 244
14.05.2014, 14:35 6
Если провайдер после разрыва подключения меняет IP - проблемы нет: выполнить
rasdial /disconnect
sleep - пауза в пару секунд, чтобы дисконнект действительно завершился
rasdial имя_подключения логин пароль
1
1 / 1 / 1
Регистрация: 07.12.2013
Сообщений: 67
16.05.2014, 18:27  [ТС] 7
Можно код)?
0
60 / 56 / 5
Регистрация: 17.08.2011
Сообщений: 244
17.05.2014, 12:33 8
rasdial - системная команда windows, на C# не реализовывал, у меня это работало на PHP на локальном веб-сервере, надо было реализовать проще и быстрее. Но смысл то ясен? в коде программы вызываем системную команду на дисконнект, чуть-чуть подождем, затем вызываем подключение. И да, в начале надо проверять условие:
(подключено? разорвать соединение : подключить)

Добавлено через 8 минут
Ну вот, если в php разбираетесь - код, идет разрыв/соединение коннекта, плюс проверка, чтобы ip не повторялся (чтобы как минимум три последних ip были разными). То есть если вновь выданный ip недавно уже был - интернет снова переподключается.
PHP
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
<?php  //  Переподключение VPN Beeline с проверкой IP             http://scaner.net/bit_ly/internet.php
           //     Применение  include("internet.php"); internet();
function internet(){
$mtime = microtime(); $mtime = explode(" ",$mtime); $tstart = $mtime[1] + $mtime[0];   
$internet = 1;           // считаем, что Интернет изначально есть иначе не будет работать "отключка" интернета.
while($internet > 0){
   $stop = exec("@rasdial /disconnect");  
   if(isset($stop)){
      $internet = 0;
      echo "<b>Сеть:</b> Stop ... ";      
   }
}
      echo "Start ... ";    
while($internet < 1){
   sleep(1);
   $start = exec("@rasdial VPN-Beeline 089....64 08.......4");  
   sleep(1);
   if(isset($start)){
      $test_ip = "http://internet.yandex.ru";
      $time_out = 5;                                                                              // сколько ждать ответ от яндекса ...например: 3 сек
      $ch = curl_init();
      curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $time_out);        
      curl_setopt($ch, CURLOPT_URL, $test_ip); 
      curl_setopt($ch, CURLOPT_FRESH_CONNECT, TRUE);   // принудительно использовать новое соед. вместо закэшированного
      curl_setopt($ch, CURLOPT_ENCODING, "");                         // для  Accept-Encoding: identity, deflate, gzip - если пусто, то все три варианта, если закомментить - то краказябры!
      curl_setopt($ch, CURLOPT_HEADER, 0);                              // заголовки ответов в верху браузера 0-нет 1-да
      curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);         // 1 - сохранить в переменную , 0 - вывести на монитор
      $page = curl_exec($ch);
      $file = fopen('tmp/internet.txt', 'w') or die ("Не удалось открыть файл internet.txt "); fwrite($file, $page); fclose($file);
      curl_close($ch);
      if(empty($page))  {$internet = 0; echo "<span style='color:red'>&crarr;</span> ";}         
      if(!empty($page)) {$internet = 1; echo "<span style='color:green; font-weight:bold;'>ok!</span> "; 
      preg_match_all('#IPv4: (.*)#', $page, $date);foreach ($date[1] as $my_date){$ip_0 .= $my_date;} }       
   }
      $ip_3  = file_get_contents("tmp/ip_3.txt");
      $ip_2  = file_get_contents("tmp/ip_2.txt");
      $ip_1  = trim(file_get_contents("tmp/ip_1.txt"));
      if(!empty($page) AND $ip_0 !=$ip_1 AND $ip_0 !=$ip_2 AND $ip_0 !=$ip_3){
         $internet = 1; 
         echo "<br>$ip_3&rarr;$ip_2&rarr;$ip_1&rarr;<b>$ip_0</b>";
         $ip_file_1 = fopen("tmp/ip_1.txt", "w"); fwrite($ip_file_1, $ip_0); fclose($ip_file_1);  
         $ip_file_2 = fopen("tmp/ip_2.txt", "w"); fwrite($ip_file_2, $ip_1); fclose($ip_file_2);  
         $ip_file_3 = fopen("tmp/ip_3.txt", "w"); fwrite($ip_file_3, $ip_2); fclose($ip_file_3); 
      } 
      else{$internet = 0;}  
}
 
$mtime = microtime(); $mtime = explode(" ",$mtime); $mtime = $mtime[1] + $mtime[0]; $totaltime = ($mtime - $tstart); 
printf (" (%f сек.)", $totaltime);
}
 
internet();
Добавлено через 9 минут
Ну и вот так я в C# делал проверку на коннект:
файл GetInternetConnect.cs:
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
/*
 * Created by SharpDevelop.
 * User: Alex Podusov
 * Date: 07.08.2013
 * Time: 8:37
 * 
 * To change this template use Tools | Options | Coding | Edit Standard Headers.
 */
using System;
using System.Collections.Generic;
using System.Text;
using System.Runtime.InteropServices;
 
namespace ToolsAMS
{
    /// <summary>
    /// Description of GetInternetConnect.
    /// </summary>
    public class InternetConnection
    {
        /// <summary>
        /// Состояние соединения
        /// </summary>
        [Flags]
        public enum InternetConnectionState : int
        {
            INTERNET_CONNECTION_MODEM = 0x1,
            INTERNET_CONNECTION_LAN = 0x2,
            INTERNET_CONNECTION_PROXY = 0x4,
            INTERNET_RAS_INSTALLED = 0x10,
            INTERNET_CONNECTION_OFFLINE = 0x20,
            INTERNET_CONNECTION_CONFIGURED = 0x40
        }
 
        private bool isInternetConnected;
        private bool isUsingModem;
        private bool isOffline;
        private bool isUsingLAN;
        private bool isUsingProxy;
        private bool isRasEnabled;
 
        #region Свойства
        public bool IsInternetConnected
        {
            get { return isInternetConnected; }
        }
 
        public bool IsUsingModem
        {
            get { return isUsingModem; }
        }
 
        public bool IsOffline
        {
            get { return isOffline; }
        }
 
        public bool IsUsingLAN
        {
            get { return isUsingLAN; }
        }
 
        public bool IsUsingProxy
        {
            get { return isUsingProxy; }
        }
 
        public bool IsRasEnabled
        {
            get { return isRasEnabled; }
        }
        #endregion
 
        [DllImport("WININET", CharSet = CharSet.Auto)]
        static extern bool InternetGetConnectedState(ref InternetConnectionState lpdwFlags, int dwReserved);
 
        public void Init()
        {
            InternetConnectionState flags = 0;
            isInternetConnected = InternetGetConnectedState(ref flags, 0);
            isUsingModem = (flags & InternetConnectionState.INTERNET_CONNECTION_MODEM) != 0;
            isUsingLAN = (flags & InternetConnectionState.INTERNET_CONNECTION_LAN) != 0;
            isOffline = (flags & InternetConnectionState.INTERNET_CONNECTION_OFFLINE) != 0;
            isUsingProxy = (flags & InternetConnectionState.INTERNET_CONNECTION_PROXY) != 0;
            isRasEnabled = (flags & InternetConnectionState.INTERNET_RAS_INSTALLED) != 0;
        }
    }
}
В основном коде вставляем:
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
        #region Функции коннекта и дисконнекта --> 
        public void CheckConnect()
        {
            InternetConnection inet = new InternetConnection();
            inet.Init();
            if (online = inet.IsInternetConnected)
            {
                // переопределяем переменные в случае имеющегося подключения. свои не стал удалять, ну как пример
                if (!changOnline)
                {
                    label6.ForeColor = System.Drawing.Color.Yellow;
                    label16.Text = "Подключение...";
                    ToIP = GetIP();
                    label16.Text = ToIP;
                    label6.ForeColor = System.Drawing.Color.Green;
                    changOnline = true;
                    if (button1.Text == "Стоп")
                        timer1.Enabled = true;
                }
            }
            else
            {
                // переопределяем переменные в случае отключения коннекта. свои не стал удалять, ну как пример
                label6.ForeColor = System.Drawing.Color.Red;
                changOnline = false;
                ToIP = "0.0.0.0";
                label16.Text = "Не подключен";
                timer1.Enabled = false;
            }
        }
                    
        public string GetIP()
        {
            WebClient client = new WebClient ();
            string reply = client.DownloadString ("http://internet.yandex.ru/");
            string fndString = "IPv4:";
            int pos = reply.IndexOf(fndString);
            string toParse = reply.Substring(pos + fndString.Length + 1, 15);
            return toParse.Trim();
        }
        
        public bool MyConnect () 
        {
            CheckConnect();
            while (!online) 
            {
                // здесь используем вызов rasdial VPN-Beeline login password
                CheckConnect();
            }
            return true;
        }
        public bool MyDisconnect () 
        {
            CheckConnect();
            while (online) 
            {
                // здесь используем вызов rasdial /disconnect
                CheckConnect();
            }
            return true;
        }
        public bool MyReconnect() 
        {
            MyDisconnect();
            //sleep(1);
            MyConnect();
            return true; 
        }
        #endregion
1
60 / 56 / 5
Регистрация: 17.08.2011
Сообщений: 244
17.05.2014, 12:47 9
Да вот собственно использованный мной код проверки состояния подключения, и код начатого проекта, до конца не доведенного, там то и осталось - включить именно вызов системной команды windows, и делать проверку нового ip на несовпадение. Из настроек - время переподключения (уже работает), количество последних несовпадающих IP (есть), получение текущего ip(работает), проверка подключено/отключено (работает), ручное переподключение(работает), ожидание/пауза(работает).
Вложения
Тип файла: 7z ToolsAMS.7z (64.1 Кб, 5 просмотров)
Тип файла: 7z TestInternetConnection.7z (6.9 Кб, 3 просмотров)
1
1 / 1 / 1
Регистрация: 07.12.2013
Сообщений: 67
20.05.2014, 23:20  [ТС] 10
Ещё варианты есть!?
0
20.05.2014, 23:20
BasicMan
Эксперт
19315 / 2622 / 84
Регистрация: 17.02.2009
Сообщений: 10,364
Блог
20.05.2014, 23:20
Помогаю со студенческими работами здесь

Таймер останавливается после одного тика
Хотел сделать таймер обратного отчета, но в хоте программирования понял что элемент Timer1...

Остановить таймер после совершения тика
Хочу сделать определенные действия на таймере! При запуске приложения делало определенное...

Остановка dispatchertimer после 1ого тика
Представим такую картину : Нужно, чтобы при загрузке главной страницы через 2 секунды вылетал...

После первого тика таймер останавливается
У мя у тяймера стоит интервал 100 и в Enable = true а в самом действии таймера private void...

Timer и прекращение его работы после первого тика
Здравствуйте! Недавно на форуме нашёл тему похожую... Там рассказывали, как выполняются...

Таймер обратного отсчёта останавливается после первого тика
Здравствуйте! Проблема: не стартует таймер, не могу понять, где ошибка в цикле. Проходит одна...


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

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Блоги программистов
Обновление сайта www.historian.b­y
Reglage 05.01.2025
Обещал подвести итоги 2024 года для сайта. Однако начну с того, что изменилось за неделю. Добавил краткий урок по последовательности действий при анализе вредоносных файлов и значительно улучшил урок. . .
Как использовать GraphQL в C# с HotChocolate
Programming 05.01.2025
GraphQL — это современный подход к разработке API, который позволяет клиентам запрашивать только те данные, которые им необходимы. Это делает взаимодействие с API более гибким и эффективным по. . .
Модель полного двоичного суматора с помощью логических операций (python)
AlexSky-coder 04.01.2025
def binSum(x:list, y:list): s=^y] p=x and y for i in range(1,len(x)): s. append((x^y)^p) p=(x and y)or(p and (x or y)) return s x=list() y=list()
Это мы не проходили, это нам не задавали...(аси­­хронный счётчик с управляющим сигналом задержки).
Hrethgir 04.01.2025
Асинхронный счётчик на сумматорах (шестиразрядный по числу диодов на плате, но наверное разрядов будет больше - восемь или шестнадцать, а диоды на старшие), так как триггеры прошли тестирование и. . .
Руководство по созданию бота для Телеграм на Python
IT_Exp 04.01.2025
Боты для Телеграм представляют собой автоматизированные программы, которые выполняют различные задачи, взаимодействуя с пользователями через интерфейс мессенджера. В данной статье мы рассмотрим,. . .
Применение компонентов PrimeVue в Vue.js 3 на TypeScript
BasicMan 04.01.2025
Введение в PrimeVue и настройка окружения PrimeVue представляет собой мощную библиотеку компонентов пользовательского интерфейса для Vue. js 3, которая предоставляет разработчикам богатый набор. . .
Как стать Senior developer
cpp_developer 04.01.2025
В современной индустрии разработки программного обеспечения позиция Senior Developer представляет собой не просто следующую ступень карьерной лестницы, а качественно новый уровень профессионального. . .
Что известно о дате выхода Windows 12 и чего от нее ждать
IT_Exp 04.01.2025
В мире технологий постоянно происходят изменения, и операционные системы не являются исключением. Windows 11, выпущенная в октябре 2021 года, принесла множество инноваций и улучшений, но. . .
Что новенького в .NET Core 9
Programming 04.01.2025
Обзор ключевых изменений в . NET Core 9 Платформа . NET Core продолжает активно развиваться, и версия 9 представляет собой значительный шаг вперед в эволюции этой технологии. Новый релиз. . .
Инструкция по установке python3.13.1 в Debian 12
AlexSky-coder 03.01.2025
sudo apt update sudo apt install build-essential zlib1g-dev libncurses5-dev libgdbm-dev libnss3-dev libssl-dev libreadline-dev libffi-dev wget. . .
Затестил триггеры. архив проекта прилагаю с GOA файлами в настройках архиватора проектов.
Hrethgir 03.01.2025
В этот раз нет закольцованности, потому что от неё только глюки, как я понял, логика не вырезанная. Триггеры очень быстрые если верить измерениям с помощью анализатора от Gowin. Есть ещё регистры,. . .
Python в помощь DevOps
IT_Exp 03.01.2025
Причины использования Python в работе DevOps Python стал неотъемлемой частью мира DevOps, и это не случайно. Этот язык программирования обладает множеством преимуществ, которые делают его. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru