javascript — вход на сайт с помощью VBScript

Итак, вот моя проблема, в нашей интрасети есть веб-страница, на которую я должен войти, чтобы получить доступ через один из наших брандмауэров. Мне нужен этот доступ все время, пока я работаю, но он автоматически выходит из системы каждые 60 минут, поэтому мне нужно остановить то, что я делаю, вернуться на страницу, ввести свое имя пользователя & пароль & войдите снова. Это повторяется около 9 часов или пока я не ухожу с работы.

Я работал над VBScript, который я мог бы планировать запускать каждые 60 минут для себя. В настоящее время я могу сделать это через это основной скрипт …

Const strID = "username"Const strPswd = "password"
Set oShell = CreateObject("WScript.Shell")
oShell.Run("""https://00.0.00.00:0000/php/uid.phpvsys=1&url=http://www.yyy.net%2f""")

WScript.Sleep 3000
oShell.SendKeys strID
oShell.SendKeys "{TAB}"wScript.Sleep 1000
oShell.SendKeys strPswd
WScript.Sleep 1000
OShell.SendKeys "{TAB}"OShell.SendKeys "{ENTER}"WScript.Sleep 1500

Set IE = CreateObject("Shell.Application")
Set windows = IE.Windows()

For Each window In IE.windows
If left(window.LocationUrl, 5) <> "file:" Then
If InStr(window.locationUrl, "http://www.yyy.net/") Then window.Quit()
If UCase(window.locationUrl) = UCase("about:tabs") Then window.Quit()
End If
Next

Вышеприведенный скрипт работает конечно & Я в настоящее время использую это; однако проблема в том, что если / когда скрипт запускается до выхода из системы, вы получаете сообщение об ошибке & очевидно, он не будет работать еще час. Это вдохновило меня погрузиться глубже в сценарии. Я начал искать похожие темы / методы, изучать другие коды и т. Д., Чтобы получить некоторые идеи. Моей первой попыткой было выполнить то же самое, что и вышеописанный скрипт, за исключением полностью скрытого & без использования «SendKeys». Моей целью было собрать сценарий, подобный этому …

Перейдите на страницу & затем проверьте строку «заголовок» … если это = ‘xxxx’, то вы вышли из системы, поэтому установите значения для имени пользователя & элементы пароля & отправить их … в противном случае, если это = ‘гггг’, то вы все еще вошли в систему, так что спать в течение 10 секунд, перезагрузите & Проверьте еще раз. Я был почти уверен, что это будет работать, но с этим сценарием, независимо от того, что я искал с document.getElementById("zzz")Я ВСЕГДА получаю «нулевую» ошибку. Как будто никаких элементов не существует & Я использовал каждый Name= & ID= Я могу найти в источнике. (Если интересно, я также могу опубликовать этот скрипт, но в итоге я перешел к совершенно другому подходу)

После вышеупомянутых проблем я начал читать о XMLHttp & отправив данные таким образом, вместо этого. Используя Fiddler, я зашел на сайт как обычно & удалось найти строку с именем пользователя и паролем, которые были отправлены на сервер & попытался написать скрипт для этого. Это то, что у меня сейчас есть …

Call Main

Function Main ()
User = "myusername"Pass = "mypassword"
'This is the string Fiddler revealed is being sent to server at login...
'"inputStr=&escapeUser=user&user=user&passwd=passwd&ok=Login"
'So I create this string with my information instead of elements values...
Credentials = ("inputStr=&escapeUser=" & User & "&user=" & User & "&passwd=" & Pass & "&ok=Login")

Set objXML = CreateObject("Msxml2.XMLHttp.6.0")
objXML.Open "POST", "https://00.0.00.00:0000/php/uid.php?vsys=1&url=http://www.yyy.net%2f", False
objXML.SetRequestHeader "Content-Type", "application/x-www-form-urlencoded"objXML.Send Credentials

End Function

