Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > Интернет и сети
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 07.09.2013, 19:05
ProDaNTe ProDaNTe вне форума
Новичок
 
Регистрация: 25.12.2011
Сообщения: 75
Репутация: 10
По умолчанию Wininet+Proxy

Сразу говорю ни чем кроме Wininet пользоваться не собираюсь, первое как соединиться через прокси, делал так не работает

Код:
 if Form5.sCheckBox18.Checked=true then begin
  hInet := InternetOpen('Opera/9.80 (Windows NT 6.1; Edition Next) Presto/2.12.378 Version/12.50',
 { CERN_PROXY_INTERNET_ACCESS,
    nil,
    nil,
    0);}
   INTERNET_OPEN_TYPE_PROXY,
    PChar(Form5.sEdit8.Text+':'+Form5.sEdit9.Text),
    nil,
    0);
     //    InternetOpen('Mozilla/5.0', INTERNET_OPEN_TYPE_PROXY, 'xxx.xxx.xxx.xxx:xxx', nil,0)
 if Form5.sCheckBox19.Checked=false then begin
     InternetConnect (hInet,
                          PChar(Form5.sEdit8.Text),
                          StrToInt64(Form5.sEdit9.Text),
                          nil,
                          nil,
                          0,
                          0,
                          0);
 end else begin
        InternetConnect (hInet,
                          PChar(Form5.sEdit8.Text),
                          StrToInt64(Form5.sEdit9.Text),
                          PChar(Form5.sEdit10.Text),
                           PChar(Form5.sEdit11.Text),
                          0,
                          0,
                          0);
 end;

А главное как сделать "URL автоматической настройки сервиса прокси"?
Пожалуйста помогите тупню...
Ответить с цитированием
  #2  
Старый 09.09.2013, 11:44
Аватар для NumLock
NumLock NumLock вне форума
Let Me Show You
 
Регистрация: 30.04.2010
Адрес: Северодвинск
Сообщения: 5,426
Версия Delphi: 7, XE5
Репутация: 59586
По умолчанию

рабочий пример:
Код:
var
  FSession: HINTERNET;
  FConnect: HINTERNET;
  FRequest: HINTERNET;

  szAcceptTypes: array [0..1] of PChar;

  BufferLength: DWORD;
  Data: DWORD;
  Indx: DWORD;

  FileStream: TFileStream;

  Buffer: PChar;
  NumberOfBytesAvailable: DWORD;
  NumberOfBytesRead: DWORD;

begin
//  FSession:=InternetOpen('Mozilla/4.0', INTERNET_OPEN_TYPE_DIRECT, nil, nil, 0);
  FSession:=InternetOpen('Mozilla/4.0', INTERNET_OPEN_TYPE_PROXY, '115.25.216.6:80', nil, 0);
  if FSession=nil then RaiseLastOSError;

  FConnect:=InternetConnect(FSession, '2ip.ru', INTERNET_DEFAULT_HTTP_PORT, nil, nil, INTERNET_SERVICE_HTTP, 0, 0);
  if FConnect=nil then RaiseLastOSError;

  szAcceptTypes[0]:='text/*';
  szAcceptTypes[1]:=nil;
  FRequest:=HttpOpenRequest(FConnect, 'GET', '/', 'HTTP/1.1', '', @szAcceptTypes, 0, 0);
  if FRequest=nil then RaiseLastOSError;

  if not HttpSendRequest(FRequest, nil, 0, nil, 0) then RaiseLastOSError;

  FileStream:=TFileStream.Create('2ip.htm', fmCreate);
  try
    while True do
    begin
      if not InternetQueryDataAvailable(FRequest, NumberOfBytesAvailable, 0, 0) then RaiseLastOSError;
      Buffer:=GetMemory(NumberOfBytesAvailable);
      try
        if not InternetReadFile(FRequest, Buffer, NumberOfBytesAvailable, NumberOfBytesRead) then RaiseLastOSError;
        if NumberOfBytesRead=0 then Break;
        FileStream.Write(Buffer^, NumberOfBytesRead);
      finally
        FreeMemory(Buffer);
      end;
    end;
  finally
    FileStream.Free;
  end;

  BufferLength:=SizeOf(Data);
  Indx:=0;
  if not HttpQueryInfo(FRequest, HTTP_QUERY_FLAG_NUMBER or HTTP_QUERY_STATUS_CODE, @Data, BufferLength, Indx) then RaiseLastOSError;
  ShowMessage(IntToStr(Data));


  InternetCloseHandle(FRequest);
  InternetCloseHandle(FConnect);
  InternetCloseHandle(FSession);
