前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >百度站长链接提交的js代码推送进化版

百度站长链接提交的js代码推送进化版

作者头像
沈唁
发布2018-05-24 13:26:05
2.2K0
发布2018-05-24 13:26:05
举报
文章被收录于专栏:沈唁志沈唁志

百度站长平台提供链接索引的自动提交 JS 脚本已经有一段时日了。用百度自己的话讲:JS 链接推送代码以网页为最小对象,服务于全平台多终端,PC 站和移动站均可使用。安装代码的页面在任意平台(浏览器、微信、微博)被加载时,页面链接会被第一时间推送给百度,从而提高站点新内容的发现速度。

原来的代码长这样:

//百度 JS 链接推送代码
(function(){
    var bp = document.createElement('script');
    var curProtocol = window.location.protocol.split(':')[0];
    if (curProtocol === 'https') {
        bp.src = 'https://zz.bdstatic.com/linksubmit/push.js';        
    }
    else {
        bp.src = 'http://push.zhanzhang.baidu.com/push.js';
    }
    var s = document.getElementsByTagName("script")[0];
    s.parentNode.insertBefore(bp, s);
})();

只要把这段代码放入你的每个页面中,每当用户访问这些页面时,就会通过这段脚本从百度下载一个 1×1 的 gif,同时记录页面此时此刻的 URL 地址。

改良版本的百度索引自动推送脚本

这个改良的脚本长下面这样,如果你对 js 一窍不通,那么请用一下代码替换原来百度官方的代码

//改良版本的百度索引自动推送脚本
	(function(){
		var canonicalURL, curProtocol;
		//Get the  tag
		var x=document.getElementsByTagName("link");
		//Find the last canonical URL
		if(x.length > 0){
			for (i=0;i<x.length;i++){
				if(x[i].rel.toLowerCase() == 'canonical' && x[i].href){
					canonicalURL=x[i].href;
				}
			}
		}
		//Get protocol
	    if (!canonicalURL){
	    	curProtocol = window.location.protocol.split(':')[0];
	    }
	    else{
	    	curProtocol = canonicalURL.split(':')[0];
	    }
	    //Get current URL if the canonical URL does not exist
	    if (!canonicalURL) canonicalURL = window.location.href;
	    //Assign script content. Replace current URL with the canonical URL
    	!function(){var e=/([http|https]:\/\/[a-zA-Z0-9\_\.]+\.baidu\.com)/gi,r=canonicalURL,t=document.referrer;if(!e.test(r)){var n=(String(curProtocol).toLowerCase() === 'https')?"https://sp0.baidu.com/9_Q4simg2RQJ8t7jm9iCKT-xh_/s.gif":"//api.share.baidu.com/s.gif";t?(n+="?r="+encodeURIComponent(document.referrer),r&&(n+="&l="+r)):r&&(n+="?l="+r);var i=new Image;i.src=n}}(window);})();

已加入了注释,下面开始代码解说。

  • 这个新脚本的作用是多了一步查看页面的 canonical URL 的步骤。我们知道canonical 属性表示该页面纵有千种 URL 的花样,请搜索引擎只认准 href 中给出的 URL 值。这样一来就不会让搜索引擎为了同一个页面(或许已经索引了)多次检查你的推送页面具体内容。
  • 这个新脚本的另一个更改是直接将上述两个 js 的内容拿了出来。由于这两个 js 中的代码其实是静态的,每次都去调用并不必要。另一方面,我们需要对 r 的值进行更改,将它更改为 canonical URL 的值,因此这样解决了我们上面的第二个问题。

最后,一点感想

自动推送是一个很实用的方法,它门槛低,容易部署,但是也有一些小问题。本文只是提供了一种方法来改进自动推送的效率和效果。

需要注意的是百度随时可能更新这两个 js 文件的内容,虽然该功能上线后一直没有更新不代表以后不会更新,因此需要手动及时更新代码。

沈唁志|一个PHPer的成长之路! 原创文章采用CC BY-NC-SA 4.0协议进行许可,转载请注明:转载自:百度站长链接提交的js代码推送进化版

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2017-10-17,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档