- Offizieller Beitrag
Dieser Browser kontrolliert, ob die eingegebene URL mit einem Array aus IP-Adressen übereinstimmt. Wenn ja, dann wird die entsprechende Seite nicht aufgerufen (Fehlermeldung).
Dazu wird die vom Benutzer eingegebene URL erstmal in die IP-Adresse umgewandelt und dann erst verglichen, damit man die Kontrolle nicht einfach durch Eingabe der IP-Adresse umgehen kann.
Das Array (im Quelltext kommentiert) kann beliebig erweitert werden.
Spoiler anzeigen
#include<StaticConstants.au3>
#include<GuiStatusBar.au3>
#include<EditConstants.au3>
#include<GUIConstantsEx.au3>
#include<IE.au3>
#include<WindowsConstants.au3>
Global Const $WS_EX_COMPOSITED = 0x2000000
$oIE = _IECreateEmbedded()
[/autoit] [autoit][/autoit] [autoit]$hGui = GUICreate('IE-Kontrolle', 1024, 768, -1, -1, BitOr($GUI_SS_DEFAULT_GUI, $WS_MAXIMIZEBOX, $WS_SIZEBOX, $WS_CLIPCHILDREN), $WS_EX_COMPOSITED)
GUISetBkColor(0xDDDDDD)
GUICtrlCreateLabel('Adresse', 4, 27, 55, 20, $SS_RIGHT)
GUICtrlSetFont(-1, 9, 400, 0, 'Verdana')
GUICtrlSetColor(-1, 0x888888)
GUICtrlSetResizing(-1, $GUI_DOCKALL)
$hURL = GUICtrlCreateInput('', 64, 25, 958, 20, $ES_WANTRETURN, $WS_EX_STATICEDGE)
GUICtrlSetFont(-1, 9, 400, 0, 'Arial')
GUICtrlSetResizing(-1, $GUI_DOCKLEFT+$GUI_DOCKRIGHT+$GUI_DOCKTOP+$GUI_DOCKHEIGHT)
GUICtrlCreateObj($oIE, 0, 48, 1024, 696)
GUICtrlSetResizing(-1, $GUI_DOCKBORDERS)
$hStatus = _GUICtrlStatusBar_Create($hGUI)
_GUICtrlStatusBar_SetText($hStatus, 'Fertig.')
_IENavigate($oIE, 'about:blank')
GUISetState()
GUIRegisterMsg($WM_SIZE, 'WM_SIZE')
ControlFocus($hGui, '', $hURL)
Global $oldURL = 'about:blank'
Global $aBadURL[5] = ['193.99.144.85','','','',''] ; hier alle zu sperrenden IP-Adressen eintragen (z.B.: 1.Eintrag = http://www.heise.de)
While True
Switch GUIGetMsg()
Case $GUI_EVENT_CLOSE
Exit
Case $hURL
$sURL = StringReplace(GUICtrlRead($hURL), 'http://', '')
_IENavigate($oIE, $sURL, 0)
EndSwitch
$sURL = _IEPropertyGet($oIE, "locationurl")
If StringLeft($sURL, 7) <> 'http://' Then $sURL = 'http://' & $sURL
If StringRight($sURL, 1) <> '/' Then $sURL &= '/'
$aURL = StringRegExp($sURL, '(http://){1}(.+?)/', 3)
If IsArray($aURL) Then
If $aURL[1] <> $oldURL Then
$oldURL = $aURL[1]
$bCheck = True
_GUICtrlStatusBar_SetText($hStatus, 'Bitte warten...')
If $aURL[1] <> 'about:blank' Then
TCPStartup()
$sIP = TCPNameToIP($aURL[1])
TCPShutdown()
Else
$sIP = ''
EndIf
If $sIP <> '' Then
For $i = 0 To UBound($aBadURL)-1
If $sIP = $aBadURL[$i] Then
Beep(400, 200)
_GUICtrlStatusBar_SetText($hStatus, 'Diese Seite darfst Du nicht aufrufen!')
GUICtrlSetData($hURL, '')
_IENavigate($oIE, 'about:blank')
$bCheck = False
ControlFocus($hGui, '', $hURL)
Sleep(1000)
ExitLoop
EndIf
Next
If $bCheck Then
If StringLeft($aURL[1], 7) <> 'http://' Then
$sURL = 'http://' & $aURL[1]
GUICtrlSetData($hURL, $aURL[1])
EndIf
_IENavigate($oIE, $aURL[1])
If @error Then
Beep(400, 200)
_GUICtrlStatusBar_SetText($hStatus, 'Beim laden der Seite ist ein Fehler aufgetreten!')
Else
_GUICtrlStatusBar_SetText($hStatus, 'Fertig.')
EndIf
EndIf
ElseIf $aURL[1] <> 'about:blank' Then
Beep(400, 200)
_GUICtrlStatusBar_SetText($hStatus, 'Diese Seite existiert nicht!')
Else
_GUICtrlStatusBar_SetText($hStatus, 'Fertig.')
EndIf
EndIf
EndIf
WEnd
Func WM_SIZE($hWnd, $iMsg, $iwParam, $ilParam)
_GUICtrlStatusBar_Resize($hStatus)
Return $GUI_RUNDEFMSG
EndFunc
Edit: Script noch etwas geändert, damit auch der Umweg über eine Suchmaschine nicht funktioniert.