背景

别人可以不用Google搜索,但是程序员必须得用。编程上无论是什么问题,Google总能以令人惊叹的准确率在前几条搜索结果中为你找到答案,这是其他的搜索引擎做不到的。但是由于众所周知的原因,哪怕是搜索"HRESULT"这种完全不敏感的关键字-你的浏览器也有可能会显示“链接被重置”,或者在搜索结果出来之后,点击某个结果却显示“链接被重置”。

这时候别人可以选择等待,但是对程序员来说,时间太宝贵了。这篇文章介绍在搜索结果已经出来,但链接却点击不开的情况下(也就是上段中标蓝的那一种现象),如何快速地打开链接。我希望有一天我们的后辈程序员将以为"链接被重置"只是个传说。

分析被重置的链接的URL

Google的搜索结果的链接地址中包含有"google"字样。比如,搜索"HResult",搜索到的其中一条结果(MSDN的 Exception.HResult Property)的链接地址为

http://www.google.com/url?sa=t&source=web&cd=4&sqi=2&ved=0CD8QFjAD&url=http%3A%2F%2Fmsdn.microsoft.com%2Fen-us%2Flibrary%2Fsystem.exception.hresult(v%3Dvs.71).aspx&ei=llQsTs3lCa6CmQW92IC6Dw&usg=AFQjCNEGSQWIyUKTk6SAG3TgWVesfWCN_g

由于这个地址中-我们暂且称其为(Google url)有"google", 所以“链接被重置”。

从这个google url中是可以提取出原始页面的地址的,也即http://msdn.microsoft.com/en-us/library/system.exception.hresult(v=vs.71).aspx;如果在浏览器中直接输入这个原始页面的地址,那么链接是不会被重置的。

原始页面的地址在Google url中以"&url="开始,到下一个"&"符号("&"符号在url中用来分隔参数)结束。其中包含一些转义符号,如用"%2F"表示'/',用"%3A"表示':', 更多的转义规则请参见Wikipedia:URL percent encoding。那么,要打开被重置的链接,只要取得链接的Google url, 取出"&url="和下一个"&"符号之间的字符串,并还原转义字符就可以得到原始的地址,将原始的地址用一个新窗口打开就可以了。

快速地打开

为了符合用户的使用习惯,最好将打开被重置链接的操作做到鼠标右键菜单中。如下图所示,

IE提供的一个功能是允许用户通过修改注册表的方式添加自定义的右键菜单项,同时指定点击该菜单项时运行的程序或脚本。

一下介绍添加这个右键菜单项的两个步骤。

步骤

1. 修改注册表,生成"GoogleURL"菜单项。(更详细的步骤请参加Adding Entries to the Standard Context Menu)

a. 打开注册表项HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\MenuExt\

b. 新建一个子项GoogleURL (或者你喜欢的别的名称, 下图中的&GoogleURL设定G键为快捷键)

c. GoogleURL的(Default)值设为执行脚本的路径,我将其设为"H:\GoogleURL.htm"

d. 给GoogleURL添加一个类型为REG_DWORD的值,名称为Contexts,并将其值设为0x20 (十进制为32),这个值表示右键点击页面的控件时(如hyperlink)时GoogleURL这一项会在右键菜单中出现。

2. 编辑执行脚本(即步骤1中的H:\GoogleURL.htm)

a. 打开notepad.exe

b. 输入如下javascript脚本

c. 将脚本保存至H:\GoogleURL.htm

< script language = " JavaScript " >
   var  parentwin  =  external.menuArguments;
   var  doc  =  parentwin.document;
  
  //get the "Google url" of the blocked hyperlink
   var  str  =   new  String(doc.activeElement.href);
  
   if ( 0   <  str.length)
  {
     var  originalurl  =  str;
    
     // get the original URL, which is between "&url=" and the next ocurrance of '&'
     var  nStart  =  str.indexOf( " &url= " );
     var  nEnd  =  str.indexOf( ' & ' , nStart  +   5 );
     if  (nStart  !=   - 1   &&  nEnd  !=   - 1 ) 
    {
        originalurl  =  str.substring(nStart  +   5 , nEnd);
    }
    
     // Deal with the Percent-encoding characters, 
     // Note that 'g' is required in order to perform global replacing- an annoying 'feature' of javascript
    originalurl  =  originalurl.replace( / %3A / g,  ' : ' ).replace( / %2F / g,  ' / ' ); 
    
    //Open "clean" url in a new window
    window.open(originalurl,  " _blank " );      
  }
< / script>

值得一提的

这是我第一次写javascript,所以有经验的读者请指出其中的错误,或者能给我提供更正后的代码,我会更新。

