2010-06-22 6 views
0

Я пытаюсь написать сценарий, который отправит HTTP «GET» в URL-адрес, затем определит, был ли ответ получен из того же домена или нет.Сценарий, чтобы определить, является ли ответ HTTP от предполагаемого домена

Я играл с VBS и объектом WinHttp.WinHttpRequest.5.1. К сожалению, это не дает мне никакого доступа к тому, откуда именно ответ пришел.

Я попытался разобрать заголовки ответов, но это дает только результаты, если веб-сервер устанавливает cookie с доменом сервера в нем. Например (в моем сценарии ниже) «google.com» пройдет, но «avg.com» завершится ошибкой.

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

Мой текущий сценарий:

Dim objWinHttp 
    Dim strContent, strURL 
    Set objWinHttp = CreateObject("WinHttp.WinHttpRequest.5.1") 
    objWinHttp.SetTimeouts 29000, 29000, 29000, 29000 
    objWinHttp.Option(0) = "Website_monitor_light/1.0" 
    objWinHttp.Option(6) = True 
    If (InStr(WScript.Arguments.Item(0), "www.") = 1) Then 
    URL = "http://" & WScript.Arguments.Item(0) 
    Else 
    URL = "http://www." & WScript.Arguments.Item(0) 
    End If 
    objWinHttp.Open "GET", URL 
    On Error Resume Next 
    objWinHttp.Send() 
    If (objWinHttp.Status = 200) Then 
    strContent = objWinHttp.GetAllResponseHeaders 
    End If 
    Wscript.Quit InStr(strContent, "domain=." & Mid(URL,12)) 

Спасибо миллион.

ответ

1

Похоже, вы просто хотите, чтобы объект WinHttpRequest НЕ выполнял автоматически ответы на перенаправление. Проверьте вариант WinHttpRequestOption_EnableRedirects. По умолчанию установлено значение TRUE, вам нужно отключить его.

+0

Но что, если ... (извините за вопрос «что, если») ... что, если по какой-либо причине поиск DNS будет запутан, и мой запрос получит ответ от какого-то странного сервера? Это то, что я хочу обнаружить. – Bsaltafo

+0

В HTTP-протоколе нет ничего, что могло бы смягчить это. Если удаленный сервер отвечает положительно, вы не можете определить, является ли ответ «законным» (это то, что вам помогает https). Если вы хотите выполнить некоторую проверку на конкретном сбое DNS-сервера, вы можете выполнить несколько DNS-запросов, возможно, по сравнению с DNS-серверами Google на 8.8.8.8 и 8.8.4.4 –

+0

На этом уровне нужно только правильно заключается в использовании HTTPS для первоначального запроса. –