使用Python中的Internet Explorer,Opera,Chrome,Firefox和Safari监控访问过的网站

时间:2010-06-08 02:43:27

标签: python internet-explorer safari google-chrome opera

我正在开展一个工作项目,似乎遇到了一个小问题。该项目是与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

2 个答案:

答案 0 :(得分:2)

我建议您查看一个不错的网络代理。如果这些计算机都在同一网络上,您可以实现透明的缓存Web代理并在其上添加过滤规则。它们往往速度很快,可以做很多很酷的事情。

我和鱿鱼有点运气。这会解决你的情况吗?

答案 1 :(得分:0)

您需要将其实现为C++ BHO,汇总DWebBrowserEvents2 :: OnBeforeNavigate并在那里实施您的逻辑,因为它是一个会同步阻止导航的地方直到你回来,你也可以在那里取消导航。