|
#1
|
|||
|
|||
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
|
||||
|
||||
рабочий пример:
Код:
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
|
|||
|
|||
Спасибо большое, огроменное, а с файлами 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
|
||||
|
||||
115.25.216.6:80 это ip : port одного из бесплатных китайских прокси, взятых первым из списка http://proxy-besplatno.com/
2ip.ru это сайт куда делаем запрос. используем его, чтобы убедиться что наш реальный ip скрыт и что мы теперь китайцы. про Цитата:
Пишу программы за еду. __________________ |
#5
|
|||
|
|||
Цитата:
Ну есть такая настройка в браузерах авто настройка прокси с помощью урл, там вставляется ссылка на pac файл, а оттуда уже берутся адрес и порт прокси! |
#6
|
|||
|
|||
Цитата:
Ну есть такая настройка в браузерах авто настройка прокси с помощью урл, там вставляется ссылка на pac файл, а оттуда уже берутся адрес и порт прокси! Спасибо тебе огромное NumLock, разобрался как система работает! Последний раз редактировалось ProDaNTe, 09.09.2013 в 21:56. |