Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Работа с сетью в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 16.01.2010, 12:03   #1
PUH
Пользователь
 
Регистрация: 21.02.2008
Сообщений: 35
Радость Подружим idhttp, idsocksinfo и idssliohandlersocketopenssl

Проблема работы с ssl через socks в indy наблюдается давно. Сколько бы не лазил на форумах – никому без геморроя не удавалось подружить 3 компоненты, дабы они работали более или менее корректно. Поэтому пришлось связывать самому.

Используемое:

- Delphi 2010 update 5
- Indy 10.5.7, последняя доступная ревизия
- SSL библиотеки из последних, приложу в посте

Прежде чем приведу код функции тестирования прокси для работы с ssl через socks 4/4a/5 версий, напомню, что нужно добавить в uses для использования данной функции:

- idhttp
- idcookiemanager
- idsslopenssl
- idcompressorzlib
- idsocks

idcookiemanager мы добавили на всякий случай – вдруг вы захотите проверять установку кукисов (некоторые прокси не отдают оные). idcompressorzlib – для экономии трафика (не увлекаться, даже на мощных серверах способна загрузить систему на все 120%).

Код:
function test_socks (proxyadr : string) : boolean;
var
  http : tidhttp;
  coo : tidcookiemanager;
  ssl : tidssliohandlersocketopenssl;
  compressor : tidcompressorzlib;
  sock : tidsocksinfo;
begin
  result := false;

  coo := tidcookiemanager.create;

  ssl := tidssliohandlersocketopenssl.create; 
  ssl.ssloptions.method := sslvtlsv1; 
  ssl.port := 443;
  
  http := tidhttp.create; 
  http.iohandler := ssl; 
  http.readtimeout := 60000; 
  http.connecttimeout := 60000; 
  http.allowcookies := true; 
  http.handleredirects := false; 
  http.cookiemanager := coo; 
  http.request.useragent := 'mozilla/4.0 (compatible; msie 7.0; windows nt 6.0)'; 
  http.request.acceptencoding := 'gzip, deflate';
  
  sock := tidsocksinfo.create; 
  sock.authentication := sanoauthentication; 
  sock.version := svsocks5; 
  sock.host := copy (proxyadr, 1, pos (':', proxyadr) - 1); 
  sock.port := strtoint (copy (proxyadr, pos (':', proxyadr) + 1, 5)); 
  ssl.transparentproxy := sock;
  
  compressor := tidcompressorzlib.create; 
  http.compressor := compressor;

  try
    if pos ('О компании', http.get ('https://passport.yandex.ru/passport?mode=passport')) <> 0 then result := true;
  except end;

  http.free; coo.free; compressor.free; ssl.free; sock.free;
end;
Читать далее

Последний раз редактировалось PUH; 17.01.2010 в 06:41.
PUH вне форума Ответить с цитированием
Старый 16.01.2010, 12:08   #2
raxp
Старожил
 
Регистрация: 29.09.2009
Сообщений: 9,742
По умолчанию

...оформили-бы более подробно и выложили-бы в разделе "статьи" форума тут.
Разработки и научно-технические публикации :: Видеоблог :: Твиттер
Radar systems engineer & Software developer of industrial automation
raxp вне форума Ответить с цитированием
Старый 16.01.2010, 17:31   #3
Alter
Старожил
 
Аватар для Alter
 
Регистрация: 06.08.2007
Сообщений: 2,239
По умолчанию

Код ужасно оформлен. Читать не возможно. Отформатируйте текст, как положено(с отступами, переносами, и структурой).
Alter вне форума Ответить с цитированием
Старый 17.01.2010, 00:36   #4
PUH
Пользователь
 
Регистрация: 21.02.2008
Сообщений: 35
По умолчанию

Код так отформатировался при постинге.

Поправил, как смог.

P.s.: разве есть положение или ГОСТ по формату?
PUH вне форума Ответить с цитированием
Старый 17.01.2010, 01:01   #5
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

Цитата:
разве есть положение или ГОСТ по формату?
есть стандарт(очень желательный) который улучшает читабельность и удобство кода.(посмотрите мои коды...в некоторых постах...особенно во вложениях где чисто мои примеры)
он не очень строгий...но, имеет всетаки, некоторые правила.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 17.01.2010, 01:29   #6
raxp
Старожил
 
Регистрация: 29.09.2009
Сообщений: 9,742
По умолчанию

может-быть вам покажется это удивительным, но есть... было, есть и будет, ЕСПД регламентируется ГОСТ-ами, на предприятиях и фирмах свое ТУ и ОСТ-ы.
>>> тут <<<, то что действует и по сих пор... и это очень хорошо, т.к. забугорные системы единого оформления-проектирования только сейчас более-менее приходят в норму.

весь вопрос-то в том, что вы написали и выставили для других, значит нужно позаботиться об удобочитаемости... если специалист, а тем паче начинающий, увидит статью/материал (а так понимаю вы движетесь в этом направлении), то какой-бы интересной по-тематике она не была, взглянув на оформление сразу его пропустит или будет ломать глаза:
Цитата:
http := tidhttp.create; http.iohandler := ssl; http.readtimeout := 60000; http.connecttimeout := 60000; http.allowcookies := true;....
приложенные исходники - это безусловно очень хорошо, лицу заинтересованному будет большое подспорье, но могут и возникнуть вопросы, непонятки... а у вас "комментарии излишни"/
зы: не подумайте, что критикую... ни-ни, критика дело неблагодарная (разве конструктивная ),
считайте это размышлениями вслух об улучшении жизни + примеры инструкций программисту
Разработки и научно-технические публикации :: Видеоблог :: Твиттер
Radar systems engineer & Software developer of industrial automation

Последний раз редактировалось raxp; 17.01.2010 в 01:34.
raxp вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
idHTTP Edward Работа с сетью в Delphi 14 04.09.2009 00:33
IDHTTP Edward Компоненты Delphi 1 17.08.2009 20:20
Прокси в IdHTTP AVer Работа с сетью в Delphi 0 10.10.2008 20:30
IDHTTP не авторизируется Черничный Работа с сетью в Delphi 1 03.09.2008 17:22
idHTTP DeDoK Общие вопросы Delphi 5 05.06.2008 22:45