百度和360相继上线简单易用的JS自动推送和自动收录工具,两者的大概意思都是只要在站点部署了JS代码,就可以实现在用户浏览该页面的时候即时自动推送给百度和360,以实现链接自动提交,据说可以提高收录率。
想法是好的,可惜不论是百度还是360的这个JS工具都算是半产品,都没有考虑到重复推送问题。换句话就是说,部署了他们的JS代码,无论该页面是否已经被收录,只要有人浏览就会自动推送,这样就会造成同一个链接地址重复推送。据说有可能会让蜘蛛误以为这个文章更新频繁而且不稳定从而进入收录沙河短期内不会展示,而且还会浪费每天的可推送额度。虽然不知道这些重复推送的后果是真是假,我们作为站长的,还是宁可信其有不可信其无吧。
对于百度自动推送的重复推送问题,张戈博主也早已分享了相应的规避做法,具体请参考《WordPress百度自动推送JS优化,规避错误、重复推送问题》这篇文章进行设置。
张戈博主只分享并解决了百度自动推送的重复推送问题,而没有分享360自动收录的重复推送问题。其实这两者是十分相似的,只需要依瓢画葫芦就可以搞定。不过不是每个博主站长都会折腾代码,所以今天就顺便把百度自动推送和360自动收录JS代码造成的重复推送问题集合在一起解决。
百度自动推送和360自动收录JS代码造成的重复推送问题的解决办法如下:
只需要将以下代码添加到functions.php文件最后一个?>即可。(这个方法适用于WordPress站点,至于其他程序站点请自行研究解决)
- /**
- * 优化解决百度自动推送和360自动收录JS重复推送问题 By 懿古今
- * 文章地址:https://www.yigujin.cn/843.html
- * 百度自动推送的JS代码优化 By 张戈博客
- * 文章地址:http://zhang.ge/5100.html
- * 转载请保留出处,谢谢合作!
- **/
- add_action( 'wp_footer', 'bdPushData', 999);
- //检查百度是否已收录最新改进版本
- if(!function_exists('baidu_check_record')){
- function baidu_check_record($url){
- global $wpdb;
- $post_id = ( null === $post_id ) ? get_the_ID() : $post_id;
- $baidu_record = get_post_meta($post_id,'baidu_record',true);
- if( $baidu_record != 1){
- $url='http://www.baidu.com/s?wd='.$url;
- $curl=curl_init();
- curl_setopt($curl,CURLOPT_URL,$url);
- curl_setopt($curl,CURLOPT_RETURNTRANSFER,1);
- $rs=curl_exec($curl);
- curl_close($curl);
- //如果抓取到的百度结果中不存在【提交网址】这个关键词,则认为该页面已被百度收录
- if(!preg_match_all('/提交网址/u',$rs,$matches) && preg_match_all('/百度为您找到相关结果/u',$rs, $matches)){
- update_post_meta($post_id, 'baidu_record', 1) || add_post_meta($post_id, 'baidu_record', 1, true);
- return 1;
- } else {
- return 0;
- }
- } else {
- return 1;
- }
- }
- }
- //检查360是否已收录最新改进版本
- if(!function_exists('sll_check_record')){
- function sll_check_record($sslurl){
- global $wpdb;
- $post_id = ( null === $post_id ) ? get_the_ID() : $post_id;
- $sll_record = get_post_meta($post_id,'sll_record',true);
- if( $sll_record != 1){
- $sslurl='http://www.so.com/s?q='.$sslurl;
- $csslurl=curl_init();
- curl_setopt($csslurl,CURLOPT_URL,$sslurl);
- curl_setopt($csslurl,CURLOPT_RETURNTRANSFER,1);
- $rs=curl_exec($csslurl);
- curl_close($csslurl);
- //如果抓取到的360结果中不存在【提交网址】这个关键词,则认为该页面已被360收录
- if(!preg_match_all('/提交网址/u',$rs,$matches)){
- update_post_meta($post_id, 'sll_record', 1) || add_post_meta($post_id, 'sll_record', 1, true);
- return 1;
- } else {
- return 0;
- }
- } else {
- return 1;
- }
- }
- }
- //输出百度自动推送和360自动收录的js代码
- if(!function_exists('bdPushData')){
- function bdPushData() {
- if ($_SERVER['HTTPS'] != "on") {
- $currentUrl = 'http://'.$_SERVER['HTTP_HOST'].$_SERVER["REQUEST_URI"];
- } else {
- $currentUrl = 'https://'.$_SERVER['HTTP_HOST'].$_SERVER["REQUEST_URI"];
- }
- //判断是否是百度未收录页面,并且当前页面是否等于正规url地址(get_premalink)
- if(baidu_check_record(get_permalink()) == 0 && $currentUrl == get_permalink()) {
- echo "<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未收录页面,并且当前页面是否等于正规url地址(get_premalink)
- if(sll_check_record(get_permalink()) == 0 && $currentUrl == get_permalink()) {
- echo "<script>
- (function(){
- var src = (document.location.protocol == 'http:') ? 'http://js.passport.qihucdn.com/11.0.1.js?9d1e70eca6a305e9ff409dcab8478888':'https://jspassport.ssl.qhimg.com/11.0.1.js?9d1e70eca6a305e9ff409dcab8478888';
- document.write('<script src='' + src + '' id='sozz'><\/script>');
- })();
- </script>";
- }
- }
- }
其中,一定要记得修改代码中的360自动收录的那个秘钥(9d1e70eca6a305e9ff409dcab847888就是秘钥,直接替换即可),每个站点都有属于自己的秘钥,具体秘钥可在360站长平台中获取,具体可见《360自动收录简介及添加360自动收录功能的详细教程》。
题外话:以上方法在boke112导航和懿古今都已正常运行,但是在懿古今就有点不太正常。比如同样在百度和360搜索boke112导航和懿古今某篇文章的链接地址,显示的结果要么显示收录的结果,要么显示未收录需要提交网址。但是搜索懿古今某篇文章的地址都显示一大堆不相关的结果,根本看不出是否已收录也看不到有提交网址的按钮。三个站点唯一不一样的地方就是懿古今是后缀为.wang的域名,不知道是否跟这个有关?
发表于2016-07-15 13:18 沙发
百度的龟速收录,已经不敢恭维了
@野人摊影视分享百度的收录速度没有360的快,差很远
@懿古今[流汗] 我博客的很多文章都好几个月了,也还是不见百度收录,没啥权重的站不受百度待见啊,只能无语!
发表于2016-07-15 14:40 板凳
好东西,最近百度的插件貌似抽风等了
@网赚博客[疑问] 百度的插件,我好想没用过
发表于2016-07-15 14:47 地板
目前,咱博客的百度自动推送使用的是张戈那分享的优化代码,360自动收录的代码还没使用优化代码,打算暂时保持这样(懒得折腾 [拳头] )。
@我爱动感单车网[呲牙] 我也是用张戈分享的代码,只不过把360的也整合进去而已
@懿古今跟张戈大神的没啥区别,就多了360而已吧!
@橘子书 [呲牙] 文中已经说明,就是在张戈大神分享的代码基础上加上360的优化而已,代码中也有张戈分享的连接说明及网址哦。
发表于2016-07-15 16:55 4楼
你们怎么都有头像,我怎么没有,默认的好丑,好像NANA主题只能从文件夹改头像,装了插件不管用。
@楚大仙评论邮箱注册了gravatar头像才会有头像,要不然都是默认头像,跟主题没啥关系
@懿古今翻个墙,弄个全球通用头像就好了!
@橘子书 是的,可惜很多人都没有注册过这个全球通用头像,总是以为是主题问题,很无语
发表于2016-07-16 19:05 5楼
感谢分享,已经添加到网站,可惜360站长平台不能像百度那样查看提交详情
@李阳博客是的,这一点确实很郁闷
@懿古今[抓狂] 360的好多东西比起百度来,还相距甚远,令我感觉郁闷的是,360好像也就三板斧那样子,近来根本没什么作为!
发表于2016-07-16 23:42 6楼
不知道怎么滴,又转进来了
发表于2016-07-20 21:05 7楼
哈哈不小心又偷偷溜进来了
发表于2016-07-22 16:18 8楼
昨晚才把这个给添加进去。
@橘子书 我已经折腾进去了,感觉就是每天多了几个自动推送的数据,其他效果看不出来
@懿古今我也看不出什么效果,https的收录本身就有问题,汗。
目前从百度站长可以看到每天自动推送几个,然后文章自定义栏目多了360的record为1.
发表于2016-07-28 09:43 9楼
[强] 代码很好,值得使用或是收藏备用!
发表于2016-12-19 16:05 10楼
不得不说360跟百度比起来好渣呀!恶意解析、恶意镜像的360收录比百度还夸张!
@明月登楼的博客[偷笑] 其实都不是一个等量级,就好比百度和谷歌一样
发表于2018-06-01 10:48 11楼
这个代码不错哈,ZBLOGPHP的也拉一套呗!?
@暗潮理论上应该是一样的,你可以研究看看,不过现在百度重点还是搞熊掌号比较好,这些提交意义不大了