厌倦了 Hotmail?






4.78/5 (62投票s)
2004年3月12日
3分钟阅读

152358

1015
一种解决办法,可以绕过点击 Hotmail 邮件中链接时出现的“您的电子邮件消息已闲置”错误提示,该链接已被显示超过五分钟。
引言
这个想法的产生是因为我对 Hotmail 的标准行为感到厌倦。
每个月我都会收到来自 CodeProject 的新闻邮件。 这些电子邮件很长,包含几个链接。 我使用浏览器中的 Hotmail 阅读它们。 当我点击一个链接时,我会研究这篇文章一段时间(5 分钟),然后关闭窗口。 现在我想阅读新闻邮件中的下一个链接,但 Hotmail 给我弹出一个窗口,如上所述,提示“此链接已失效”。
这是错误的,该链接是有效的。 CodeProject 并没有删除它。 你可以通过点击浏览器的刷新按钮来解决这个问题,但这非常烦人! 你无法回避 Hotmail 用指向他们服务器的 URL 替换邮件中原始链接的事实,该 URL 将原始链接作为参数。 这表明 Hotmail 正在记录你访问了哪些链接!!!
这对我来说是 Freakin' 间谍软件行为!!!
黑客技术
我四处寻找扩展 Internet Explorer 功能的方法,我找到了这篇文章,描述了如何控制上下文菜单。 可以通过在注册表中放置条目并将这些条目链接到执行脚本的 URL,将项目添加到WebBrowser 控件的现有上下文菜单中。
要将项目添加到标准WebBrowser 控件的上下文菜单中,请创建或打开以下键
HKEY_CURRENT_USER
Software
Microsoft
Internet Explorer
MenuExt
在此键下,创建一个键,其名称包含你希望在菜单中显示的文本。 此键的默认值包含将要执行的 URL。 键名可以包含和号 (&) 字符,这将导致和号 (&) 后面的字符加下划线
以下注册表项将一个标题为“打开 Hotmail 链接”的项目添加到WebBrowser 控件的上下文菜单中,并执行包含在文件c:\hotmail.js
中的内联脚本。
HKEY_CURRENT_USER
Software
Microsoft
Internet Explorer
MenuExt
Open Hotmail Link = "file:///c:/hotmail.js"
Contexts = dword:0x20
“Contexts”DWORD
值指定项目将出现的上下文菜单。 在这种情况下,0x20 对应于CONTEXT_MENU_ANCHOR
,只有当你右键单击超链接时,菜单项才会可见。
现在我们有一种方法可以通过右键单击 Hotmail 邮件中的超链接来调用 JavaScript 文件。 让我们考虑一下超链接的格式,并使用 JavaScript 重新构建它。
"javascript:OpenWin('http://64.4.18.250:80/cgi-bin/linkrd?
_lang=EN&lah=f785aa457196eab7084467d483648024&lat=1098364221
&hm___action=http%253a%252f%252fwww%252ecodeproject
%252ecom%252fjscript%252fhotmailworkaround%252easp
%253fmsg%253d953418%2523xx953418xx');"
上面的前三行是由 Hotmail 添加的,与我们无关。 然而,第四行包含一个名为hm___action
的参数,该参数设置为发送电子邮件的人或机器所希望的链接值。
首先,我们获取点击的链接。
//Obtain the hyperlink clicked
var oSource = external.menuArguments.event.srcElement
var str = new String(oSource.href);
现在,将扫描该链接,以查找字符串“hm___action=”的第一次出现。
//find the index of "hm___action=" in string
var i = str.indexOf("hm___action=", 0);
//if "hm___action=" was found then ...
if (i != -1)
{
//Cut away stuff added by hotmail
str = str.substring(i + 12, str.length-3);
...
}
indexOf
方法查找字符串“hm___action=”在str
内的位置,并告诉你子字符串的起始位置。 如果该字符串不包含子字符串,indexOf 将返回 -1。 然后索引i
增加 12,这是字符串“hm___action=”中的字符数。 由于感兴趣的数据位于i
和字符串的结尾之间,除了最后三个字符,str.length-3
,所以简单地调用substring
方法来提取它。
在我们的例子中,str
的值现在是。
"http%253a%252f%252fwww%252ecodeproject%252ecom%252f
jscript%252fhotmailworkaround%252easp
%253fmsg%253d953418%2523xx953418xx"
原始链接已进行 URL 编码,因此让我们对其进行 URL 解码。
str = unescape(str);
在执行此操作后,链接现在恢复到 Hotmail 篡改之前的原始状态,我们所要做的就是在新浏览器窗口中打开它
open(str);
现在你可以在任何链接上调用 JavaScript,而不仅仅是 Hotmail 链接,但它只有在找到参数hm___action
的情况下才能发挥作用。Install
在顶部的下载内容中,你将收到一个包含两个文件的 zip 压缩包。
- hotmail.js
- hotmail.reg
hotmail.js 应该放在 C: 目录中。 hotmail.reg 应该运行以将正确的键和值添加到注册表中。 在尝试该黑客技术之前,请不要忘记关闭所有浏览器窗口。 我希望它能有所帮助。 我知道这个问题困扰着我。