另外在处理URL转义字符时,我只处理了':'和'/',但是其他的字符也是有可能用百分号来表示的,只是我还没有遇到。

转载于:https://www.cnblogs.com/top5/archive/2011/07/26/2116729.html

当GOOGLE搜索结果的链接无法打开时相关推荐

  1. Google搜索时如何在新标签页打开搜索结果

    Google首页右下角设置–>搜索设置–>勾选 在新的浏览器窗口中打开所选的每条搜索结果 这样在Google搜索后的链接直接点击就是在新标签页打开了

  2. 如何更流畅地使用 Google 搜索?

    使用Google的https搜索的时候,我们会发现搜索结果虽然可以显示,但是有时候结果的链接却无法打开.这里的原因是因为Google的https的搜索结果链接往往使用的是http的方式打开,因此有时候 ...

  3. GOOGLE搜索秘籍

    将IE的默认搜索引擎改为GOOGLE 直接对下述注册表值进行修改即可. [HKEY_CURRENT_USER/Software/Microsoft/Internet Explorer/Main] &q ...

  4. GOOGLE搜索高级技巧大集合

    一,GOOGLE简介 Google(www.google.com)是一个搜索引擎,由两个斯坦福大学博士生Larry Page与Sergey Brin于1998年9月发明,Google Inc. 于19 ...

  5. GOOGLE搜索从入门到精通v3.0 from:http://www.being.org.cn/tool/google.htm

    GOOGLE搜索从入门到精通v3.0 原文:http://www.lasg.ac.cn/docs/googlebook.html 作者:donquix 内容 1,前言 2,摘要 3,如何使用本文 4, ...

  6. [推荐]GOOGLE搜索从入门到精通v3.0

    作者:donquix (donquix@sina.com) ------------------------------ 内容 1,前言 2,摘要 3,如何使用本文 4,GOOGLE简介 5,搜索入门 ...

  7. GOOGLE搜索从入门到精通v3.0

    内容 1,前言 2,摘要 3,如何使用本文 4,GOOGLE简介 5,搜索入门 6,初阶搜索 6.1,搜索结果要求包含两个及两个以上关键字 6.2,搜索结果要求不包含某些特定信息 6.3,搜索结果至少 ...

  8. GOOGLE搜索秘籍完全公开

    一,GOOGLE简介Google(www.google.com)是一个搜索引擎,由两个斯坦福大学博士生Larry Page与Sergey Brin于1998年9月发明,Google Inc. 于199 ...

  9. GOOGLE搜索攻略

    一.GOOGLE简介 Googlwww.google.com)是一个搜索引擎,由两个斯坦福大学博士生Larry Page与Sergey Brin于1998年9月发明,Google Inc. 于1999 ...

最新文章

  1. [译] React Native vs. Cordova、PhoneGap、Ionic,等等
  2. 查看/修改Linux时区和时间
  3. 批处理 设置电脑最佳性能_批处理最佳做法
  4. 第六十二期:腾讯云发布“小程序·云开发十大优秀实践”:猫眼、唯品会等入选
  5. sql md5函数_【学习笔记】常见漏洞:SQL注入的利用与防御
  6. 多所高校通知:暂缓返校
  7. python字符串只留数字_Python数字和字符串(5/30)
  8. 收到手机第二天就自燃?S10机主怒告三星 要求道歉并索赔1元
  9. Spring 3.0 发布候选版 3 已经可用!
  10. 新版本chrome浏览器带来的跨域请求cookie丢失问题
  11. 【渝粤教育】电大中专建筑施工组织 (2)作业 题库
  12. 推荐系统 | 信息过载的大数据时代,大数据推荐系统如何搭建,趋势何方
  13. 89C52定时/计数器
  14. win10自带看图工具找不到了咋办
  15. [幽默网文]2009高考作文语录
  16. 软件测试的定义是什么?
  17. 页面向左移动动画html,jQuery仿左右窗帘拉开页面动画特效
  18. 【HTML5】网页实用技巧3:将方形图片设置成圆形后,添加圆形虚线边框
  19. 评价类模型---TOPSIS法
  20. SQL Server 日志文件查看器提示超时连接

热门文章

  1. 【图像分类损失】Encouraging Loss:一个反直觉的分类损失
  2. MVC学习七:Razor布局之加载分部视图【PartialView】
  3. grep命令 linux
  4. hook:实现简单的键盘记录器
  5. Quorum?Quorum!
  6. 生成验证码_JSP源代码
  7. Vs-code 必备插件
  8. daas 数据即服务_什么是daas
  9. 【入门篇】一、什么是单片机
  10. IT人的5G网络架构视点:从网络架构演进的前世今生详解5G各NF网络功能体