URL停止使用Delphi服务

URL停止使用Delphi服务,delphi,url,browser,Delphi,Url,Browser,我想用Delphi7编写后台服务,它可以阻止任何浏览器加载特定的URL。这可能吗 有人能给我指个方向吗 提前谢谢 Shane是一个服务,不,我不这么认为。但是您可以编辑“hosts”文件,以便url的域指向127.0.0.1。您可以创建一个“保护”该文件的服务,尽管该服务本身必须具有提升的权限才能对其进行编辑,当然,如果用户有权这样做,该服务本身也可以被终止 无论如何,如果您设法编辑该文件,浏览器将无法按域名查找服务器。当然,具有IP地址的URL不能以这种方式阻止,您也不能阻止特定URL,只能阻

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

有人能给我指个方向吗

提前谢谢


Shane是一个服务,不,我不这么认为。但是您可以编辑“hosts”文件,以便url的域指向127.0.0.1。您可以创建一个“保护”该文件的服务,尽管该服务本身必须具有提升的权限才能对其进行编辑,当然,如果用户有权这样做,该服务本身也可以被终止

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


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

服务,不,我不这么认为。但是您可以编辑“hosts”文件,以便url的域指向127.0.0.1。您可以创建一个“保护”该文件的服务,尽管该服务本身必须具有提升的权限才能对其进行编辑,当然,如果用户有权这样做,该服务本身也可以被终止

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


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

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

  • 编写一个DLL供您使用,如果这些进程用于浏览器,则必须截获并过滤所有流量,例如使用Windows套接字

  • 编写一个有点像防火墙的程序(在操作系统的较低级别)

我在互联网过滤软件公司工作过,我可以告诉你们,他们都是大公司。 我们最初采用第一种方法,然后改用另一种方法,因为技术上更好。[我们从未完成这一过渡,因为公司倒闭;-(]

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

但正如我前面所说,这是一个大问题:您必须处理32位和64位代码,http与https,保护服务不被停止,等等。您可以找到的任何非编程解决方案都更好(尽管很容易绕过)


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

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

  • 编写一个DLL供您使用,如果这些进程用于浏览器,则必须截获并过滤所有流量,例如使用Windows套接字

  • 编写一个有点像防火墙的程序(在操作系统的较低级别)

我在互联网过滤软件公司工作过,我可以告诉你们,他们都是大公司。 我们最初采用第一种方法,然后改用另一种方法,因为技术上更好

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

但正如我前面所说,这是一个大问题:您必须处理32位和64位代码,http与https,保护服务不被停止,等等。您可以找到的任何非编程解决方案都更好(尽管很容易绕过)


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

对于Internet Explorer,您可以编写一个IE本身加载并将浏览器事件传递给的URL。BHO然后可以根据需要接受/拒绝每个请求的URL。

对于Internet Explorer,您可以编写一个IE本身加载并将浏览器事件传递给BH的URLO然后可以根据需要接受/拒绝每个请求的URL。

您可以通过编辑
主机
文件来实现这一点。请参阅以了解如何做到这一点。无需编写windows服务。如果
主机
文件不是一个适当的解决方案,那么您可以考虑在C/C++中编写一个过滤HTTP流量的驱动程序。但是,这不是一个简单的解决方案琐碎的任务。我的朋友是一名Windows设备驱动程序程序员,他说这种项目大约需要10000行代码,只能用C/C++编写。@Adam,正如我在对的评论中所说,只有在浏览器不使用代理的情况下,编辑主机文件才有效。如果使用代理,你的建议毫无用处。@jachguate当然你是对的。另一种想法是,您可以使用OpenDNS(一种免费DNS服务,允许您根据域的内容分级筛选域),并将不需要的
域添加到阻止列表中。这将阻止您所在位置的所有计算机(通过公共IP地址访问internet)使用该服务访问被阻止的域。但仍然无法解决代理服务器问题,或者无法解决手动将DNS设置为OpenDNS服务器以外的其他服务器的计算机问题。您可以通过编辑
主机
文件来实现这一点。请参阅以了解如何执行此操作。无需编写windows服务。如果
主机
文件不足以解决此问题lution,然后你可以看看用C/C++编写一个过滤HTTP流量的驱动程序。然而,这不是一个简单的任务。我的朋友是一个Windows设备驱动程序程序员,他说这种项目大约需要10000行代码,只能用C/C++编写。@Adam,正如我在一篇评论中所说,只有当browser不使用代理。如果使用代理,你的建议就没有用了。@jachguate当然你是对的。另外,你可以使用OpenDNS(一个