Модераторы: Snowy, Poseidon, MetalFan

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Прокси на Delphi 
:(
    Опции темы
FAK
Дата 11.5.2006, 23:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 15
Регистрация: 21.4.2006

Репутация: нет
Всего: нет



Как сделать так, чтобы можно было подключаться одновременно к нескольким прокси?
Заранее благодарен! 
PM MAIL   Вверх
Демо
Дата 12.5.2006, 09:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1278
Регистрация: 3.11.2005

Репутация: 3
Всего: 50



Если ты скажешь, что означает "подключиться к нескольким прокси", то возможно тебе и помогут. 


--------------------
    
PM MAIL ICQ Skype   Вверх
FAK
Дата 12.5.2006, 20:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 15
Регистрация: 21.4.2006

Репутация: нет
Всего: нет



Объясняю.
Это так называемые "цепочка прокси" . Принцип действия таков:
Компьютер подключается к прокси1, который подключается к прокси2, прокси2 подключается к прокси3 и тд. Вот это мне и нужно реализовать в делфи 
PM MAIL   Вверх
Rouse_
Дата 12.5.2006, 22:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 469
Регистрация: 23.4.2005

Репутация: 5
Всего: 29



Ищи описание механизма Socks в RFC. 


--------------------
 Vae Victis
(Горе побежденным (лат.))
Демо с открытым кодом: http://rouse.drkb.ru 
PM MAIL WWW ICQ   Вверх
mai62
Дата 12.5.2006, 23:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 24
Регистрация: 27.2.2006

Репутация: 2
Всего: 3



Rouse_
Цитата

Ищи описание механизма Socks в RFC. 

Разве нужен обязательно Socks-прокси? Многие (если не все) HTTP-прокси могут передавать HTTP-запросы  вышестоящему (parent) прокси. А если HTTP-прокси поддерживает метод connect, то через него можно работать не только с HTTP-протоколом, но и, например, ICQ или FTP.
FAK
Из твоих вопросов не понятно в чем заключается задача, которую ты решаешь? Что именно ты хочешь сделать на Delphi? Смотри сколько людей откликнулось, дай им шанс помочь тебе  smile  
PM MAIL   Вверх
FAK
Дата 13.5.2006, 06:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 15
Регистрация: 21.4.2006

Репутация: нет
Всего: нет



Я пишу свой icq клиент и мне нужно вставить эту цепочку проксей в мой клиент, чтобы подключаться
к icq серверу анонимно.  
PM MAIL   Вверх
mai62
Дата 14.5.2006, 10:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 24
Регистрация: 27.2.2006

Репутация: 2
Всего: 3



Можно посмотреть исходники программы freecap (_http://www.freecap.ru/)
Еще видел такой диалог (_http://groups.google.ru/group/borland.public.delphi.internet.winsock/browse_thread/thread/cf01f02031d633ca/6da95be9112090b4?hide_quotes=no#msg_6da95be9112090b4)
Цитата

can you please add proxy chain support to that list, because alot 
of us want to do a proxy chain and it isnt currently possible using indy. 
It will be for extra anonymity(sp?) 
eg. 
Client -> Socks Proxy -> Socks Proxy -> Socks Proxy -> Mail Server 
or 
Client -> HTTP Proxy -> HTTP Proxy -> HTTP Proxy -> Web Server 
etc.
...
We have added this to Indy, now you wil be able to chain TIdSocksInfo and 
TIdConnectThroughHttpProxy.

Насколько я понял, речь идет об Indy 10 
PM MAIL   Вверх
FAK
Дата 14.5.2006, 10:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 15
Регистрация: 21.4.2006

Репутация: нет
Всего: нет



исходник freeCap я уже скачал )
Но чет я там не разберусь 
PM MAIL   Вверх
RA
Дата 14.5.2006, 12:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Брутальный буратина
****


Профиль
Группа: Участник Клуба
Сообщений: 3497
Регистрация: 31.3.2002
Где: Лес

Репутация: 10
Всего: 115



Собсвенноручно выкладывал тут 3 сорса проксей: http-пэшный на ics-се, http-пэшный без компонентов, и Socks4. Один из сорсов в сетевых технологиях. 

Такшо в поиск.  
PM   Вверх
Rouse_
Дата 17.5.2006, 19:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 469
Регистрация: 23.4.2005

Репутация: 5
Всего: 29



Цитата(mai62 @  13.5.2006,  00:56 Найти цитируемый пост)
Разве нужен обязательно Socks-прокси? Многие (если не все) HTTP-прокси могут передавать HTTP-запросы  вышестоящему (parent) прокси. А если HTTP-прокси поддерживает метод connect, то через него можно работать не только с HTTP-протоколом, но и, например, ICQ или FTP.

Это-то конечно да, только для этого должен быть настроена соответствующая цепочка, ты сможешь сказать верхнему прокси чтобы он работал не напрямую а через еще один прокси? 


--------------------
 Vae Victis
(Горе побежденным (лат.))
Демо с открытым кодом: http://rouse.drkb.ru 
PM MAIL WWW ICQ   Вверх
mai62
Дата 17.5.2006, 21:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 24
Регистрация: 27.2.2006

Репутация: 2
Всего: 3



Не могу. Я хотел сказать, что можно строить цепочки и Socks-прокси и HTTP-прокси
Цитата
Client -> Socks Proxy -> Socks Proxy -> Socks Proxy -> Mail Server 
or 
Client -> HTTP Proxy -> HTTP Proxy -> HTTP Proxy -> Web Server 
 
PM MAIL   Вверх
Демо
Дата 17.5.2006, 22:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1278
Регистрация: 3.11.2005

Репутация: 3
Всего: 50



Цитата(mai62 @  17.5.2006,  21:09 Найти цитируемый пост)
Client -> HTTP Proxy -> HTTP Proxy -> HTTP Proxy -> Web Server 


Вот эта цепочка интересна, учитывая недоступность администрирования промежуточных звеньев... 


--------------------
    
PM MAIL ICQ Skype   Вверх
FAK
Дата 18.5.2006, 19:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 15
Регистрация: 21.4.2006

Репутация: нет
Всего: нет



Я уже и исходники фрикапа пересмотрел, все равно не понял.
Вот есть код, возможно это путь к разгадке )) но при запуске возникает ряд ошибок.
Код

