📄 getlinks.pas
字号:
{##########################################
旁注入侵专用程序 3.0升级版
----------------------------------------
模块:网页扫描 - 分解连接地址
描述:该单元主要用于从网页中把连接地址分解出来
作者:2005.3.20日下午 明小子
##########################################}
unit GetLinks;
interface
uses
Windows, Wininet, SysUtils, Classes;
function CutStr(URLStr, HTMLStr: string; LinkCount: integer): string;
implementation
function CutStr(URLStr, HTMLStr: string; LinkCount: integer): string;
var
P, p2: integer;
Pos1: integer; //查找网址中'/'的位置
hStr: string; //网址
StrList, TmpLst: TStrings;
TempStr, TempStr2: string;
SmallStr: string;
begin
Result := '';
TmpLst := TStringList.Create;
hStr := StringReplace(URLStr, 'http://', '', [rfIgnoreCase]);
while Pos('/', hStr) > 1 do
begin
Pos1 := Pos('/', hStr);
hStr := StringReplace(hStr, '/', ' ', [rfIgnoreCase]);
end;
URLStr := Trim(Copy(URLStr, 1, Pos1 + Length('http://') - 1)); //得到网址
StrList := TStringList.Create;
TempStr := LowerCase(HTMLStr); {全部转换为小写}
while Pos('href=', TempStr) > 1 do
begin
if StrList.Count >= LinkCount then Break;
P := Pos('href=', TempStr) + 5;
TempStr := Copy(TempStr, P, Length(TempStr));
if (TempStr[1] = '''') or (TempStr[1] = '"') then
begin
SmallStr := TempStr[1];
Delete(TempStr, 1, 1);
P := Pos(SmallStr, TempStr);
TempStr2 := Copy(TempStr, 1, P - 1);
end
else
TempStr2 := Copy(TempStr, 1, 300);
if pos('>', TempStr2) > 1 then
begin
p := Pos('>', TempStr2) - 1;
TempStr2 := Copy(TempStr2, 0, p);
end;
if Pos('#', TempStr2) > 1 then
begin
p := Pos('#', TempStr2) - 1;
TempStr2 := Copy(TempStr2, 0, p);
end;
if pos(' ', TempStr2) > 1 then
begin
p := Pos(' ', TempStr2) - 1;
TempStr2 := Copy(TempStr2, 0, p);
end;
if Pos('"', TempStr2) > 1 then
begin
p := Pos('"', TempStr2) + 6;
TempStr2 := Copy(TempStr2, p, Length(TempStr2));
p := Pos('"', TempStr2);
TempStr2 := Copy(TempStr2, 1, p - 1);
end;
if (Pos('.asp?', TempStr2) > 1) and (Pos('id=', TempStr2) > 1) and (Pos('{$', TempStr2) = 0)
and (Pos('(', TempStr2) = 0) and (Pos(';', TempStr2) = 0) and (Pos('''', TempStr2) = 0) then
begin
if Pos('://', TempStr2) > 1 then
begin
if StrList.IndexOf(TempStr2) = -1 then
begin
TmpLst.Text := TempStr2;
if TmpLst.Count = 2 then
StrList.Add(TmpLst.Strings[0] + TmpLst.Strings[1])
else
StrList.Add(TempStr2);
end;
end
else
begin
if Copy(TempStr2, 1, 1) = '/' then
begin
if StrList.IndexOf(URLStr + TempStr2) = -1 then
begin
TmpLst.Text := TempStr2;
if TmpLst.Count = 2 then
StrList.Add(URLStr + TmpLst.Strings[0] + TmpLst.Strings[1])
else
StrList.Add(URLStr + TempStr2);
end;
end
else
if StrList.IndexOf(URLStr + '/' + TempStr2) = -1 then
begin
TmpLst.Text := TempStr2;
if TmpLst.Count = 2 then
StrList.Add(URLStr + '/' + TmpLst.Strings[0] + TmpLst.Strings[1])
else
StrList.Add(URLStr + '/' + TempStr2);
end;
end;
end;
end;
Result := StrList.Text;
StrList.Free;
TmpLst.Free;
end;
{function CutStr(URLStr, HTMLStr: string; LinkCount: integer): string;
var
P, p2: integer;
Pos1: integer; //查找网址中'/'的位置
hStr: string; //网址
StrList: TStrings;
TempStr, TempStr2: string;
begin
Result := '';
hStr := StringReplace(URLStr, 'http://', '', [rfIgnoreCase]);
while Pos('/', hStr) > 1 do
begin
Pos1 := Pos('/', hStr);
hStr := StringReplace(hStr, '/', ' ', [rfIgnoreCase]);
end;
URLStr := Trim(Copy(URLStr, 1, Pos1 + Length('http://') - 1)); //得到网址
StrList := TStringList.Create;
TempStr := LowerCase(HTMLStr); //全部转换为小写
while Pos('href=', TempStr) > 1 do
begin
// if StrList.Count >= LinkCount then Break;
P := Pos('href=', TempStr) + 5;
TempStr := Copy(TempStr, P, Length(TempStr));
if (TempStr[1] = '''') or (TempStr[1] = '"') then
Delete(TempStr, 1, 1);
P := Pos('''', TempStr);
p2 := Pos('"', TempStr);
if p < p2 then
begin
TempStr2 := Copy(TempStr, 1, P - 1);
if Pos('script:', TempStr2) > 1 then
begin
p2 := pos(''')', TempStr);
TempStr2 := Copy(TempStr, p + 1, p2 - Length(TempStr2) - 2);
end;
end;
if p2 < p then
TempStr2 := Copy(TempStr, 1, P2 - 1);
if pos('>', TempStr2) > 1 then
begin
p := Pos('>', TempStr2) - 1;
TempStr2 := Copy(TempStr2, 0, p);
end;
if Pos('#', TempStr2) > 1 then
begin
p := Pos('#', TempStr2) - 1;
TempStr2 := Copy(TempStr2, 0, p);
end;
if pos(' ', TempStr2) > 1 then
begin
p := Pos(' ', TempStr2) - 1;
TempStr2 := Copy(TempStr2, 0, p);
end;
if Pos('"', TempStr2) > 1 then
begin
p := Pos('"', TempStr2) + 6;
TempStr2 := Copy(TempStr2, p, Length(TempStr2));
p := Pos('"', TempStr2);
TempStr2 := Copy(TempStr2, 1, p - 1);
end;
if (Pos('.asp?', TempStr2) > 1) and (Pos('id=', TempStr2) > 1) and (Pos('{$', TempStr2) = 0)
and (Pos('(', TempStr2) = 0) and (Pos(';', TempStr2) = 0) and (Pos('''', TempStr2) = 0) then
begin
if Pos('://', TempStr2) > 1 then
begin
if StrList.IndexOf(TempStr2) = -1 then
StrList.Add(TempStr2);
end
else
begin
if Copy(TempStr2, 1, 1) = '/' then
begin
if StrList.IndexOf(URLStr + TempStr2) = -1 then
StrList.Add(URLStr + TempStr2);
end
else
if StrList.IndexOf(URLStr + '/' + TempStr2) = -1 then
StrList.Add(URLStr + '/' + TempStr2);
end;
end;
end;
Result := StrList.Text;
StrList.Free;
end; }
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -