Я работаю над проектом для работы и, казалось, сталкивался с небольшой проблемой. Проект является подобной программой веб-Няньке, но выпущенный под брендом к компании моего клиента. Это будет иметь функции, такие как веб-сайт, блокирующийся 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
Я бы порекомендовал поискать хороший веб-прокси. Если все машины находятся в одной сети, вы можете реализовать прозрачный кэширующий веб-прокси и наложить на него правила фильтрации. Они, как правило, обладают высокой скоростью и могут делать много крутых вещей.
Мне повезло со Squid. Решит ли это вашу ситуацию?
Вам необходимо реализовать это как C ++ BHO , приемник DWebBrowserEvents2 :: OnBeforeNavigate и реализовать свою логику там, так как это место, которое будет блокировать навигацию синхронно, пока вы не вернетесь, и вы также можете отменить навигацию там.