Я пытаюсь написать сценарий, который отправит 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))
Спасибо миллион.
Но что, если ... (извините за вопрос «что, если») ... что, если по какой-либо причине поиск DNS будет запутан, и мой запрос получит ответ от какого-то странного сервера? Это то, что я хочу обнаружить. – Bsaltafo
В HTTP-протоколе нет ничего, что могло бы смягчить это. Если удаленный сервер отвечает положительно, вы не можете определить, является ли ответ «законным» (это то, что вам помогает https). Если вы хотите выполнить некоторую проверку на конкретном сбое DNS-сервера, вы можете выполнить несколько DNS-запросов, возможно, по сравнению с DNS-серверами Google на 8.8.8.8 и 8.8.4.4 –
На этом уровне нужно только правильно заключается в использовании HTTPS для первоначального запроса. –