360搜索,你是来搞笑的吗?

本文详细分析了一个关于360搜索JS提交链接时遇到的错误,该错误导致Uncaught TypeError,原因是尝试从undefined对象上读取split属性。作者通过简化代码展示了问题所在:`document.getElementById('sozz').src.split('?')[1]`返回undefined,进而引发后续错误。解决方案可能是确保`sid`值正确获取。然而,360站长平台已下线此功能,对此问题不再维护。

js提交

网站收录中js提交是常见的链接提交方·式。虽然还支持的厂家已经不多了。但是,提供了又不好好弄的实在没法忍。

360 js提交报错

Uncaught TypeError: Cannot read properties of undefined (reading 'split')
    at t (ab77b6ea7f3fbf79.js:1)
    at ab77b6ea7f3fbf79.js:1
    at ab77b6ea7f3fbf79.js:1
t @ ab77b6ea7f3fbf79.js:1
(匿名) @ ab77b6ea7f3fbf79.js:1
(匿名) @ ab77b6ea7f3fbf79.js:1

源码

(function(e) {
    function t(e) {
        var t = location.href
          , n = t.split("").reverse()
          , r = e.split("")
          , i = [];
        for (var s = 0, o = 16; s < o; s++)
            i.push(r[s] + (n[s] || ""));
        return i.join("")
    }
    var n = /([http|https]:\/\/[a-zA-Z0-9\_\.]+\.so\.com)/gi
      , r = e.location.href;
    if (r && !n.test(r) && window.navigator.appName) {
        var i = "//s.360.cn/so/zz.gif"
          , s = document.getElementById("sozz")
          , o = s.src.split("?")[1]
          , u = t(o)
          , a = new Image;
        r && (i += "?url=" + encodeURIComponent(r)),
        o && (i += "&sid=" + o),
        u && (i += "&token=" + u),
        o && (a.src = i)
    }
}
)(window);

它干了什么

这里我处理了下,简化代码

  1. 判断当前链接不是360搜索的链接
/([http|https]:\/\/[a-zA-Z0-9\_\.]+\.so\.com)/gi.test(window.location.href)
//返回 false
  1. 从js提交链接提前sid
//<script src=""https://s.ssl.qhres2.com/ssl/ab77b6ea7f3fbf79.js" id="sozz"><\/script>
let sid = document.getElementById("sozz").src.split("?")[1]
// 返回 undefined
  1. 拼接 token
    1. 把 location.href 字符串倒转成 t
    2. 取倒转后的字符串 t 前16位,不足16为视为 “”
    3. 每次取sid和t各一个字符,拼接成Token。
    	  // e = sid 
    	  var t = location.href
          , n = t.split("").reverse()
          , r = e.split("")
          , i = [];
          for (var s = 0, o = 16; s < o; s++)
            i.push(r[s] + (n[s] || ""));
          return i.join("")
  1. 打包参数给zz.gif

sid 在哪?

360 站长后台原文
<script>
(function(){
var src = "https://s.ssl.qhres2.com/ssl/ab77b6ea7f3fbf79.js";
document.write('<script src="' + src + '" id="sozz"><\/script>');
})();
</script>

截图 2021年10月11日

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-zf8xvX1k-1633889279808)(/?_x=file.out&idm=90f648)]

消失的sid

很明显,document.getElementById(“sozz”).src.split("?")[1] 确实只能返回 undefined

sid = undefined;

undefined.split(’?’) 自然就报错了

失望

前几天还在各个搜索引擎SEO网站提交入口和使用感受夸了下360反应速度快。存在这种问题只能说真的没站长使用360。

解决办法?

https://s.ssl.qhres2.com/ssl/ab77b6ea7f3fbf79.js

里面的ab77b6ea7f3fbf79 刚刚好是16位,莫非它就是?
如果是,js代码代码应该是这样的

<script>
(function(){
var src = "https://s.ssl.qhres2.com/ssl/ab77b6ea7f3fbf79.js?ab77b6ea7f3fbf79";
document.write('<script src="' + src + '" id="sozz"><\/script>');
})();
</script>

后续

人家就是论坛公告下线了,后台不管。
站长平台自动收录功能下线关闭公告

原文链接

原文链接 360搜索,你是来搞笑的吗?

以下是几种前端判断浏览器是360安全浏览器的方法: #### 通过用户代理字符串判断 360安全浏览器的用户代理字符串中通常会包含其特定标识。例如,360安全浏览器的用户代理字符串可能会包含 `QIHU 360SE` 或 `360EE` 等标识。可以使用以下代码进行判断: ```javascript function is360Browser() { const userAgent = navigator.userAgent; return userAgent.indexOf(&#39;QIHU 360SE&#39;) > -1 || userAgent.indexOf(&#39;360EE&#39;) > -1; } if (is360Browser()) { console.log(&#39;这是360安全浏览器&#39;); } else { console.log(&#39;这不是360安全浏览器&#39;); } ``` #### 通过检测插件判断 可以通过检测浏览器插件来判断是否为360安全浏览器。例如,检测 `np-mswmp.dll` 文件是否存在于浏览器插件中,在360浏览器中可以检测到该文件,而在 Chromium 及 Chrome 中未查询到: ```javascript function checkChromeFor360() { const uas = navigator.userAgent.split(&#39; &#39;); let result = false; // 排除ua自带标志的双核浏览器, 余下chrome,chromium及360浏览器 if (uas[uas.length - 1].indexOf(&#39;Safari&#39;) === -1) { return result; } for (const key in navigator.plugins) { // np-mswmp.dll文件在chromium及chrome未查询到 if (navigator.plugins[key].filename === &#39;np-mswmp.dll&#39;) { return !result; } } return result; } if (checkChromeFor360()) { console.log(&#39;这可能是360安全浏览器的极速内核&#39;); } else { console.log(&#39;这不是360安全浏览器的极速内核&#39;); } ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值