【已解决】在用google搜索出来的链接无法打开的情况下,如何找到该链接的真实地址

【问题】

由于众所周知的原因,虽然google可以在国内使用。但是使用的是google的hk的链接,很不稳定。

时不时的就被党给屏蔽了,就不可用了。

这导致经常出现这样的情况:

用google搜索出来所需的技术帖子后,但是再点击某帖子的链接,此链接,一点用鼠标点击后,就从原始链接,变为google的链接了,就类似于这样的:

http://www.google.com.hk/url?sa=t&rct=j&q=Samsung+Nand+Flash+Code+Information&source=web&cd=2&ved=0CFkQFjAB&url=http%3A%2F%2Fwww.samsung.com%2Fglobal%2Fbusiness%2Fsemiconductor%2Fhtml%2Fcommon%2Ffile%2Fsupport%2Fpart_number_decoder%2FNand_Flash.pdf&ei=CBgiUKiqK8PZrQfU3IC4Ag&usg=AFQjCNGyQb8oO95wu_4dLvH1v_Hif0aRSA

结果由于google链接被重置,所以就打不开了。

但是有时候,其实本身该链接,是有效的,是可以正常打开的。

所以,此时就希望,在这种情况下,找到该帖子的真实地址。

其中,关于帖子的真实完整地址:

1. 如果本身帖子完整地址很短,那么是可以完整显示出来的,比如:

shot url can show all

2. 在点击该帖子之前,其实通过鼠标移动到该帖子上面,是可以显示帖子的完整的,原始的地址的,比如:

mouse over can show link

但是当你点击(不论左键点击,还是右键点击)后,就变成google的地址了:

clicked change to google link

所以,当该网址如果本身可以打开,但是此时google被重置,就导致你无法找到有效的链接,无法打开本可以打开的原始的链接。

所以,才需要去找到帖子的原始地址的。

【解决过程】

1.之前折腾Python的时候,知道了Python中有个urllib.quote和urllib.unquote的相关函数,就是用来将url编码的。

而此处,注意到google类型的地址:

http://www.google.com.hk/url?sa=t&rct=j&q=Samsung+Nand+Flash+Code+Information&source=web&cd=2&ved=0CFkQFjAB&url=http%3A%2F%2Fwww.samsung.com%2Fglobal%2Fbusiness%2Fsemiconductor%2Fhtml%2Fcommon%2Ffile%2Fsupport%2Fpart_number_decoder%2FNand_Flash.pdf&ei=CBgiUKiqK8PZrQfU3IC4Ag&usg=AFQjCNGyQb8oO95wu_4dLvH1v_Hif0aRSA

其中就包含有url=xxx其中xxx是被编码后的原始帖子的地址。

所以,就想到了,可以利用python的unquote函数去解码此url地址,就可以获得对应的帖子的原始地址了。

2.打开Python的IDLE(Python GUI):

Python IDLE

然后输入import urllib后,再使用urllib.unquote,即可把对应的url解码出来:

urllib unquote url

解码出来的结果为:

‘http://www.google.com.hk/url?sa=t&rct=j&q=Samsung+Nand+Flash+Code+Information&source=web&cd=2&ved=0CFkQFjAB&url=http://www.samsung.com/global/business/semiconductor/html/common/file/support/part_number_decoder/Nand_Flash.pdf&ei=CBgiUKiqK8PZrQfU3IC4Ag&usg=AFQjCNGyQb8oO95wu_4dLvH1v_Hif0aRSA’

其中,可以找到对应的url=xxx的内容为:

http://www.samsung.com/global/business/semiconductor/html/common/file/support/part_number_decoder/Nand_Flash.pdf

如此就可以找到真正的,完整的,原始链接了。

【总结】

Python还是很强大,很好用的。

只是对于普通使用者来说,这种用法,稍显繁琐。

等有空,再去弄个html页面,帮助实现这种从google链接,转换,提取出真正的帖子的链接。

【后记】

后来,一直是通过Notepad++中jN插件,使用js脚本,实现了此功能:

从google地址中,获得源地址:

【记录】利用Notepad++的jN插件中的URL编码解码插件,实现从错误的google地址中提取原始url的功能

暂时用的还是不错的。

至少不用麻烦的打开Python了。

而Notepad++,则一直是打开的,所以用起来也算方便。

当然,其实最好的是,有好用的插件,能支持多种浏览器,如IE9,Firefox等,能检测到错误,自动跳转到原始url中。

目前,我所知道的,360安全浏览器,已经实现了此功能了。期待类似的插件的诞生。或者有空自己去折腾出来。。。


【后记 2014-04-09】

1.后来,又遇到类似问题。

然后花了点时间,整理了一下,改进Python脚本为:

