我希望在Delphi 7中编写后台服务,以阻止任何浏览器加载特定的URL。这可能吗?
有人能指出我的方向吗?
提前致谢。
沙恩
答案 0 :(得分:3)
有两种方法,第二种方法在技术上是最好的:
编写一个inject into all processes的DLL,如果这些进程适用于浏览器,则必须拦截并过滤所有流量,例如:使用Windows套接字
写一个有点像防火墙的Layered service provider(在操作系统的较低级别)
我曾在互联网过滤软件工作,我可以告诉你们两个都是大型承诺。 我们最初采用第一种方法,然后切换到另一种方法,因为它在技术上更好。 [我们从未完成过渡,因为公司弃牌; - (]
我们没有编写自己的LSP(这本身就是一项很大的工作)但是使用了Komodia的产品。虽然他们为C写作,但是人们非常乐于回答我们关于移植到Delphi的问题。
但正如我之前所说,这是大的:你必须处理32位和64位代码,http与https,保护服务不被停止等等。你可以找到的任何非编程解决方案都更好(虽然容易规避)。
如果您仍想编程:使用LSP准备1个人年的编码。
答案 1 :(得分:1)
服务,不,我不这么认为。但您可以编辑“hosts”文件,以便url的域指向127.0.0.1。您可以创建一个“保护”此文件的服务,尽管服务本身必须具有提升的权限才能编辑它,当然,如果用户有权这样做,服务本身也可以被杀死。
无论如何,如果你设法编辑文件,浏览器将无法通过域名找到服务器。当然,具有IP地址的网址不能以这种方式阻止,也不能阻止特定的网址,只能阻止整个网域。
但总的来说,这不是使用自定义服务解决的问题,而是在PC或路由器的防火墙上解决。
答案 2 :(得分:0)
对于Internet Explorer,您可以编写IE本身加载的Browser Helper Object并将浏览器事件传递给。然后,BHO可以根据需要基于每个请求接受/拒绝URL。