Guest User

Untitled

a guest
Mar 16th, 2018
152
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Delphi 3.71 KB | None | 0 0
  1. function send(method,zap,cooc,params,ref,mime,proxyTYPE,proxy,port,proxyUSER,proxyPASS:string;headerS:array of string):string;
  2. var Header : TStringList;
  3.       Contents : TStringList;
  4.       httpsend: THTTPSend;
  5.     ss: TStringStream;
  6.     i,k,n:integer;
  7.     rev,coocX:string;
  8. begin
  9.   Header := TStringList.Create; // создание заголовка
  10.   Contents := TStringList.Create;
  11.   httpsend:=THTTPSend.Create;
  12.   HTTPsend.UserAgent:='Opera 9.0'; // прописываем user-agent для заголовка
  13.   httpsend.Headers.Insert(0,'Referer: '+ref); // добавляем в хедер referer
  14.   httpsend.Cookies.Text:=cooc; // устанавливаем куки
  15.   httpsend.MimeType:=mime;
  16.   for i:=1 to 100 do begin      // добавляем в хедер данные
  17.     if trim(headers[i])<>''then // добавляем в хедер данные
  18.       Header.Add(headers[i])    // добавляем в хедер данные
  19.     else break;                 // добавляем в хедер данные
  20.   end;                          // добавляем в хедер данные
  21.  
  22.   httpsend.Headers.AddStrings(Header); // вставляем из stringlist в httpsens хедер
  23. {Далее установка прокси}
  24.   if proxyTYPE='HTTP' then begin
  25.     httpsend.ProxyHost:=proxy; // установка ip прокси
  26.     httpsend.ProxyPort:=port; // установка порта прокси
  27.   end else if proxyTYPE='SOCKS 4' then begin
  28.     HTTPsend.Sock.SocksIP := proxy; // установка ip прокси
  29.     HTTPsend.Sock.SocksPort := PORT; // установка порта прокси
  30.     HTTPsend.Sock.SocksUsername := proxyUSER; // установка логина прокси
  31.     HTTPsend.Sock.SocksPassword := proxyPASS; // установка пароля прокси
  32.   end else if proxyTYPE='SOCKS 5' then begin
  33.     HTTPsend.Sock.SocksIP := proxy; // установка ip прокси
  34.     HTTPsend.Sock.SocksPort := PORT; // установка порта прокси
  35.     HTTPsend.Sock.SocksUsername := proxyUSER; // установка логина прокси
  36.     HTTPsend.Sock.SocksPassword := proxyPASS; // установка пароля прокси
  37.   end;
  38.   if method='GET' then begin // если запрос GET
  39.     httpsend.HTTPMethod('GET',zap ); // Делаем запрос GET
  40.   end;
  41.   if method='POST' then begin // если запрос POST
  42.     ss.WriteString(params); // добавляем параметры POST запроса
  43.     httpsend.HTTPMethod('POST',zap); // Делаем POST запроса
  44.   end;
  45.   Contents.LoadFromStream(httpsend.Document); // Загружаем контент в Contents
  46.   rev := Contents.Text;
  47. {обработка кодов ответа сервера}
  48.   case HTTPsend.Resultcode of
  49.           301, 302, 307:
  50.             begin
  51.               n := FoundLocationStrNum(HTTPsend.Headers);
  52.               if (n >= 0) and (n <= HTTPsend.Headers.count) then // если в хэдере найдена строка с локейшеном
  53.                   locat := StringReplace(HTTPsend.Headers.Strings[n],'Location: ','',[]);
  54.               end;
  55.               end;
  56.  
  57.   if pos('302',IntToStr(HTTPsend.ResultCode))<>0 then begin
  58.     result:='302';
  59.   end else    if pos('500',IntToStr(HTTPsend.ResultCode))<>0 then begin
  60.     result:='500';
  61.   end else   if pos('404',IntToStr(HTTPsend.ResultCode))<>0 then begin
  62.     result:='404';
  63.   end else   if pos('400',IntToStr(HTTPsend.ResultCode))<>0 then begin
  64.     result:='error 400';
  65.   end else
  66.     result:=rev;
  67.   httpsend.Free; // освобождение памяти
  68.   header.Free; // освобождение памяти
  69.   contents.Free; // освобождение памяти
  70.  
  71.   exit;
  72. end;
Add Comment
Please, Sign In to add comment