【背景】
在win x64+IE9下,常用google搜帖子,尤其是技术帖子,但是由于瓷器国全身都是G点,导致经常在点击用google搜索到的帖子时:
却又打不开了:
注意,此时地址是:
但是实际上,通过python可以解析出该网页原始地址:
得到该网页的原始地址:
而该地址,此时本身是可以打开的:
之所以错误,是由于是google当时被屏蔽了所导致的。
而对于此问题,遇到的频率太高,导致经常需要查询资料,却又打不开相应的网页资料,很是郁闷。
对于此问题的解决,其实本身很简单,就是找到google搜索出来的东西的原始地址即可,对此,百度搜索本身就是给出的原始地址,赞一个。
而google搜出来的东西,第一瞬间,也是显示的帖子的原始地址,但是当你鼠标(左键或右键)点击该链接时,其自动变成上面的那种google开头的地址了,所以当google被屏蔽而该网页本身没问题时,网页就打不开了。
所以,目前除了利用python等工具去unquote之外,没有更简单的方法,找到帖子的原始地址。
需要提示一句的是,如果本身使用360浏览器的话,遇到此情况,现在最新版本的360会帮你自动跳转到对应的地址的。
如果本身在用google搜东西就出现网页无法显示,360浏览器还会给你另外的选择,使用百度还是有道重新搜索。
在这些细节方面360浏览器做的还是很不错的。
此处,只是不便于使用360浏览器,只能用IE9,所以,只能基于IE9,去找解决办法了。
所以,想到了,给IE9编写插件,实现此功能:
当用google搜索出来的帖子,点击出现网页无法显示的话,就自动解析出原始地址,然后redirect跳转到原始链接。
【给IE9编写插件AutoRedirectGoogleErrorUrl的过程】
1.从用C#写了个x64版IE9的BHO,实现了超级拖拽的效果。 -> 新版Microsoft All-In-One Code Framework发布下载 – 绑定第二版示例代码浏览器 知道了CSBrowserHelperObject,
然后找到官网的下载页面:
IE Browser Helper Object demo (CSBrowserHelperObject)
(还有个旧版本的:IE Browser Helper Object demo (CSBrowserHelperObject))
下载下来IE Browser Helper Object demo (CSBrowserHelperObject).zip
然后解压后,用VS 2010打开CSBrowserHelperObject.sln,进过转换后,就可以正常使用了:
2.直接编译运行该库,由于是library,所以是无法运行的。
然后再回去看其说明文档description.html,看看是如何使用的。
(1)打开Visual Studio x64 Win64 Command Prompt (2010):
赋值dll所在路径:
D:\tmp\tmp_dev_root\AutoRedirectGoogleErrorUrl\refer\IE Browser Helper Object demo (CSBrowserHelperObject)\C#\Debug
然后切换过去:
D:\tmp\tmp_dev_root\AutoRedirectGoogleErrorUrl\refer\IE Browser Helper Object demo (CSBrowserHelperObject)\C#\Debug>which ls 'which' is not recognized as an internal or external command, operable program or batch file. D:\tmp\tmp_dev_root\AutoRedirectGoogleErrorUrl\refer\IE Browser Helper Object demo (CSBrowserHelperObject)\C#\Debug>pwd /cygdrive/d/tmp/tmp_dev_root/AutoRedirectGoogleErrorUrl/refer/IE Browser Helper Object demo (CSBrowserHelperObject)/C#/Debug D:\tmp\tmp_dev_root\AutoRedirectGoogleErrorUrl\refer\IE Browser Helper Object demo (CSBrowserHelperObject)\C#\Debug>ls -l total 87 -rwxr-xr-x 1 CLi Administ 9728 Aug 27 15:35 CSBrowserHelperObject.dll -rw-r--r-- 1 CLi Administ 24064 Aug 27 15:35 CSBrowserHelperObject.pdb -rwxr-xr-x 1 CLi Administ 143360 Aug 27 15:35 Interop.SHDocVw.dll
然后去注册:
D:\tmp\tmp_dev_root\AutoRedirectGoogleErrorUrl\refer\IE Browser Helper Object demo (CSBrowserHelperObject)\C#\Debug>Regasm /? Microsoft (R) .NET Framework Assembly Registration Utility 4.0.30319.1 Copyright (C) Microsoft Corporation 1998-2004. All rights reserved. Syntax: RegAsm AssemblyName [Options] Options: /unregister Unregister types /tlb[:FileName] Export the assembly to the specified type library and register it /regfile[:FileName] Generate a reg file with the specified name instead of registering the types. This option cannot be used with the /u or /tlb options /codebase Set the code base in the registry /registered Only refer to already registered type libraries /asmpath:Directory Look for assembly references here /nologo Prevents RegAsm from displaying logo /silent Silent mode. Prevents displaying of success messages /verbose Displays extra information /? or /help Display this usage message D:\tmp\tmp_dev_root\AutoRedirectGoogleErrorUrl\refer\IE Browser Helper Object demo (CSBrowserHelperObject)\C#\Debug>Regasm CSBrowserHelperObject.dll /codebase Microsoft (R) .NET Framework Assembly Registration Utility 4.0.30319.1 Copyright (C) Microsoft Corporation 1998-2004. All rights reserved. Types registered successfully
3.去编译CSBrowserHelperObjectSetup(x64),但是最后却找不到exe,后来看到编译时的log是:
Time Elapsed 00:00:00.62 ------ Skipped Build: Project: CSBrowserHelperObjectSetup(x64), Configuration: Debug ------ Project not selected to build for this solution configuration ------ Skipped Build: Project: CSBrowserHelperObjectSetup(x86), Configuration: Debug ------ Project not selected to build for this solution configuration ========== Build: 1 succeeded or up-to-date, 0 failed, 2 skipped ==========
折腾了下,把两个setup的build都选上:
结果竟然出现“ERROR: An error occurred while validating. HRESULT = ‘80004005’ ”的错误,详细解决过程参考:
【未解决】VS 2010编译项目出错:ERROR: An error occurred while validating. HRESULT = ’80004005′
4.
转载请注明:在路上 » 【记录】为IE9编写一个插件AutoRedirectGoogleErrorUrl,用于对于,点击google搜索到的但点击时无法打开的地址,实现自动跳转到原始地址