Здравствуйте, Уважаемые форумчане. Прошу Вашей помощи в решении моей проблемы. После обновления одного из наших локальных серверов я потерял к нему доступ из VBA. Яндекс с гуглом никак мне помочь не хотят)). Проблема в следующем (насколько я понял!):
При выполнении запроса GET, сервер проверят браузер пользователя и если он не списке, не проводит переадресацию в нужное место. Как его обмануть?
Мой запрос:
Код |
---|
Dim XMLHTTP As New WinHttp.WinHttpRequest
XMLHTTP.Open "GET", "http://MySERVER";, False
XMLHTTP.setRequestHeader "User-Agent", "Mozilla/4.0 (compatible; Win32; WinHttp.WinHttpRequest.5)"
'Доменная авторизация
XMLHTTP.SetAutoLogonPolicy (AutoLogonPolicy_Always)
XMLHTTP.SetClientCertificate ("CURRENT_USER\Personal")
'XMLHTTP.Option(WinHttpRequestOption_EnableRedirects) = False
XMLHTTP.send
Debug.Print XMLHTTP.responseText |
Ответ:
Код |
---|
<!DOCTYPE HTML>
<HTML>
<HEAD>
<meta http-equiv="CONTENT-TYPE" content="text/html; charset=utf-8">
<title>НАЗВАНИЕ</title>
</HEAD>
<body>
<h1>НАЗВАНИЕ</h1>
<strong>Вход</strong>
<form style="display: none" action="servlet/Controller?action=START" method="POST" id="form">
<input type="hidden" id="bw" name="bw" value=""/>
<input type="hidden" id="os" name="os" value=""/>
<input type="hidden" id="ss" name="ss" value=""/>
</form>
<script>
try {
var bw = {
name: 'unknown browser',
version: '',
compat: false
};
try {
(function () {
var ua = navigator.userAgent, tok;
if (ua == null)
return;
// firstly, check ie in compat. mode
var M = ua.match(/\bMSIE\s+7\.0;.*\bTrident\/(\d+)\.0/) || [];
if (/trident/i.test(M[0])) {
bw.name = 'IE';
bw.compat = true;
switch (M[1]) {
case '4':
bw.version = '8';
break;
case '5':
bw.version = '9';
break;
case '6':
bw.version = '10';
break;
case '7':
bw.version = '11';
break;
}
return;
}
// next, do universal check for all browsers
M = ua.match(/(opera|chrome|safari|firefox|msie|trident(?=\/))\/?\s*(\d+)/i) || [];
if (/trident/i.test(M[1])) {
tok = /\brv[ :]+(\d+)/g.exec(ua) || [];
bw.name = 'IE';
bw.version = tok[1] || '';
return;
}
if (M[1] === 'Chrome') {
tok = ua.match(/\bOPR\/(\d+)/);
if (tok != null) {
bw.name = 'Opera';
bw.version = tok[1];
return;
}
}
M = M[2] ? [M[1], M[2]] : [navigator.appName, navigator.appVersion, '-?'];
if ((tok = ua.match(/version\/(\d+)/i)) != null) {
M.splice(1, 1, tok[1]);
}
bw.name = M[0];
bw.version = M[1];
})();
} catch (e) { bw = null; }
document.getElementById('bw').value = bw == null ? null : bw.name + ' ' + bw.version + (bw.compat ? ' (Compatibility View)' : '');
document.getElementById('os').value = navigator ? navigator.platform : 'unavailable';
document.getElementById('ss').value = screen ? screen.width + 'x' + screen.height : 'unavailable';
} catch (e) {
// failed to detect environment
}
document.getElementsByTagName('FORM')[0].submit();
</script>
</body>
</html> |