function GetResponseCode(const Response:string): Integer;
var S: string;
begin
 S := Response;
 Fetch(S);
 S := Trim(S);
 Result := StrToIntDef(Fetch(S, ' ', False), -1);
end;

procedure ConnectThroughProxy(ProxyList:TStrings);
var
 IdTCPClient:TIdTCPClient;
 i:integer;
begin
 IdTCPClient:=TIdTCPClient.Create(nil);
 try
   IdTCPClient.Host:=ProxyList.Names[0];;
   IdTCPClient.Port:=StrToInt(ProxyList.ValueFromIndex[0]);
   IdTCPClient.Connect;
   i:=1;
   while i<ProxyList.Count-1 do
   begin
     IdTCPClient.IOHandler.WriteLn('CONNECT '+ProxyList.Names[i]+':'+ProxyList.ValueFromIndex[i]+' HTTP/1.1'#13#10#13#10);
     inc(i)
   end;

   IdTCPClient.IOHandler.WriteLn('GET somedata'#13#10#13#10);

 finally
   IdTCPClient.Free;
 end;

end;




 
PM MAIL   Вверх
mai62
Дата 20.5.2006, 01:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 24
Регистрация: 27.2.2006

Репутация: 2
Всего: 3



Демо
Цитата
Вот эта цепочка интересна, учитывая недоступность администрирования промежуточных звеньев...

http proxy chain - это не мое изобретение (к сожалению smile)
_http://www.freeproxy.ru/en/free_proxy/faq/what_is_http_proxy.htm
_http://packages.debian.org/unstable/net/proxychains.html
К сожалению не нашел нигде простого описания как это делается. Полагаю происходит это так. Допустим мы хотим пробросить канал от клиента к серверу через цепочку из двух прокси (как я уже писал выше, http прокси должны поддерживать метод connect).

Клиент --> Прокси1 --> Прокси2 --> Сервер
Клиент устанавливает соединение с Прокси1 и шлет команду
connect Прокси2 http1.1
D результате получаем такую цепочку:
Клиент --> -------->  --> Прокси2 --> Сервер
Потом
connect Сервер http1.1
Получаем
Клиент --> -------->  --> -------->  --> Сервер

На самом деле похожим образом поступает браузер, когда хочет связаться с https-сервером через http-прокси. Он соединяется с http-прокси и шлет команду
connect https_сервер:443 http1.1
И после этого обменивается с сервером по https-протоколу.

 
PM MAIL   Вверх
Демо
Дата 20.5.2006, 10:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1278
Регистрация: 3.11.2005

Репутация: 3
Всего: 50



Цитата(mai62 @  20.5.2006,  01:58 Найти цитируемый пост)
Клиент --> Прокси1 --> Прокси2 --> Сервер


Вот в таком варианте сделать возможно и очень просто.


Вот в таком - 

Цитата(FAK @  12.5.2006,  20:47 Найти цитируемый пост)
Компьютер подключается к прокси1, который подключается к прокси2, прокси2 подключается к прокси3 и тд. Вот это мне и нужно реализовать в делфи 


невозможно.

Добавлено @ 10:43 
Дело в том, что "Прокси1" как раз и есть наш сервер, которым я могу управлять, на котором могу настроить каскадирование.
А вот "Прокси2" - это уже чужой прокси-сервер, и он будет в цепочке последним. 


--------------------
    
PM MAIL ICQ Skype   Вверх
mai62
Дата 20.5.2006, 21:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 24
Регистрация: 27.2.2006

Репутация: 2
Всего: 3



Демо
Допускаю, что я что-то не понимаю, но разницы в этих двух цитатах я не вижу.
Не понимаю почему 
Цитата
А вот "Прокси2" - это уже чужой прокси-сервер, и он будет в цепочке последним.

Почему последним? Теоретически описанным мной способом можно соединить в цепочку сколько угодно проки-серверов (мне так кажется, если я не прав, то в чем?).

соединяемся с Прокси1
> connect Прокси2 http1.1
  < 200 OK
> connect Прокси3 http1.1
  < 200 OK
> connect Прокси4 http1.1
  < 200 OK
...
> connect ПроксиN http1.1
  < 200 OK
...
> connect Вожделенный_Сервер http1.1
 
PM MAIL   Вверх
Демо
Дата 21.5.2006, 11:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1278
Регистрация: 3.11.2005

Репутация: 3
Всего: 50



Цитата(mai62 @  20.5.2006,  21:51 Найти цитируемый пост)
Почему последним? Теоретически описанным мной способом можно соединить в цепочку сколько угодно проки-серверов (мне так кажется, если я не прав, то в чем?).


Теория без практики - это как камасутра в картинках.

Протокол HTTP - это вообще-то несколько более сложная вещь, нежели просто Connect.
Приведи заголовки HTTP-запросов в каждом случае, чтобы разговор был более предметный. 


--------------------
    
PM MAIL ICQ Skype   Вверх
mai62
Дата 21.5.2006, 17:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 24
Регистрация: 27.2.2006

Репутация: 2
Всего: 3



Демо
Цитата
Теория без практики - это как камасутра в картинках.

На практике так на практике, вот
Код
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, IdTCPClient, StdCtrls, IdRFCReply;

type
  TForm1 = class(TForm)
    Memo1: TMemo;
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var
  IdTCPClient: TIdTCPClient;
  repl: TIdRFCReply;
  empty: Integer;
  s, s1: String;
begin
  IdTCPClient:= TIdTCPClient.Create(nil);
  try
    IdTCPClient.Port:= 8080;
    IdTCPClient.Host:= '127.0.0.1';
    IdTCPClient.Connect;
    IdTCPClient.SendCmd('CONNECT 192.168.55.2:8080 HTTP/1.1'#13#10#13#10);
    repl:= IdTCPClient.LastCmdResult;
    if repl.ReplyExists then
    begin
      Memo1.Lines.AddStrings(repl.Text);
      if (Pos('200', repl.Text[0])>0) then
      begin
        IdTCPClient.SendCmd(
'GET http://mail.ru HTTP/1.1'#13#10+
'Accept: text/html,text/plain;q=0.7,image/png,image/jpeg,image/gif;q=0.4,*/*;q=0.6'#13#10+
'User-Agent: User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)'#13#10+
'Host: mail.ru'#13#10+
'Proxy-Connection: close'#13#10#13#10);
        empty:= 0; s:='';
        while(True) do
        begin
          sleep(100);
          s1:= IdTCPClient.CurrentReadBuffer;
          if Length(s1)=0 then Inc(empty) else
          begin
            empty:= 0;
            s:= s+s1;
          end;
          if empty>30 then break;
        end;
        Memo1.Lines.Add(s);
      end;
    end;
  finally
    IdTCPClient.Disconnect;
    IdTCPClient.Free;
  end;
end;

end.

На форму нужно положить Memo и кнопку.
Нажмите кнопку и в Memo загрузится текст страницы с mail.ru. Я пробросил канал через 2 http-прокси:
127.0.0.1:8080
192.168.55.2:8080
Можете испытать код с другим количечтвом прокси.  

Это сообщение отредактировал(а) mai62 - 21.5.2006, 18:00
PM MAIL   Вверх
Демо
Дата 21.5.2006, 18:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1278
Регистрация: 3.11.2005

Репутация: 3
Всего: 50



mai62
Спасибо.
Я уже обнаружил некоторую информацию о такой возможности. Буду изучать. 


--------------------
    
PM MAIL ICQ Skype   Вверх
Ibragim
Дата 11.9.2006, 14:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 177
Регистрация: 28.9.2004
Где: Киев

Репутация: нет
Всего: нет



Ув. 
mai62,  (а может кто-то еще откликнется smile )
не могли бы Вы также рассказать, как сделать работу с TIdTCPClient асинхронной?
То есть хотелось бы не ждать ответа на SendCmd, а послать команду, положим

Код

IdTCPClient.SendCmd(
'GET http://mail.ru HTTP/1.1'#13#10+
'Accept: text/html,text/plain;q=0.7,image/png,image/jpeg,image/gif;q=0.4,*/*;q=0.6'#13#10+
'User-Agent: User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)'#13#10+
'Host: mail.ru'#13#10);


и работать дальше (чтобы процедура не останавливалась), а потом спустя некоторое время посмотреть, есть ли результат, желательно при возникновении какого-либо события.

Заранее спасибо.

Это сообщение отредактировал(а) Ibragim - 11.9.2006, 14:33
PM MAIL   Вверх
mai62
Дата 11.9.2006, 17:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 24
Регистрация: 27.2.2006

Репутация: 2
Всего: 3



Цитата(Ibragim @  11.9.2006,  14:32 Найти цитируемый пост)
не могли бы Вы также рассказать, как сделать работу с TIdTCPClient асинхронной?

TIdTCPClient не может работать в асинхронном режиме. В аснхронном режиме работает, например, Internet Component Suite (http://www.overbyte.be/)

PM MAIL   Вверх
Buhalich
Дата 14.9.2006, 23:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 28
Регистрация: 14.9.2006

Репутация: нет
Всего: нет



Ibragim, а с сокетами нет возможности работать?
PM MAIL   Вверх
Romikgy
Дата 15.9.2006, 09:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7326
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

Репутация: 3
Всего: 146



Цитата(Ibragim @  11.9.2006,  13:32 Найти цитируемый пост)
как сделать работу с TIdTCPClient асинхронной?

засунь в отдельный поток и будет те щастье smile
Цитата(Buhalich @  14.9.2006,  22:35 Найти цитируемый пост)
а с сокетами нет возможности работать? 

есть возможность , но мороки имхо на порядок больше


--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
Ibragim
Дата 15.9.2006, 12:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 177
Регистрация: 28.9.2004
Где: Киев

Репутация: нет
Всего: нет



to Buhalich 

 Есть такая возможность. СОСВСЕМ много мороки. Уже сделано так, как советовал Romikqy: 

Цитата

засунь в отдельный поток и будет те щастье 


Вот тока счастья пока нет, поглючивают потоки у меня... пока разбираюсь.
PM MAIL   Вверх
Страницы: (2) [Все] 1 2 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Сети"
Snowy
Poseidon
MetalFan

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делится вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи

Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Snowy, Poseidon, MetalFan.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Сети | Следующая тема »


 




[ Время генерации скрипта: 0.1122 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.