Javascript 如何通过脚本将我的登录凭据发送到Hotmail?
我想制作一个脚本,将我的用户名和密码发送到hotmail,这样我就可以不用通过登录页面登录。出于各种原因,我不想使用“自动登录”选项。我查看了源代码,试图了解Hotmail是如何将凭据发送到服务器进行验证的,但我无法从源代码中看出正误。感谢您的帮助Javascript 如何通过脚本将我的登录凭据发送到Hotmail?,javascript,php,json,credentials,hotmail,Javascript,Php,Json,Credentials,Hotmail,我想制作一个脚本,将我的用户名和密码发送到hotmail,这样我就可以不用通过登录页面登录。出于各种原因,我不想使用“自动登录”选项。我查看了源代码,试图了解Hotmail是如何将凭据发送到服务器进行验证的,但我无法从源代码中看出正误。感谢您的帮助 我读了一篇文章,问了一些非常相似的问题,但目的不同——尽管给出的答案不是我想要的。如果您的浏览器没有实际访问hotmail.com登录页面,这是不可能的,原因有很多: 您不能使用PHP来实现这一点,因为PHP完全是服务器端的,登录服务器对您(客户端)
我读了一篇文章,问了一些非常相似的问题,但目的不同——尽管给出的答案不是我想要的。如果您的浏览器没有实际访问hotmail.com登录页面,这是不可能的,原因有很多:
简言之:没有。通过浏览器实现自动化的解决方案 由用户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 )
然后将宏命名为“HotmailLogin.iim”
要使用它,只需使用以下命令行参数创建快捷方式:
“C:\ProgramFiles(x86)\Mozilla Firefox\Firefox.exe”imacros://run/?m=HotmailLogon.iim
使用firefox,我只创建了一个名为hm的书签
在“位置”框中,粘贴以下代码,
当我加载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);
你应该以登录请求的方式询问hotmail接受了什么,而不是一开始就希望它能起作用。我还以为hotmal被发送到了永恒的webmail字段。我以为现在的MS正在维护live.com没有Hotmail API,所以简短的回答是没有。更详细的回答是,你可以创建一个应用程序来实现这一点,但是,我认为这将违反他们的许多协议,因为此时您正在使用第三方工具访问他们的系统。但是,您可以制作一个页面,通过按下按钮向hotmail服务器发出POST请求,在那里发送您的密码和用户名,从而启动登录过程。但是你为什么要这样?我相信这个答案还需要更多的研究。我想说Hotmail只接受来自其自己的服务器或域的post请求是不准确的,因为如果没有来自浏览器的post请求,您的计算机如何向Hotmail发送登录所需的凭据?如果你能改进你的答案,或者能提供更多的信息,我会支持你的答案。为什么不准确?浏览器向服务器发出请求,然后显示结果。生成的页面(来自hotmail.com域)可以包含一个表单,该表单在提交时会向同一域(hotmail.com)发出另一个POST请求。它不能向其他服务器(如google.com)发出POST请求,除非所涉及的页面实际上来自google.com。这是由浏览器处理的。除此之外,Hotmail还提供了大量保护,以确保您首先访问他们的登录页面(他们在其中设置了会话cookie),并且通过将会话ID发送回,他们将允许继续登录。@Klik这更好吗?是的,这是更好的描述。就我个人而言,我不喜欢回答说有些事情是不可能的,因为任何事情在技术上都是可能的,尽管这种方法可能很困难。根据您自己的描述,您需要首先获取sessionID,这可以通过模拟浏览器来完成。这超出了我的能力,但这是可能的。
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);