我正在开展一个工作项目,似乎遇到了一个小问题。该项目是与Web Nanny类似的计划,但是我的客户公司已经打上了这个项目。它将具有URL,关键字和Web活动日志阻止网站等功能。我还需要能够“暂停”下载,直到输入可接受的用户名和密码。
我找到了一个脚本来监控Internet Explorer中访问过的URL(如下所示),但它似乎大大减慢了浏览器的速度。我没有找到任何支持或想法如何在其他浏览器中实现这一点。
所以,我的问题是:
1)。如何监控其他浏览器活动/访问过的网址? 2)。除非输入了可接受的用户名和密码,否则如何阻止下载?
from win32com.client import Dispatch,WithEvents
import time,threading,pythoncom,sys
stopEvent=threading.Event()
class EventSink(object):
def OnNavigateComplete2(self,*args):
print "complete",args
stopEvent.set()
def waitUntilReady(ie):
if ie.ReadyState!=4:
while 1:
print "waiting"
pythoncom.PumpWaitingMessages()
stopEvent.wait(.2)
if stopEvent.isSet() or ie.ReadyState==4:
stopEvent.clear()
break;
time.clock()
ie=Dispatch('InternetExplorer.Application',EventSink)
ev=WithEvents(ie,EventSink)
ie.Visible=1
ie.Navigate("http://www.google.com")
waitUntilReady(ie)
print "location",ie.LocationName
ie.Navigate("http://www.aol.com")
waitUntilReady(ie)
print "location",ie.LocationName
print ie.LocationName,time.clock()
print ie.ReadyState
答案 0 :(得分:2)
我建议您查看一个不错的网络代理。如果这些计算机都在同一网络上,您可以实现透明的缓存Web代理并在其上添加过滤规则。它们往往速度很快,可以做很多很酷的事情。
我和鱿鱼有点运气。这会解决你的情况吗?
答案 1 :(得分:0)
您需要将其实现为C++ BHO,汇总DWebBrowserEvents2 :: OnBeforeNavigate并在那里实施您的逻辑,因为它是一个会同步阻止导航的地方直到你回来,你也可以在那里取消导航。