米扑科技旗下的多个产品,已经采用了JS代码主动推送网址链接给百度、360等搜索引擎收录。

本文,米扑博客将总结实现和改进的成果,分享给更多网站朋友和初创企业。

 

百度官网介绍:

自动推送是百度搜索资源平台为提高站点新增网页发现速度推出的工具,

安装自动推送JS代码的网页,在页面被访问时,页面URL将立即被推送给百度。

 

百度链接提交方式

1)主动推送(通过PHP、curl 等编程语言,米扑博客已实现

最为快速的提交方式,建议您将站点当天新产出链接立即通过此方式推送给百度,以保证新链接可以及时被百度收录。

 

2)sitemap(网站地图,如米扑博客 HTMLXML

您可以定期将网站链接放到Sitemap中,然后将Sitemap提交给百度。百度会周期性的抓取检查您提交的Sitemap,对其中的链接进行处理,但收录速度慢于主动推送。

 

3)手工提交(米扑博客偶尔会提交几条未收录的)

如果您不想通过程序提交,那么可以采用此种方式,手动将链接提交给百度。

 

4)自动推送(本文要介绍的JS代码)

是轻量级链接提交组件,将自动推送的JS代码放置在站点每一个页面源代码中,当页面被访问时,页面链接会自动推送给百度,有利于新页面更快被百度发现。

 

使用主动推送功能会达到怎样效果

及时发现:可以缩短百度爬虫发现您站点新链接的时间,使新发布的页面可以在第一时间被百度收录

保护原创:对于网站的最新原创内容,使用主动推送功能可以快速通知到百度,使内容可以在转发之前被百度发现

 

JS链接推送代码​之服务对象及原理:

JS链接推送代码以网页为最小对象,服务于全平台多终端,PC站和移动站均可使用。

安装代码的页面在任意平台(浏览器、微信、微博)被加载时,页面链接会被第一时间推送给百度,从而提高站点新内容的发现速度。

百度资源平台(原百度站长平台)提供JS脚本自动提交推送网址链接给百度收录。

百度官网链接提交 —> 自动提交 —> 自动推送 —> 平台工具使用帮助

百度提交网址链接的js代码

<script>
(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);
})();
</script>

只要把这段代码放入你的每个页面中,例如网页页脚footer.php

每当用户访问这些页面时,就会通过这段脚本从百度下载一个1x1的gif,同时记录页面此时此刻的URL地址。

通过这段脚本我们可以看出:

1、它先是判断了目前的协议类型是https还是其他类型(如,http,ftp等)

2、然后下载了百度官方的一个js文件

3、再然后它将js文件的内容生成一个脚本块插入到当前页面中

4、最后会运行这个脚本块

我们可以访问这两个js文件查看其内容,也就是短短的一行。它会读取这样一个gif。

https://sp0.baidu.com/9_Q4simg2RQJ8t7jm9iCKT-xh_/s.gif 或者http://api.share.baidu.com/s.gif

同时将window.location.href等信息推送给了百度。

这里我们可以发现两个问题:

  • 其一是这段脚本先后会调用两个百度资源,这造成了冗余,不利于页面加载速度

  • 其二是该脚本会提交目前URL,但是许多URL会是动态URL,会带各种参数。虽然百度爬虫也有自己的判断方法,但无疑这增加了其负担。

为了解决这两个问题,在大牛的帮助下,有了下面改良版本。

 

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

改良的脚本如下,替换原来百度官方的代码

<script>
	(function(){
		var canonicalURL, curProtocol;
		//Get the <link> 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);})();
</script>

代码解释:

这个新脚本的作用是多了一步查看页面的canonical URL的步骤。我们知道canonical属性表示该页面纵有千种URL的花样,请搜索引擎只认准href中给出的URL值。这样一来就不会让搜索引擎为了同一个页面(或许已经索引了)多次检查你的推送页面具体内容。

这个新脚本的另一个更改是直接将上述两个js的内容拿了出来。由于这两个js中的代码其实是静态的,每次都去调用并不必要。另一方面,我们需要对r的值进行更改,将它更改为canonical URL的值,因此这样解决了我们上面的第二个问题。

 

 

360 站长平台

自动收录:http://zhanzhang.so.com/?m=SiteMapAuto

自动收录功能简介

1. 自动收录是指用户将指定js代码放到页面中,当该页面每次被浏览时,页面URL会自动提交到360蜘蛛爬取,从而完成对该页面的自动收录。

2. 自动收录功能可与“Sitemap提交”和"URL收录"配合使用,三者使用互不影响。

 

360 提交网址链接的js代码

<script>(function(){
var src = (document.location.protocol == "http:") ? "http://js.passport.qihucdn.com/11.0.1.js?3c78c49cf51a0802e9561f3b32b30d61":"https://jspassport.ssl.qhimg.com/11.0.1.js?3c78c49cf51a0802e9561f3b32b30d61";
document.write('<script src="' + src + '" id="sozz"><\/script>');
})();
</script>

自动收录功能js代码添加,请将js代码安装到要提交的页面</body>前

 

 

JS 自动推送网址链接到搜索引擎示例

应用实例,请见米扑博客:

<!-- baidu web spider -->
<script>(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)})();</script>
<!-- 360 web spider -->
<script>(function(){var src=(document.location.protocol=="http:")?"http://js.passport.qihucdn.com/11.0.1.js?3c78c49cf51a0802e9561f3b32b30d61":"https://jspassport.ssl.qhimg.com/11.0.1.js?3c78c49cf51a0802e9561f3b32b30d61";document.write('<script src="'+src+'" id="sozz"><\/script>')})();</script>

 

 

 

参考推荐

米扑博客SEO优化技巧小结

百度蜘蛛是如何判断优质内容