关于获取用户浏览网址的问题,请了解Winsock及各类协议的富翁帮忙。(90分)

  • 主题发起人 主题发起人 mynlxx
  • 开始时间 开始时间
M

mynlxx

Unregistered / Unconfirmed
GUEST, unregistred user!
我现在要求能够将一台电脑上用户浏览的网址全部以日志的形式记录下来。不知有何方法。
不能限于某种浏览器。

我如今是编了一个截包的Dll,但是问题在于用户浏览一个网址时,由于打开途中跟许多不同
地址连接,如含有Flash或其他的,则有在打开网页时还连接到别的公司的某个地址。
而我只需取也只能取那个真正用户在浏览器地址栏里输入的那个网址,不知仍用截包的方法
是否可以做到,如开始浏览时是不是有什么特征?(光拦截请求的数据包,结果一个网页会有
许多不同地址的请求,且结构好象是一样的。,)

或是有别的更好的方法?先谢谢大家了。
 
function URLInfo(sBrowerPrgFile, sServiceName: string; Netscape: boolean; var Title: string): pChar;
{
参数说明:
sBrowerPrgFile: 浏览器exe文件的完整路径名
sServiceName: 浏览器的DDE-Service名字
Netscape是'Netscape',IE是'iexplore'
Title: 返回当前网页的title
返回值: pChar的字符串
}
var
DDEClientConv: TDDEClientConv;
StartPtr, EndPtr: pchar;
browserWinName: string;
begin
result:= #0;
Title:= '';

if (sBrowerPrgFile = '') or (not FileExists(sBrowerPrgFile)) then
raise EBrowserNotFoundError.create('****!浏览器应用程序不存在!');

ddeClientConv:= TDDEClientConv.Create( nil );
try
with ddeClientConv do
begin
ServiceApplication := sBrowerPrgFile;
SetLink( sServiceName,'WWW_GetWindowInfo');
StartPtr:= RequestData('0xFFFFFFFF');
end;
finally
ddeClientConv.Free;
end;

if startPtr^ = #0 then
exit;
{skip leading "}
inc(StartPtr);
EndPtr:= StartPtr;
{proceed to next "}
while (EndPtr^ <> '"') do
inc(EndPtr);
{terminate URL string}
EndPtr^:= #0;
result:= StartPtr;
{skip ","}
StartPtr:= EndPtr+3;
if Netscape then
inc(StartPtr,12);

EndPtr:= StartPtr;
if Netscape then
while (EndPtr^ <> ']') do
inc(EndPtr)
else
while (EndPtr^ <> '"') do
inc(EndPtr);

EndPtr^:= #0;
Title:= strPas(StartPtr);
end;
 
用BHO接口了!
 
无助。。
 
后退
顶部