end;
косяки доработать самому)
__________________
Пишу программы за еду.
__________________

Последний раз редактировалось NumLock, 09.09.2013 в 11:46.
Ответить с цитированием
Этот пользователь сказал Спасибо NumLock за это полезное сообщение:
ProDaNTe (09.09.2013)
  #3  
Старый 09.09.2013, 12:22
ProDaNTe ProDaNTe вне форума
Новичок
 
Регистрация: 25.12.2011
Сообщения: 75
Репутация: 10
По умолчанию

Спасибо большое, огроменное, а с файлами pac не знаешь как работать они просто каждый раз при новом соединении скачиваются и от туда парсится адрес прокси? Или как вообще работает автоматическая настройка прокси с урл?


Из твоего примера 115.25.216.6:80 - это прокси как я понял, а 2ip.ru - что или 115.25.216.6 это и есть 115.25.216.6

Или
Код:
соединение с прокси
FSession:=InternetOpen('Mozilla/4.0', INTERNET_OPEN_TYPE_PROXY, '115.25.216.6:80', nil, 0); - 
а тут соединение с сайтрм с которого я хочу получить данные?
FConnect:=InternetConnect(FSession, '2ip.ru', INTERNET_DEFAULT_HTTP_PORT, nil, nil, INTERNET_SERVICE_HTTP, 0, 0); - 

Последний раз редактировалось ProDaNTe, 09.09.2013 в 12:30.
Ответить с цитированием
  #4  
Старый 09.09.2013, 13:01
Аватар для NumLock
NumLock NumLock вне форума
Let Me Show You
 
Регистрация: 30.04.2010
Адрес: Северодвинск
Сообщения: 5,426
Версия Delphi: 7, XE5
Репутация: 59586
По умолчанию

115.25.216.6:80 это ip : port одного из бесплатных китайских прокси, взятых первым из списка http://proxy-besplatno.com/
2ip.ru это сайт куда делаем запрос. используем его, чтобы убедиться что наш реальный ip скрыт и что мы теперь китайцы.

про
Цитата:
а с файлами pac не знаешь как работать они просто каждый раз при новом соединении скачиваются и от туда парсится адрес прокси? Или как вообще работает автоматическая настройка прокси с урл?
не совсем понял.
__________________
Пишу программы за еду.
__________________
Ответить с цитированием
  #5  
Старый 09.09.2013, 13:39
ProDaNTe ProDaNTe вне форума
Новичок
 
Регистрация: 25.12.2011
Сообщения: 75
Репутация: 10
По умолчанию

Цитата:
115.25.216.6:80 это ip : port одного из бесплатных китайских прокси, взятых первым из списка http://proxy-besplatno.com/
2ip.ru это сайт куда делаем запрос. используем его, чтобы убедиться что наш реальный ip скрыт и что мы теперь китайцы.
То есть как мне сделать что бы потом только использовать FConnect, не могу понять суть?

Ну есть такая настройка в браузерах авто настройка прокси с помощью урл, там вставляется ссылка на pac файл, а оттуда уже берутся адрес и порт прокси!
Ответить с цитированием
  #6  
Старый 09.09.2013, 13:39
ProDaNTe ProDaNTe вне форума
Новичок
 
Регистрация: 25.12.2011
Сообщения: 75
Репутация: 10
По умолчанию

Цитата:
115.25.216.6:80 это ip : port одного из бесплатных китайских прокси, взятых первым из списка http://proxy-besplatno.com/
2ip.ru это сайт куда делаем запрос. используем его, чтобы убедиться что наш реальный ip скрыт и что мы теперь китайцы.
То есть как мне сделать что бы потом только использовать FConnect, не могу понять суть?

Ну есть такая настройка в браузерах авто настройка прокси с помощью урл, там вставляется ссылка на pac файл, а оттуда уже берутся адрес и порт прокси!
Спасибо тебе огромное NumLock, разобрался как система работает!

Последний раз редактировалось ProDaNTe, 09.09.2013 в 21:56.
Ответить с цитированием
Ответ


Delphi Sources

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

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 18:04.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter