Контролируйте веб-сайты, которые посещают с помощью Internet Explorer, Opera, Chrome, Firefox и Safari в Python

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

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

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

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
1
задан Zac Brown 8 June 2010 в 02:43
поделиться

2 ответа

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

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

2
ответ дан 2 September 2019 в 23:58
поделиться

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

0
ответ дан 2 September 2019 в 23:58
поделиться
Другие вопросы по тегам:

Похожие вопросы: