1, это Unit2)
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, sSkinManager, Buttons, sSpeedButton, sLabel, sMemo, Unit2,
sEdit;
type
TForm1 = class(TForm)
sLabelFX1: TsLabelFX;
sSpeedButton1: TsSpeedButton;
sSkinManager1: TsSkinManager;
sMemo1: TsMemo;
sEdit1: TsEdit;
procedure sSpeedButton1Click(Sender: TObject);
private
MyT:TMyThread;
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.sSpeedButton1Click(Sender: TObject);
begin
MyT:=TMyThread.Create(true);
MyT.Priority:=tpLowest;
MyT.FreeOnTerminate:=true;
MyT.Resume;
end;
end.
2. Unit2)
unit Unit2;
interface
uses
Classes,SysUtils, Variants,Dialogs, StdCtrls,lib,ssl_openssl;
type
TMyThread = class(TThread)
private
{ Private declarations }
protected
procedure Execute; override;
procedure memoAdd;
public
email,pass,msg:string;
end;
implementation
uses Unit1;
procedure TMyThread.Execute;
var temp:array[0..10] of string;
response:string;
begin
Explode(temp,':'form1.sEdit1.Text);
email:=temp[0];
pass:=temp[1];
response:=send('GEN,[Ссылки могут видеть только зарегистрированные и активированные пользователи]'+urlencode(email)+'&password='+urlencode(UTF8Encode(pass))');
msg:=response;
Synchronize(memoAdd);
end;
procedure TMyThread.memoAdd;
begin
Form1.sMemo1.Lines.Add(msg);
end;
end.
3. Lib
unit lib;
interface
//by IMREADYOURMIND v 1.5
uses [Ссылки могут видеть только зарегистрированные и активированные пользователи] forms,dialogs,Classes, Messages, SysUtils, Controls,
ExtCtrls, StdCtrls, SHDocVw, ComCtrls,syncobjs,strutils;
//îòïðàâêà çàïðîñîâ
function send(method,url:string;postParams:string='';cookie :string='';showCookie:boolean=false;proxyType:stri ng='';proxy:string='';proxyUser:string='';proxyPas s:string='';files:string='';userAgent:string='';re ferer:string=''):string;
function FoundLocationStrNum(str:string;Headers: TStringlist): integer;
//ðàçáèòèå ñòðîêè ïî ðàçäåëèòåëþ
procedure Explode(var a: array of string; Border, S: string);
//ñêà÷êà è ñîõðàíåíèå ôàéëà ïî ññûëêå
function DwFi(SourceFile, DestFile: string;cookie:string=''): Boolean;
//óðëåíêîä ïåðåâîä êèðèëèöû â ulr ôîðìàò
function URLEncode(const S2: string): string;
//çàìåíà â ñòðîêå
function ReplaceSub(str, sub1, sub2: string): string;
//ïàðñåð ëþáîé ñòðîêè
function parser(doc,home,eend:string;nacpos:integer=0;parst ype:integer=0):string;
//Îòïðàâëåíèå êàï÷è â àíòèãåéò â îòâåò ïðèäåò ID
function captchaStart(path,key:string):string;
// ïðèåì êàï÷è â îòâåò ïðèõîäèò êàï÷à
function captchaFinish(id,key:string):string;
implementation
function captchaStart(path,key:string):string;
var res:string;
begin
res:=send('POST','[Ссылки могут видеть только зарегистрированные и активированные пользователи]','method=post&soft_id=290&key='+key+'&is_russian=2','',false,'','','','','file,'+trim(pa th)+',image\pjpg');
result:=Trim(parser(res, '|', #13#10));
end;
function captchaFinish(id,key:string):string;
var text:string;
begin
text:=send('GET','[Ссылки могут видеть только зарегистрированные и активированные пользователи]'+key+'&action=get&id='+id);
if trim(text)='CAPCHA_NOT_READY' then begin
result:='';
end else
result:=trim(Copy(text, 4, Length(text) - 3));
result:=urlencode(result);
end;
function parser(doc,home,eend:string;nacpos:integer=0;parst ype:integer=0):string;
var raz:integer;
begin
if parstype=0 then begin
if ((trim(home)<>'') and (trim(eend)='')) then begin
result:=copy(doc,posex(home,doc,nacpos)+length(hom e),length(doc)-(posex(home,doc,nacpos)+length(home))+1);
end else if ((trim(home)='') and (trim(eend)<>'')) then begin
result:=copy(doc,1,posex(eend,doc,nacpos)-1);
end else if ((trim(home)<>'') and (trim(eend)<>'')) then begin
if copy(doc,posex(home,doc,nacpos)+length(home),1)<>copy(eend,1,1) then begin
raz:=posex(eend,doc,posex(home,doc,nacpos)+length( home)+1)-posex(home,doc,nacpos)-length(home);
result:=copy(doc,posex(home,doc,nacpos)+length(hom e),raz);
end else
result:='';
end;
end else if parstype=1 then begin
if copy(doc,posex(eend,doc,nacpos)+length(eend),1)<>copy(home,1,1) then begin
raz:=posex(home,doc,nacpos)-posex(eend,doc,nacpos)-length(eend);
result:=copy(doc,posex(eend,doc,nacpos)+length(een d),raz);
end else
result:='';
end;
exit;
end;
function URLEncode(const S2: string): string;
var
Idx: Integer;
begin
Result := '';
for Idx := 1 to Length(S2) do
begin
if S2[Idx] in ['A'..'Z', 'a'..'z', '0'..'9', '-', '=', '&', ':', '/', '?', ';', '_'] then
Result := Result + S2[Idx]
else
Result := Result + '%' + IntToHex(Ord(S2[Idx]), 2);
end;
end;
function ReplaceSub(str, sub1, sub2: string): string;
var
aPos: Integer;
rslt: string;
begin
aPos := Pos(sub1, str);
rslt := '';
while (aPos <> 0) do
begin
rslt := rslt + Copy(str, 1, aPos - 1) + sub2;
Delete(str, 1, aPos + Length(sub1) - 1);
aPos := Pos(sub1, str);
end;
Result := rslt + str;
end;
function DwFi(SourceFile, DestFile: string;cookie:string=''): Boolean;
var [Ссылки могут видеть только зарегистрированные и активированные пользователи] T[Ссылки могут видеть только зарегистрированные и активированные пользователи]
begin
result:=true;
[Ссылки могут видеть только зарегистрированные и активированные пользователи]
[Ссылки могут видеть только зарегистрированные и активированные пользователи]
try
[Ссылки могут видеть только зарегистрированные и активированные пользователи]('GET',SourceFile );
except
on E : Exception do
result:=false;
end;
[Ссылки могут видеть только зарегистрированные и активированные пользователи](DestFile);
[Ссылки могут видеть только зарегистрированные и активированные пользователи]
exit;
end;
procedure Explode(var a: array of string; Border, S: string);
var
S2: string;
i: Integer;
begin
i := 0;
S2 := S + Border;
repeat
//setlength(a, i+1);
try
a[i] := Copy(S2, 0, Pos(Border, S2) - 1);
except
end;
Delete(S2, 1, Length(a[i] + Border));
Inc(i);
until S2 = '';
end ;
function send(method,url:string;postParams:string='';cookie :string='';showCookie:boolean=false;proxyType:stri ng='';proxy:string='';proxyUser:string='';proxyPas s:string='';files:string='';userAgent:string='';re ferer:string=''):string;
var Header : TStringList;
Contents : TStringList;
[Ссылки могут видеть только зарегистрированные и активированные пользователи] T[Ссылки могут видеть только зарегистрированные и активированные пользователи]
ss: TStringStream;
i,err:integer;
s: String;
FS: TFileStream;
rev,bound:string;
mas,mas2,p,v:array[0..500] of string;
const
FIELD_MASK = #13#10 + '--%s' + #13#10 +
'Content-Disposition: form-data; name="%s"' + #13#10 + #13#10
+
'%s';
begin
randomize;
Header := TStringList.Create;
Contents := TStringList.Create;
ss := TStringStream.Create('');
[Ссылки могут видеть только зарегистрированные и активированные пользователи]
[Ссылки могут видеть только зарегистрированные и активированные пользователи]
if referer<>'' then
[Ссылки могут видеть только зарегистрированные и активированные пользователи](0,'referer: '+referer);//referererer
[Ссылки могут видеть только зарегистрированные и активированные пользователи] //cookies
if files<>'' then begin
Bound := IntToHex(Random(100000000), 8) + '_Synapse_boundary';
s := '--' + Bound + #13#10;
i:=0;
if files <> ' ' then begin
if pos('&',files)<>0 then begin
explode(mas,'&',files);
end else
mas[0]:=files;
while mas[i]<>'' do begin
explode(mas2,',',mas[i]);
//s:=CRLF;
s := s + 'content-disposition: form-data; name="' + mas2[0] +'";';
s := s + ' filename="' + ExtractFileName(mas2[1]) +'"' + #13#10;
s := s + 'Content-Type: '+mas2[2] + #13#10 + #13#10;
[Ссылки могут видеть только зарегистрированные и активированные пользователи](Pointer(s)^, Length(s));
if mas2[1]<>'' then begin
FS:=TFileStream.Create(mas2[1], fmOpenRead);
FS.Position := 0;
[Ссылки могут видеть только зарегистрированные и активированные пользователи](FS, FS.Size);
FS.Free;
end;
inc(i);
end;
end;
explode(p,'&',postParams);
i:=0;
if pos('&',postParams)<>0 then begin
explode(p,'&',postParams);
end else
p[0]:=postParams;
while p[i]<>'' do begin
explode(v,'=',p[i]);
S:= Format(FIELD_MASK,[Bound, v[0],v[1]]);
[Ссылки могут видеть только зарегистрированные и активированные пользователи](Pointer(s)^, Length(s));
inc(i);
end;
s := #13#10 + '--' + Bound + '--' + #13#10;
[Ссылки могут видеть только зарегистрированные и активированные пользователи](Pointer(s)^, Length(s));
[Ссылки могут видеть только зарегистрированные и активированные пользователи] := 'multipart/form-data; boundary=' + Bound;
end else begin
[Ссылки могут видеть только зарегистрированные и активированные пользователи]'application/x-[Ссылки могут видеть только зарегистрированные и активированные пользователи]';
if method='POST' then begin
ss.WriteString(postParams);
[Ссылки могут видеть только зарегистрированные и активированные пользователи](ss);
end;
end;
[Ссылки могут видеть только зарегистрированные и активированные пользователи] := '1.1';
// [Ссылки могут видеть только зарегистрированные и активированные пользователи] := OnStatus;
[Ссылки могут видеть только зарегистрированные и активированные пользователи](Header); //headers
if proxyTYPE='HTTP' then begin
[Ссылки могут видеть только зарегистрированные и активированные пользователи](Proxy,1,Pos(':',Proxy)-1);
[Ссылки могут видеть только зарегистрированные и активированные пользователи](Proxy,Pos(':',Proxy)+1,Le ngth(Proxy));
end else if proxyTYPE='SOCKS 4' then begin
//[Ссылки могут видеть только зарегистрированные и активированные пользователи]
[Ссылки могут видеть только зарегистрированные и активированные пользователи]
[Ссылки могут видеть только зарегистрированные и активированные пользователи] := Copy(Proxy,1,Pos(':',Proxy)-1);
[Ссылки могут видеть только зарегистрированные и активированные пользователи] := Copy(Proxy,Pos(':',Proxy)+1,Length(Proxy));
[Ссылки могут видеть только зарегистрированные и активированные пользователи] := proxyUSER;
[Ссылки могут видеть только зарегистрированные и активированные пользователи] := proxyPASS;
//[Ссылки могут видеть только зарегистрированные и активированные пользователи]
end else if proxyTYPE='SOCKS 5' then begin
//[Ссылки могут видеть только зарегистрированные и активированные пользователи] := ST_Socks5 ;
[Ссылки могут видеть только зарегистрированные и активированные пользователи]
[Ссылки могут видеть только зарегистрированные и активированные пользователи] := Copy(Proxy,1,Pos(':',Proxy)-1);
[Ссылки могут видеть только зарегистрированные и активированные пользователи] := Copy(Proxy,Pos(':',Proxy)+1,Length(Proxy));
[Ссылки могут видеть только зарегистрированные и активированные пользователи] := proxyUSER;
[Ссылки могут видеть только зарегистрированные и активированные пользователи] := proxyPASS;
//[Ссылки могут видеть только зарегистрированные и активированные пользователи]
end;
if method='GET' then begin
try
[Ссылки могут видеть только зарегистрированные и активированные пользователи]('GET',url );
except
//on EidSocketError do
on E : Exception do
result:='exception';
end;
end;
if method='POST' then begin
[Ссылки могут видеть только зарегистрированные и активированные пользователи]('POST',url);
end;
Contents.LoadFromStream([Ссылки могут видеть только зарегистрированные и активированные пользователи]);
rev := Contents.Text;
if pos('302',IntToStr([Ссылки могут видеть только зарегистрированные и активированные пользователи]))<>0 then begin
result:=[Ссылки могут видеть только зарегистрированные и активированные пользователи][FoundLocationStrNum('ocation',[Ссылки могут видеть только зарегистрированные и активированные пользователи])];
end else if pos('500',IntToStr([Ссылки могут видеть только зарегистрированные и активированные пользователи]))<>0 then begin
result:='500'+[Ссылки могут видеть только зарегистрированные и активированные пользователи]
end else if pos('404',IntToStr([Ссылки могут видеть только зарегистрированные и активированные пользователи]))<>0 then begin
result:='404';
end else if pos('400',IntToStr([Ссылки могут видеть только зарегистрированные и активированные пользователи]))<>0 then begin
result:='400';
end else if pos('307',IntToStr([Ссылки могут видеть только зарегистрированные и активированные пользователи]))<>0 then begin
result:=[Ссылки могут видеть только зарегистрированные и активированные пользователи][FoundLocationStrNum('Location',[Ссылки могут видеть только зарегистрированные и активированные пользователи])];
end else if pos('301',IntToStr([Ссылки могут видеть только зарегистрированные и активированные пользователи]))<>0 then begin
result:=[Ссылки могут видеть только зарегистрированные и активированные пользователи][FoundLocationStrNum('Location',[Ссылки могут видеть только зарегистрированные и активированные пользователи])];
end else
result:=rev;
if ShowCookie=true then
result:=[Ссылки могут видеть только зарегистрированные и активированные пользователи]'@@@'+result;
[Ссылки могут видеть только зарегистрированные и активированные пользователи]
header.Free;
contents.Free;
ss.Free;
exit;
end;
function FoundLocationStrNum(str:string;Headers: TStringlist): integer;
var
FoundStrPos, i : integer;
begin
Result:= 0;
for i := 0 to Headers.Count-1 do
begin
FoundStrPos := Pos(trim(str), Headers.Strings[i]);
if FoundStrPos > 0 then
begin
Result:= i;
exit;
end;
end;
end;
end.
[Ссылки могут видеть только зарегистрированные и активированные пользователи]
Блин, всё вроди правильно, можно сказать по бумажки делал(подробное почти видио)
но Delphi ругается чёт=(
выручайте=)
чтоже не так?=)
ну или место того чтоб он писал в sMemo Token.
можно просто в sLabel Присать текст тимо 'Хорошо' - 'Плохо'
/kidding/kidding/kidding