Мониторинг посещенных веб-сайтов с использованием Internet Explorer, Opera, Chrome, Firefox и Safari в Python - PullRequest
1 голос
/ 08 июня 2010

Я работаю над проектом для работы и, похоже, столкнулся с небольшой проблемой. Проект похож на программу Web Nanny, но брендирован для компании моего клиента. Он будет иметь такие функции, как блокировка веб-сайта по URL, ключевое слово и журналы веб-активности. Мне также нужно было бы иметь возможность "приостановить" загрузки, пока не будет введено приемлемое имя пользователя и пароль.

Я нашел скрипт для отслеживания URL-адреса, который посещали в Internet Explorer (показан ниже), но, похоже, он значительно замедляет работу браузера. Я не нашел поддержки или идей о том, как реализовать это в других браузерах.

Итак, мои вопросы:

1). Как отслеживать другие действия браузера / посещенные URL? 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 ]

2 голосов
/ 08 июня 2010

Я бы порекомендовал заглянуть в хороший веб-прокси. Если все машины находятся в одной сети, вы можете реализовать прозрачный кеширующий веб-прокси и наложить на него правила фильтрации. Они имеют тенденцию быть быстрыми и могут делать много классных вещей.

Мне повезло с Squid. Решит ли это вашу ситуацию?

0 голосов
/ 08 июня 2010

Вам нужно реализовать это как C ++ BHO , приемник DWebBrowserEvents2 :: OnBeforeNavigate и реализовать свою логику там, как есть место, которое будет блокировать навигацию синхронно, пока вы не вернетесь, и вы также можете отменить навигацию там.

...