1

我想用 Delphi 7 编写后台服务,以阻止任何浏览器加载特定的 URL。这可能吗?

谁能指出我的方向?

提前致谢。

谢恩

4

3 回答 3

3

有两种方法,其中第二种在技术上是最好的:

  • 编写一个注入所有进程的 DLL,如果这些进程用于浏览器,则必须拦截和过滤所有流量,例如使用 Windows 套接字

  • 编写一个有点像防火墙的分层服务提供者(在操作系统中的较低级别)

我曾在互联网过滤软件工作过,我可以告诉你两者都是事业。我们最初采用第一种方法,然后切换到另一种,因为它在技术上更好。[而且我们从未完成过渡,因为公司倒闭了;-(]

我们没有编写自己的 LSP(这本身就是一项大工作),而是使用了Komodia的产品。尽管他们是为 C 编写的,但人们在回答我们有关移植到 Delphi 的问题时非常乐于助人。

但正如我之前所说,这很重要:您必须处理 32 位和 64 位代码、http 与 https、保护服务不被停止等。您可以找到的任何非编程解决方案都更好(尽管很容易规避) .

如果您仍然想编程:准备使用 LSP 进行 1 人年的编码。

于 2013-03-14T19:50:02.930 回答
1

服务,不,我不这么认为。但是您可以编辑“hosts”文件,使 url 的域指向 127.0.0.1。您可以创建一个“保护”此文件的服务,尽管服务本身必须具有更高的权限才能编辑它,当然,如果用户有权这样做,服务本身也可以被杀死。

无论如何,如果您设法编辑文件,浏览器将无法通过域名找到服务器。当然,不能以这种方式阻止具有 IP 地址的 URL,您也不能阻止特定的 URL,只能阻止整个域。

但总的来说,这不是使用自定义服务来解决的问题,而是在 PC 或路由器上的防火墙中解决。

于 2013-03-14T16:27:46.350 回答
0

For Internet Explorer, you can write a Browser Helper Object that IE itself loads and passes browser events to. The BHO can then accept/reject URLS on a per-request basis as needed.

于 2013-03-14T20:31:24.740 回答