Используя вышеуказанный метод, не должно иметь значения, если я был или не вошел в систему, данные все равно будут отправлены & ошибок не возникнет. Но этот скрипт ничего не делает, он работает, я не получаю никаких ошибок, я все еще не вошел в систему & Fiddler даже не показывает никаких запросов, отправленных или полученных после того, как я запустил его. Однако, если я введу соответствующую информацию в Fiddler & затем выполните его, бум, я вошел в систему. Это информация, которую я ввел & выполненный & успешно входит в систему через Fiddlers Composer на вкладке Parsed …

С «СООБЩЕНИЕ» выбранный / URL страниц входа / «HTTP / 1.1» выбран …

Referer: https://00.0.00.00:0000/php/uid.php?vsys=1&url=http://www.yyy.net%2f
Content-Type: application/x-www-form-urlencoded
Host: 00.0.00.00:0000
Content-Length: 68

Затем в разделе «Запрошенное тело» я введите …

inputStr=&escapeUser=myusername&user=myusername&passwd=mypassword&ok=Login

Когда я нажимаю «выполнить», вы видите, что запрос проходит & ответ вернуться & когда я проверяю свой конец, я вошел в систему.

Надеюсь, мне не хватает чего-то простого, что один из вас, гуру, может легко указать, или, может быть, у кого-то есть лучший подход, я открыт для всех идей & предложения, потому что после 2 полных дней я не получил ни где.

Кстати, в случае, если кому-то просто любопытно, или это нужно, или что-то еще, соответствующая часть источника со страниц входа ниже …

<body onload="loadPage();">
<table id="formtable">
<tr><td>
<div id="activearea">
<div id="logo"><img src="http://xxxxx.xxxx.net/xxx.png" data alt="Logo" width="100"/></div>
<div id="heading">Firewall Access</div>
<div id="desc">Please enter your credentials.</div>
<div id="formdiv">

<script>

function loadPage() {

if (document.login.user.value == '')
document.login.user.focus();

var errMsg = "";
var respStatus = "Success";
var respMsg = "";
if (respStatus == "Error") {
if (errMsg != "")
errMsg += "<br><br>";
errMsg += "<li>"+respMsg;
} else if (respStatus == "Challenge") {
var divUserName = document.getElementById("dUserName");
divUserName.style.display = "none";
var passwdTitle = document.getElementById("passwdTitle");
passwdTitle.innerHTML = "";

var divInputStr = document.getElementById("dInputStr");
divInputStr.style.display = "block";
divInputStr.innerHTML = respMsg;
}

if (errMsg != "") {
var divObj = document.getElementById("dError");

divObj.style.display = "block";
divObj.innerHTML = errMsg;
}
}

function submitClicked() {
var thisForm = document.getElementById("login_form");
// hide the error div, just incase it was showing.
var divObj = document.getElementById("dError");
divObj.style.display = "none";
divObj.innerHTML = "";

var divTaLogin = document.getElementById("taLogin");
divTaLogin.style.display = "none";

thisForm.inputStr.value = "";
thisForm.escapeUser.value = thisForm.user.value.replace(/\\/g, "\\\\");

}

function onClickHandler() {
submitClicked();
}

</script>

<form name="login" id="login_form" method="post">
<input type='hidden' name="inputStr" value="">
<input type='hidden' name="escapeUser" value="">

<div id="taLogin">
<table>
<tr id="dUserName">
<td><span id="userTitle">User</span></td>
<td><input type="text" id="user" name="user" size="19"></td>
</tr>
<tr>
<td><span id="passwdTitle">Password</span></td>
<td>
<div id="dInputStr" style="display:none"><br></div>
<input type="password" maxlength="40" size="19" name="passwd">
</td>
</tr>
<tr>
<td>&nbsp;</td>
<td><input class="buttonFixed" type="submit" id="submit"name="ok" value="Login" onClick="submitClicked()"></td>
</tr>
</table>
</div>
</form>
<div id="dError" class="msg" style="display:none"></div>


</div>
</div>
</td></tr>
</table>
</body>
</html>

1

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]