谷歌自定义搜索结果通过代理显示错误
Google Custom Search results display wrong through a proxy
学院B订阅了网站a,他们通过内部代理访问该网站,该代理会更改所有页面的URL以适应通过代理的重定向。
例如,网站A上的关于我们的页面通常看起来是这样的:
website-a.com/about/us
如果你通过学院B的代理连接查看页面,链接将是:
website-a.proxy-b.com/about/us
重写是在代理上完成的,网站A无法控制它。
这并不罕见,所以我希望我所看到的问题是一个简单的解决方案:
网站A使用谷歌自定义搜索引擎。。。搜索在代理完成URL重写后运行,并且动态搜索结果将返回未经重写的URL。。。因此,如果代理用户跟随一个,他们会直接返回到我们的网站,并失去在代理下的任何访问权限。
(为了简化起见,请假设我正在寻找一个由网站a实现的解决方案,而代理B不是由任何可以更改任何内容以使该查找在学院一侧发生的人管理的)
我正在考虑在使用javascript从谷歌返回结果后重写URLS。。。但从代码来看,我预见到了一些严重的问题。
有人设法绕过了这一点吗?或者有没有一个简单的CSE技巧可以随时重写目标URL?
找到了一个解决方案:
function fixProxyLinks(){
proxy_rex = new RegExp( document.location.host, "gi");
orig_rex = new RegExp( "/www.mysite.com/", "gi");
//Check if current server is DIFFERENT from bg.com
if( document.location.host.search( orig_rex ) == -1 ){
$('.gsc-results a').each( function(){
// Find all the fresh new search results and correct them for the sake of the Proxy
if( this.href.search( proxy_rex ) == -1 && this.href.search( bg_rex ) >= 0 ){
this.href = this.href.replace( orig_rex, '/'+document.location.host+'/' );
$(this).attr("data-cturl", this.href);
$(this).attr("data-ctorig", this.href);
}
});
}
}
然后你把这个放在你构建CSE对象的地方:customSearchControl.setSearchCompleteCallback(this, fixProxyLinks);
注意:关于数据ctrl和data ctorig属性:
CSE功能的一部分是重写要通过谷歌重定向的url以进行跟踪,数据turl是它将在单击时重写href的url。不幸的是,你必须完全替换谷歌重定向,并将重定向目标设置为相同的代理url,否则谷歌会注意到并警告你正在被重定向。用户单击后,CSE会将href写回数据ctorig中设置的值,因此您显然也希望进行匹配。
- 从桌面读取python文件时高亮显示代码
- 使用JS如何动态更改显示的html文件中的文本背景颜色
- 如何在生成下载文件时显示加载动画
- React重新渲染但未显示正确的组件
- nodejs-expressjs上传图像并显示它们
- 使用JSP从服务器检索和显示图像
- 音频控件在mouseover上显示,在mouseout上淡出
- 让文本输入幻灯片显示输入时的新文本输入?然后向后滑动
- 使用电话间隙在Android应用程序中显示SQL Lite的数据
- 显示5秒后隐藏潜水
- 画廊图像未显示
- 不显示带有本地json文件数据的谷歌地图脚本
- 如何将json数据显示为html
- 谷歌地图不是以HTML显示,而是在JS Fiddle上工作
- Windows8应用程序(html&Javascript):从图片库(除了文件选择器)显示图像的另一种方式
- 由于本地存储代理,Extjs网格面板最多显示25行.如何更改此限制值
- HTML - 如何在不同的用户代理中显示不同的图像
- 谷歌自定义搜索结果通过代理显示错误
- Java代理显示动态生成的图形
- Chrome用户代理不显示脚本- CSS修复