>>> import re
>>> import urllib
>>> urllib.unquote("www.google.com.hk/url?sa=t&rct=j&q=&esrc=s&source=web&cd=2&ved=0CDAQFjAB&url=%68%74%74%70%3a%2f%2f%73%74%61%63%6b%6f%76%65%72%66%6c%6f%77%2e%63%6f%6d%2f%71%75%65%73%74%69%6f%6e%73%2f%38%30%33%35%31%30%37%2f%68%6f%77%2d%74%6f%2d%73%65%74%2d%63%75%72%73%6f%72%2d%70%6f%73%69%74%69%6f%6e%2d%69%6e%2d%65%64%69%74%74%65%78%74&ei=RONEU9a0Es7HkQXJnIGICg&usg=AFQjCNH6yOVmkGi2bQ-0k1_rvEd0mzjb8Q&bvm=bv.64507335,d.dGI")
'www.google.com.hk/url?sa=t&rct=j&q=&esrc=s&source=web&cd=2&ved=0CDAQFjAB&url=http://stackoverflow.com/questions/8035107/how-to-set-cursor-position-in-edittext&ei=RONEU9a0Es7HkQXJnIGICg&usg=AFQjCNH6yOVmkGi2bQ-0k1_rvEd0mzjb8Q&bvm=bv.64507335,d.dGI'
>>> re.sub(r".+&url=(?P<url>.+?)&.+", r"\g<url>", urllib.unquote("www.google.com.hk/url?sa=t&rct=j&q=&esrc=s&source=web&cd=2&ved=0CDAQFjAB&url=%68%74%74%70%3a%2f%2f%73%74%61%63%6b%6f%76%65%72%66%6c%6f%77%2e%63%6f%6d%2f%71%75%65%73%74%69%6f%6e%73%2f%38%30%33%35%31%30%37%2f%68%6f%77%2d%74%6f%2d%73%65%74%2d%63%75%72%73%6f%72%2d%70%6f%73%69%74%69%6f%6e%2d%69%6e%2d%65%64%69%74%74%65%78%74&ei=RONEU9a0Es7HkQXJnIGICg&usg=AFQjCNH6yOVmkGi2bQ-0k1_rvEd0mzjb8Q&bvm=bv.64507335,d.dGI"))
'http://stackoverflow.com/questions/8035107/how-to-set-cursor-position-in-edittext'
>>> 

如图:

python re and urllib to process got pure original url

这样就可以:

在拿到原始的,被google处理后的url,直接就可以得到已经unquote并处理后的,原始纯的url了。

总结为:

通过:

import re
import urllib
re.sub(r".+&url=(?P<url>.+?)&.+", r"\g<url>", urllib.unquote("谷歌的地址"))

即可得到纯净的原始地址。

比如从:

www.google.com.hk/url?sa=t&rct=j&q=&esrc=s&source=web&cd=2&ved=0CDAQFjAB&url=%68%74%74%70%3a%2f%2f%73%74%61%63%6b%6f%76%65%72%66%6c%6f%77%2e%63%6f%6d%2f%71%75%65%73%74%69%6f%6e%73%2f%38%30%33%35%31%30%37%2f%68%6f%77%2d%74%6f%2d%73%65%74%2d%63%75%72%73%6f%72%2d%70%6f%73%69%74%69%6f%6e%2d%69%6e%2d%65%64%69%74%74%65%78%74&ei=RONEU9a0Es7HkQXJnIGICg&usg=AFQjCNH6yOVmkGi2bQ-0k1_rvEd0mzjb8Q&bvm=bv.64507335,d.dGI

可以得到:

http://stackoverflow.com/questions/8035107/how-to-set-cursor-position-in-edittext

这样以后就无需借助其他Notepad++等脚本了。



9 Thoughts on “【已解决】在用google搜索出来的链接无法打开的情况下,如何找到该链接的真实地址

  1. Pingback: 如何在Windows下开发Python | Handhoop

  2. 右键->在新标签页中打开

    • 你说的这个,凡是用过浏览器的,都会想到的。
      所以,很明显,我也尝试过,没用的。
      因为当搜出来的链接,变成google前缀的地址时,不论是直接点击还是右键选择“在新标签页中打开”都是无济于事的。

      当然,当:
      (1)偶尔遇到,google搜出来的地址,没有被google处理,而是原先的地址时,
      (2)在google地址本身可以正常打开的时候,
      不论直接点击还是右键选择“在新标签页中打开”,也都是可以正常打开的。

  3. 添加一个书签,名为“clear”,内容如下,
    javascript: var h3 = document.getElementById(‘res’).getElementsByTagName(‘h3’); for(var i = 0, l = h3.length; i < l; i++){ h3[i].getElementsByTagName('a')[0].onmousedown = ''; }; void(0);

    每次出现搜索结果后(先不要点击搜索结果),点击“clear”书签,然后就可以点击搜索结果了

    • 1.好像你所说的“书签”,是单独针对Firefox的吧?
      至少IE9中没有。。。
      2.也去尝试了,在Firefox中添加书签,但是无法添加“内容”,只能添加页面地址。所以,无法使用你的办法。

  4. lishengck@tom.com on 2012 年 10 月 24 日 at 上午 11:24 said:

    我最近也碰到这个情况。但奇怪的是,我在同一个内网中的另一台电脑上网,则没有这个情况,链接和以前一样是正常的,不会改变成这样。

    • 咦,那很奇怪。
      我之前用过的很多系统,都是会出现此问题的。
      唯一一次,看到google中的链接,没有被google处理,仍是原始地址的时候,是在刚刚用google搜索出来的结果之后,在点击某个链接之前,鼠标移动上去,左下角显示出来的地址,是原始地址,一旦鼠标点击了链接,则链接地址就变成被google处理后的那种了。

      另外,对于360浏览器,后来的版本中,默认已集成类似纠正功能,即发现google搜出来的地址打不开,会自动跳转到,分析出来的原始地址中去。

      所以,我很好奇,不知道你那个电脑是如何做到始终显示出来原始地址的。

      可否具体说说,你的那台电脑所用的操作系统,何种浏览器,什么版本?

    • 后来试了试,某些情况下,登陆googl.hk的时候,好像遇到的情况是点击出来的搜索结果,都是直链的。但是只是有时候会出现。。。多数情况,还是会被google处理的。。。

发表评论

电子邮件地址不会被公开。 必填项已用*标注

无觅相关文章插件,快速提升流量