![]() |
|
|
#1
|
|||
|
|||
|
Сразу говорю ни чем кроме 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. |