Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
KANSoftWare

Использование TIdTelnet для отправки команды SIGNAL NEWNYM в Vidalia

Delphi , Интернет и Сети , Telnet

В данной статье мы рассмотрим, как использовать компонент TIdTelnet для отправки команды SIGNAL NEWNYM в Vidalia, графическом интерфейсе Tor. Vidalia предоставляет возможность менять identidad Tor, нажав кнопку "New identity". Мы хотим воспроизвести это поведение в нашем приложении, используя TIdTelnet.

Сначала давайте рассмотрим код, который был использован в вопросе:

IdTelnet1.Host:='127.0.0.1';
IdTelnet1.Port:=9051;
IdTelnet1.Connect(-1);
IdTelnet1.SendCmd('SIGNAL NEWNYM');

По словам автора вопроса, этот код не работал для него. Даже после отправки команды, он получал тот же самый прокси.

Причина, по которой этот код не работает, заключается в том, что SendCmd() метод не может быть использован с TIdTelnet. TIdTelnet использует внутренний поток чтения, который непрерывно считывает данные из сокета, поскольку Telnet — асинхронный протокол, который может получать данные в любое время. SendCmd() метод делает собственное внутреннее чтение для получения ответа на отправленную команду. Две операции чтения мешают друг другу, что является проблемой tanto в Indy 9, как и в Indy 10.

Чтобы отправить исходящую команду с помощью TIdTelnet, вы должны использовать его SendCh() метод для отправки каждого символа в отдельности (если вы обновитесь до Indy 10, TIdTelnet имеет метод SendString(), который обрабатывает это для вас) и затем дождаться события OnDataAvailable, чтобы обработать ответ по мере необходимости.

Однако, если Tor фактически не использует настоящий протокол Telnet (с последовательностями Telnet и всеми), тогда вы лучше используйте TIdTCPClient вместо TIdTelnet. TIdTelnet — это клиент, специфический для Telnet, а не общий клиент TCP/IP, как TIdTCPClient.

Вот пример кода, который демонстрирует, как отправить команду SIGNAL NEWNYM с помощью TIdTCPClient в Indy 10:

Client.Connect;
Client.SendCmd('AUTHENTICATE ...', 250);
Client.SendCmd('signal NEWNYM', 250');
Client.Write('quit');
Client.Disconnect;

В этом примере мы сначала подключаемся к серверу, затем отправляем команду AUTENTICATE, затем отправляем команду SIGNAL NEWNYM и finally пишем 'quit', чтобы закрыть соединение.

В заключение, мы рассмотрели, почему код, использованный в вопросе, не работал и предложили альтернативный подход для отправки команды SIGNAL NEWNYM в Vidalia с помощью TIdTCPClient.

Создано по материалам из источника по ссылке.

В этой статье рассматривается, как использовать компонент TIdTelnet для отправки команды SIGNAL NEWNYM в Vidalia, графическом интерфейсе Tor, чтобы воспроизвести поведение нажатия кнопки 'Новая identidad' в приложении с помощью TIdTelnet.


Комментарии и вопросы

Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS




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


:: Главная :: Telnet ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-12-22 20:14:06
2025-01-29 02:29:53/0.0033137798309326/0