A G E N T
12-24-2007, 12:47 AM
This is a script I wrote up, hopefully to be later used with some sort of Google AdSense-abusing mischief ;)
It retrieves a list of proxies from my favourite proxy site, samair.ru; please note that this script was designed with that site and that one only in mind, and will *not* work 'out of the box' with any proxy list site.
The logic is pretty simple, it trims off the heading chunk of useless text, then substr's and regex's the rest of the junk off, then it puts all the proxies into a nice neat array and prints them in the debug for you :spot:
Oh, and BTW, this was written in 3.13, so I'm not sure if it is backwards-compatible.
Enjoy!
program New;
var
Page, Info : string;
Proxies : TStringArray;
function ProxyArray(Delimiter : string; Str : string) : array of string;
var
DelimPos, i : integer;
Arr1 : array of string;
Potential : string;
begin
SetArrayLength(Arr1, 500);
i := 0;
repeat
if (pos(Delimiter, Str) = 0) then Break;
DelimPos := pos(Delimiter, Str);
Potential := Replace((copy(Str,0,DelimPos)),Delimiter,'');
if pos(FindRegex(Potential,'[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+'),Potential) <> 0 then
begin
Delete(Potential, (pos(':',Potential)+1),1);
Arr1[i] := Potential;
i := i + 1;
end;
Delete(Str,1,DelimPos);
until(pos(Delimiter, Str) = 0);
SetArrayLength(Arr1, i);
Result := Arr1;
end;
procedure PrintArray(r : TStringArray);
var
i : integer;
begin
i := 0;
repeat
Writeln('Array['+IntToStr(i)+'] = '+r[i]);
i := i + 1;
until(i = GetArrayLength(r));
end;
procedure TrimShit;
var
i : integer;
begin
i := pos('Country',Page);
Delete(Page,1,i);
Delete(Page,1,6);
end;
procedure TrimHTML;
var
StartEncaps, EndEncaps, Length : integer;
begin
repeat
StartEncaps := pos('<',page);
EndEncaps := pos('>',page);
Length := (EndEncaps - StartEncaps) + 1;
Delete(Page,StartEncaps,Length);
until(StartEncaps = 0);
Delete(Page,1,6);
end;
procedure TrimRemnants;
var
StartEncaps, EndEncaps, Length : integer;
begin
repeat
StartEncaps := pos('-',page);
EndEncaps := pos(',',page);
Length := (EndEncaps - StartEncaps) + 1;
Delete(Page,StartEncaps,Length);
until(StartEncaps = 0);
end;
procedure TrimTimes;
begin
Info := ReplaceRegex(Info,'[0-9][0-9]:[0-9][0-9]','');
end;
procedure Clean;
begin
TrimShit;
TrimHTML;
TrimRemnants;
Info := TrimLetters(Page);
TrimTimes;
end;
procedure LoadPage;
begin
Page := GetPage('http://www.samair.ru/proxy');
Clean;
end;
begin
LoadPage;
Proxies := ProxyArray(' ',Info);
PrintArray(Proxies);
end.
EDIT: Some weird stuff going on, it doesn't work 2 hours later. If it doesn't for you, try this one:
program New;
var
Page, Info : string;
Proxies : TStringArray;
function ProxyArray(Delimiter : string; Str : string) : array of string;
var
DelimPos, i : integer;
Arr1 : array of string;
Potential : string;
begin
SetArrayLength(Arr1, 500);
i := 0;
repeat
if (pos(Delimiter, Str) = 0) then Break;
DelimPos := pos(Delimiter, Str);
Potential := Replace((copy(Str,0,DelimPos)),Delimiter,'');
if pos(FindRegex(Potential,'[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+'),Potential) <> 0 then
begin
Delete(Potential, (pos(':',Potential)+1),1);
Potential := replace(Potential,'-','');
Arr1[i] := Potential;
i := i + 1;
end;
Delete(Str,1,DelimPos);
until(pos(Delimiter, Str) = 0);
SetArrayLength(Arr1, i);
Result := Arr1;
end;
procedure PrintArray(r : TStringArray);
var
i : integer;
begin
i := 0;
repeat
Writeln('Array['+IntToStr(i)+'] = '+r[i]);
i := i + 1;
until(i = GetArrayLength(r));
end;
procedure TrimShit;
var
i : integer;
begin
i := pos('Country',Page);
Delete(Page,1,i);
Delete(Page,1,6);
end;
procedure TrimHTML;
var
StartEncaps, EndEncaps, Length : integer;
begin
repeat
StartEncaps := pos('<',page);
EndEncaps := pos('>',page);
Length := (EndEncaps - StartEncaps) + 1;
Delete(Page,StartEncaps,Length);
until(StartEncaps = 0);
Delete(Page,1,6);
end;
procedure TrimRemnants;
var
StartEncaps, EndEncaps, Length : integer;
begin
repeat
StartEncaps := pos('-',Info);
EndEncaps := pos(',',Info);
Length := (EndEncaps - StartEncaps) + 1;
Delete(Info, StartEncaps, Length);
until(StartEncaps = 0);
end;
procedure TrimTimes;
begin
Info := ReplaceRegex(Info,'[0-9][0-9]:[0-9][0-9]','');
end;
procedure Clean;
begin
TrimShit;
TrimHTML;
TrimRemnants;
Info := TrimLetters(Page);
TrimTimes;
end;
procedure LoadPage;
begin
Page := GetPage('http://www.samair.ru/proxy');
Clean;
end;
begin
LoadPage;
Proxies := ProxyArray(' ', Info);
PrintArray(Proxies);
end.
It retrieves a list of proxies from my favourite proxy site, samair.ru; please note that this script was designed with that site and that one only in mind, and will *not* work 'out of the box' with any proxy list site.
The logic is pretty simple, it trims off the heading chunk of useless text, then substr's and regex's the rest of the junk off, then it puts all the proxies into a nice neat array and prints them in the debug for you :spot:
Oh, and BTW, this was written in 3.13, so I'm not sure if it is backwards-compatible.
Enjoy!
program New;
var
Page, Info : string;
Proxies : TStringArray;
function ProxyArray(Delimiter : string; Str : string) : array of string;
var
DelimPos, i : integer;
Arr1 : array of string;
Potential : string;
begin
SetArrayLength(Arr1, 500);
i := 0;
repeat
if (pos(Delimiter, Str) = 0) then Break;
DelimPos := pos(Delimiter, Str);
Potential := Replace((copy(Str,0,DelimPos)),Delimiter,'');
if pos(FindRegex(Potential,'[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+'),Potential) <> 0 then
begin
Delete(Potential, (pos(':',Potential)+1),1);
Arr1[i] := Potential;
i := i + 1;
end;
Delete(Str,1,DelimPos);
until(pos(Delimiter, Str) = 0);
SetArrayLength(Arr1, i);
Result := Arr1;
end;
procedure PrintArray(r : TStringArray);
var
i : integer;
begin
i := 0;
repeat
Writeln('Array['+IntToStr(i)+'] = '+r[i]);
i := i + 1;
until(i = GetArrayLength(r));
end;
procedure TrimShit;
var
i : integer;
begin
i := pos('Country',Page);
Delete(Page,1,i);
Delete(Page,1,6);
end;
procedure TrimHTML;
var
StartEncaps, EndEncaps, Length : integer;
begin
repeat
StartEncaps := pos('<',page);
EndEncaps := pos('>',page);
Length := (EndEncaps - StartEncaps) + 1;
Delete(Page,StartEncaps,Length);
until(StartEncaps = 0);
Delete(Page,1,6);
end;
procedure TrimRemnants;
var
StartEncaps, EndEncaps, Length : integer;
begin
repeat
StartEncaps := pos('-',page);
EndEncaps := pos(',',page);
Length := (EndEncaps - StartEncaps) + 1;
Delete(Page,StartEncaps,Length);
until(StartEncaps = 0);
end;
procedure TrimTimes;
begin
Info := ReplaceRegex(Info,'[0-9][0-9]:[0-9][0-9]','');
end;
procedure Clean;
begin
TrimShit;
TrimHTML;
TrimRemnants;
Info := TrimLetters(Page);
TrimTimes;
end;
procedure LoadPage;
begin
Page := GetPage('http://www.samair.ru/proxy');
Clean;
end;
begin
LoadPage;
Proxies := ProxyArray(' ',Info);
PrintArray(Proxies);
end.
EDIT: Some weird stuff going on, it doesn't work 2 hours later. If it doesn't for you, try this one:
program New;
var
Page, Info : string;
Proxies : TStringArray;
function ProxyArray(Delimiter : string; Str : string) : array of string;
var
DelimPos, i : integer;
Arr1 : array of string;
Potential : string;
begin
SetArrayLength(Arr1, 500);
i := 0;
repeat
if (pos(Delimiter, Str) = 0) then Break;
DelimPos := pos(Delimiter, Str);
Potential := Replace((copy(Str,0,DelimPos)),Delimiter,'');
if pos(FindRegex(Potential,'[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+'),Potential) <> 0 then
begin
Delete(Potential, (pos(':',Potential)+1),1);
Potential := replace(Potential,'-','');
Arr1[i] := Potential;
i := i + 1;
end;
Delete(Str,1,DelimPos);
until(pos(Delimiter, Str) = 0);
SetArrayLength(Arr1, i);
Result := Arr1;
end;
procedure PrintArray(r : TStringArray);
var
i : integer;
begin
i := 0;
repeat
Writeln('Array['+IntToStr(i)+'] = '+r[i]);
i := i + 1;
until(i = GetArrayLength(r));
end;
procedure TrimShit;
var
i : integer;
begin
i := pos('Country',Page);
Delete(Page,1,i);
Delete(Page,1,6);
end;
procedure TrimHTML;
var
StartEncaps, EndEncaps, Length : integer;
begin
repeat
StartEncaps := pos('<',page);
EndEncaps := pos('>',page);
Length := (EndEncaps - StartEncaps) + 1;
Delete(Page,StartEncaps,Length);
until(StartEncaps = 0);
Delete(Page,1,6);
end;
procedure TrimRemnants;
var
StartEncaps, EndEncaps, Length : integer;
begin
repeat
StartEncaps := pos('-',Info);
EndEncaps := pos(',',Info);
Length := (EndEncaps - StartEncaps) + 1;
Delete(Info, StartEncaps, Length);
until(StartEncaps = 0);
end;
procedure TrimTimes;
begin
Info := ReplaceRegex(Info,'[0-9][0-9]:[0-9][0-9]','');
end;
procedure Clean;
begin
TrimShit;
TrimHTML;
TrimRemnants;
Info := TrimLetters(Page);
TrimTimes;
end;
procedure LoadPage;
begin
Page := GetPage('http://www.samair.ru/proxy');
Clean;
end;
begin
LoadPage;
Proxies := ProxyArray(' ', Info);
PrintArray(Proxies);
end.