Как отправить мои учетные данные для входа в Hotmail через скрипт?
Я хочу создать скрипт для отправки моего имени пользователя и пароля на hotmail, чтобы я мог войти в систему, не заходя на страницу входа. Я не хочу использовать опцию "войти в систему автоматически" по разным причинам. Я взглянул на исходный код, чтобы понять, как попытаться понять, как Hotmail отправляет учетные данные на сервер для проверки, но я не могу сделать заголовки из исходного кода. Любая помощь приветствуется.
Я прочитал пост здесь, спрашивая что-то очень похожее, но для другой цели - хотя данный ответ не тот, который я ищу.
3 ответа
Используя Firefox, я просто создаю закладку с именем hm в поле "location" и вставляю код ниже, когда я загружаю страницу hotmail, я просто нажимаю на закладку.
javascript:%20document.getElementsByName('login').item(0).value='yourname@hotmail.co.uk';%20document.getElementsByName('passwd').item(0).value='yourpass';%20document.getElementsByName('SI').item(0).click();%20void(0);
Решение для автоматизации этого через браузер
Предложено пользователем574632. Это не единственное решение, но оно проще.
Я придумал два решения; один для использования с Internet Explorer, а другой для использования с Firefox. Оба решения работают с браузером для автоматизации этой задачи.
Решение 1- Internet Explorer и AutoIt
Как это и происходит, AutoIt очень хорошо автоматизирует функции IE. Прочитав аналогичный вопрос на справочном форуме AutoIt здесь, я нашел большую часть того, что мне было нужно. Я просто добавил поддержку параметров командной строки и вуаля. Вот код, написанный в AutoIt:
#include <IE.au3>
Opt("WinTitleMatchMode", 2)
$oIE = _IECreate ("http://login.live.com/login.srf?wa=wsignin1.0&rpsnv=10&ct=1227208038&rver=5.5.4177.0&wp=MBI&wreply=http:%2F%2Fmail.live.com%2Fdefault.aspx%3Fn%3D1521319951&id=64855")
_IELoadWait ($oIE)
$o_form = _IEFormGetObjByName ($oIE, "f1")
$o_login = _IEFormElementGetObjByName ($o_form, "login")
$o_password = _IEFormElementGetObjByName ($o_form, "passwd")
$o_signin = _IEFormElementGetObjByName ($o_form, "SI")
$username = $CmdLine[1] ; "YOUR_HOTMAIL_ADDRESS@hotmail.com"
$password = $CmdLine[2] ;"YOUR_PASSWORD"
_IEFormElementCheckBoxSelect ( $o_form, "remMe", "", 0)
_IEFormElementSetValue ($o_login, $username)
_IEFormElementSetValue ($o_password, $password)
_IEAction ($o_signin, "click")
WinSetState ( "Internet", "", @SW_MAXIMIZE )
Обратите внимание, что это не было написано мной, я только изменил его, чтобы принимать параметры командной строки.
После компиляции используется: Executable.exe "EmailAddress@hotmail.com" "Password"
Решение 2- Firefox и iMacros
Установите iMacros здесь: https://addons.mozilla.org/en-US/firefox/addon/imacros-for-firefox/
Откройте iMacros и создайте марку
Вставьте следующий скрипт, заменив адрес электронной почты и пароль своим:
VERSION BUILD=8601111 RECORDER=FX
TAB T=1
URL GOTO=https://login.live.com/ppsecure/post.srf?wa=wsignin1.0&rpsnv=12&ct=1391468097&rver=6.4.6456.0&wp=MBI&wreply=http:%2F%2Fmail.live.com%2Fdefault.aspx&lc=1033&id=64855&mkt=en-us&cbcxt=mai&snsc=1&bk=1391468099&uaid=9d4d29da2c304ed581e61d3fc51be1eb
TAG POS=1 TYPE=DIV ATTR=ID:idDiv_PWD_UsernameExample
TAG POS=1 TYPE=INPUT:EMAIL FORM=NAME:f1 ATTR=ID:i0116 CONTENT=EMAILADDRESS@hotmail.com
SET !ENCRYPTION NO
TAG POS=1 TYPE=INPUT:PASSWORD FORM=NAME:f1 ATTR=ID:i0118 CONTENT=PASSWORD
TAG POS=1 TYPE=INPUT:SUBMIT FORM=NAME:f1 ATTR=ID:idSIButton9
Затем назовите макрос как "HotmailLogin.iim"
Все, что вам нужно сделать, чтобы использовать его, это создать ярлык с параметрами командной строки, например:
"C:\Program Files (x86)\Mozilla Firefox\firefox.exe" imacros://run/?m=HotmailLogon.iim
Это невозможно, если ваш браузер не посетит страницу входа в hotmail.com по разным причинам:
- Вы не можете использовать PHP для этого, так как PHP полностью серверный, и вход на сервер абсолютно не влияет на вас (клиента). Это будет вход в систему, а не вы.
- Вы также не можете использовать javascript для установки любого типа cookie / сеанса для hotmail.com из другого домена (не hotmail.com) из-за мер безопасности, которые гарантируют, что вы не можете установить cookie для домена A со страницы на домене B.
- Выполнение запроса POST из другого домена также не разрешено протоколом HTTP, поэтому здесь тоже нет. Ваш браузер заблокирует любой запрос POST со страницы на A.com, пытающейся опубликовать на сервере B.com
- Hotmail вынуждает вас сначала перейти на их страницу входа в систему, чтобы получить специальный файл cookie с идентификатором сессии. Только если этот специальный идентификатор сеанса будет отправлен обратно с запросом POST, hotmail разрешит выполнение запроса. Таким образом, вы все равно должны сначала получить sessionID.
Итак, вкратце: нет.