360搜索引擎so自动收录php改写方案——适合phpcms等cms
360搜索引擎自动收录功能,官方提供了代码,带式,十分坑爹,没有提供批量提交入口,只是提供了一段js代码,关键是 一个js去下载另外一个js,document.write到文档,然后再 重复2遍如此工作。
弱弱地问:为什么不像百度一样提供 批量提交入口?
难道是,靠这个自动提交功能,搜集网站的数据,比如document.refer等数据?这个也是比较流氓了吧?
据说360的搜索引擎目前在中国 市场占有率为20%以上,不知道真假,本人是十分怀疑的!
起码本人基本只用谷歌!奈何在天朝还是基本用百度,小白还是太多太多的!
只好忍了,加360的自动收录吧!
于是对代码进行一番改造!
官网的原始代码如下:
1 | < script >(function(){< br >var src = (document.location.protocol == "http:") ? "http://js.passport.qihucdn.com/11.0.1.js?970506d365e969bd0e92a2611c18678e":"https://jspassport.ssl.qhimg.com/11.0.1.js?970506d365e969bd0e92a2611c18678e";< br >document.write('< script src="' + src + '" id="sozz"><\/script>');< br >})(); |
http://js.passport.qihucdn.com/11.0.1.js?970506d365e969bd0e92a2611c18678e
1 | document.write( '<script charset="utf-8" src="http://s7.qhres.com/static/ab77b6ea7f3fbf79.js"></script>' ) |
http://s7.qhres.com/static/ab77b6ea7f3fbf79.js
官网提供的代码进过二次方document.write的代码如下,这个js的代码如下:
1 | (function (e) {< br > function t(e) {< br > var t = location.href, n = t.split("").reverse(), r = e.split(""), i = [];< br > for (var s = 0, o = 16; s < o; s++)i.push(r[s] + (n[s] || ""));< br > return i.join("")< br > }< br >< br > var n = /([http|https]:\/\/[a-zA-Z0-9\_\.]+\.so\.com)/gi, r = e.location.href;< br > if (r && !n.test(r) && window.navigator.appName) {< br > var i = "//s.360.cn/so/zz.gif", s = document.getElementById("sozz"), o = s.src.split("?")[1], u = t(o), a = new Image;< br > r && (i += "?url=" + encodeURIComponent(r)), o && (i += "&sid=" + o), u && (i += "&token=" + u), o && (a.src = i)< br > }< br >})(window); |
分析发现
最终目的还是 img 请求提交,尼玛,于是,改造如下:
在phpcms v9的 phpcms/libs/functions/ 目录下,找到 extention.func.php 文件,添加如下代码:
1 | /**<br> * 360推送 @www.zhoulujun.cn<br><br> */ <br> function getPushSoUrl( $url ){<br> $token = "970506d365e969bd0e92a2611c18678e" ;<br> return $str = "http://s.360.cn/so/zz.gif?url=" .urlencode( $url ). "&sid=" . $token . "&token=" .getPushToken( $url , $token );<br>}<br> function getPushToken( $url , $o ){<br> $n = str_split ( $url ,1);<br> $n = array_reverse ( $n );<br> $r = str_split ( $o ,1);<br> $i =[];<br> for ( $s =0, $o =16; $s < $o ; $s ++)<br> {<br><br> array_push ( $i , empty ( $n [ $s ])? $r [ $s ]: $r [ $s ]. $n [ $s ]);<br> }<br> return implode( $i );<br>}<br> /*<br>class push_so_url{<br> private $token="970506d365e969bd0e92a2611c18678e";<br> public function setToken($token){<br> $this->token=$token;<br> }<br>// function __construct($token) {<br>// $this->token=$token;<br>// }<br> public function getPushToken($url,$o){<br> $n = str_split($url,1);<br> $n=array_reverse($n);<br> $r = str_split($o,1);<br> $i=[];<br> for($s=0,$o=16;$s<$o;$s++)<br> {<br><br> array_push($i,empty($n[$s])?$r[$s]:$r[$s].$n[$s]);<br> }<br> return implode($i);<br> }<br> public function getImgUrl($url){<br> return $str="http://s.360.cn/so/zz.gif?url=".urlencode($url)."&sid=". $this->token."&token=".$this->getPushToken($url,$this->token);<br> }<br><br><br>}<br>*/ |
在 模板 phpcms/templates/default/content/ 比如show index 添加如下代码:
1 | < img src="{getPushSoUrl($_SERVER['HTTP_HOST'].$url)}"> |
okay,验证下
和js的效果是一样的。
手工,不知道官方对此方案态度如何,目前还没有收到回复,邮寄给官方发过邮寄和论坛、知乎都提问,无人问津啊
先干了再说吧!
转载请注明来源:
周陆军的个人网站-360搜索引擎so自动收录php改写方案——适合phpcms等cms
http://www.zhoulujun.cn/zhoulujun/html/Operation/seo/2018_0426_8102.html
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了