首图来自QQ官网,侵删
今天看到Q群里面的一个推广方式:
扫码跳转到聊天记录,聊天记录里面有网址,点击跳转到QQ群页面,以此来达到推广群聊的效果。
由于我技术有限,仅想通了大概逻辑,看懂了大概流程,没有试验过。
仅在此记录下。
推广流程
首先群里面发个二维码,表示有福利。
二维码长这样
如果是苹果手机扫码,会看到这个页面:
提示需要用安卓手机扫码
如果是安卓手机扫码,会短暂看到上面那个页面,然后会跳转到QQ中转发的聊天记录:
点击聊天记录,上面是美图,你懂得,下面会有一个网址:
网址看起来挺正常
点击网址,跳转到群信息页面:
就可以申请入群了,入群后,群内会有二维码福利。
然后就是重复上面流程,实现推广群聊的目的。
但是直接发网址做推广,其实很容易网址被封的,而且也不安全。
所以这个案例里面就用到了很多小妙招来解决这个问题。
流程分析
首先群内的二维码,解码后地址是这样的:
https://touch.10086.cn/appregion.html?backUrl=http://mma.qq.com.hao123.com.mma.qq.com.10086.com.mma.qq.com.im.qq.com.mma.qq.com.taobao.com.mma.qq.com.jd.com.mma.qq.com.qq.com.mma.qq.com.dhxhyw.cn/sharewx.html?code=EXXXXT
这个地址就很厉害,是10086的触屏版地址,正常在腾讯这是不可能会被标成危险地址的。
查看这个页面的代码,是这样的:
<html> <head> <meta charset="utf-8"> <title>数据加载中,请稍候</title> <script type="text/javascript" src="//app.10086.cn/appother/js/public/leadeon.js"></script> <script type="text/javascript" src="//app.10086.cn/leadeon-cmcc-static/v2.0/js/public/fashion.js"></script> </head> <body> <script type="text/javascript"> window.$ = window.$ || {}; $.each = $.each || function(data, callback) { for (var i = 0; i < data.length; i++) { if (callback(i, data[i]) === false) { break; } } return data; } function isApp() { return "leadeon" == navigator.userAgent.toLowerCase().match(/leadeon/i) } function parseUrl() { backUrl = backUrl.replace(/{([^{}]+)}/gi, function() { return region[arguments[1]] || '' }); window.location.replace(backUrl) } var backUrl = location.search.match(/backUrl=([^&]+)/); var historyUrl = document.referrer; var region = { province: 100, city: 100 }; if (!backUrl) { location.href = "/"; } else { backUrl = decodeURIComponent(backUrl[1]); if (isApp()) { try { leadeon.getUserInfo({ debug: false, success: function(res) { var province = res.province; //省编码 var city = res.city; city = newCity.reNewCity(city); region = { province: province, city: city }; parseUrl(); }, error: function(res) { parseUrl(); } }) } catch (e) { } } else { parseUrl(); } } </script> </body> </html>
可以看出这是10086官方的页面,代码没什么问题,这个页面只是用来做跳转,而需要跳转的地址是存在网址参数中的。
backUrl=http://mma.qq.com.hao123.com.mma.qq.com.10086.com.mma.qq.com.im.qq.com.mma.qq.com.taobao.com.mma.qq.com.jd.com.mma.qq.com.qq.com.mma.qq.com.dhxhyw.cn/sharewx.html?code=EXXXXT
看上面这个地址,返回的参数一堆,都是大公司的地址,只有在末尾有点不一样。
也就是这一段:mma.qq.com.dhxhyw.cn/sharewx.html?code=EXXXXT
可以判断,这段才是真正跳转的地方。
分析这段网址跳转的页面代码,是这样的:
<!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, user-scalable=no,initial-scale=1,minimum-scale=1,maximum-scale=1"> <meta http-equiv="proma" content="no-cache" /> <meta http-equiv="cache-control" content="no cache" /> <meta http-equiv="expires" content="0" /> <title>新年好!</title> <style type="text/css"> html, body { height: 100%; width: 100% } * { outline: none; -webkit-tap-highlight-color: rgba(0, 0, 0, 0) } body { background: #f3f3f3; font-family: "Helvetica Neue", Helvetica, STHeiTi, sans-serif; margin: 0; } .m_wording { text-align: center; height: 285px; width: 100%; position: absolute; transform: translate(0, -50%); top: 50%; } .m_wording.update { height: 187px; } .m_icon { background-image: url("qq_product_operations/mma/jumpqq/qq_symbol-31536000.png"); width: 97px; height: 97px; margin: 0 auto; background-size: auto 100%; background-repeat: no-repeat; background-position: center center; } .m_title { font-size: 20px; margin: 20px auto 12px; line-height: 20px; } .m_text { font-size: 14px; color: #aaaaaa; margin: 0 auto; line-height: 14px; } .m_text a { /*color: #12b7f5;*/ color: #aaaaaa; text-decoration: none; /*font-weight: 700*/ } .btn_bar { margin-top: 36px; } button { height: 40px; width: 220px; font-size: 18px; background-color: #12b7f5; -webkit-appearance: none; border: none; color: #fff; border-radius: 3px; } button:active { background-color: #0e98cb; } .outdate, .update { display: none } </style> </head> <script type="text/javascript"> function goPAGE() { if ((navigator.userAgent.match(/(phone|pad|pod|iPhone|iPod|ios|iPad|Android|Mobile|BlackBerry|IEMobile|MQQBrowser|JUC|Fennec|wOSBrowser|BrowserNG|WebOS|Symbian|Windows Phone)/i))) { // } else { window.location.href = "10151/js.js"; } } goPAGE(); </script> <script> if (screen.width >= 1020) { window.location.href = '10151/js.js'; } </script> <body> <div class="m_wording outdate"> <div> <div class="m_icon"></div> <p class="m_title">快乐就好</p> <!--<p class="m_text">若无法正常跳转请先<a id="update_link" href="javascript:">安装QQ或升级QQ</a>。</p>--> <p class="m_text">永恒</p> <div class="btn_bar"> <button id="btn_update">冲哇!</button> </div> </div> </div> <div class="m_wording update"> <div> <div class="m_icon"></div> <p class="m_title">部分安卓进不去!让朋友给你扫发给你,重启qq或者重装qq或清除qq数据</p> <a href="javascript:;" target="_blank">跳转</a> </div> </div> <script> //BJ_REPORT.tryJs().spyAll(); </script> <script src="sdk/qqapi.wk-152.js"></script> <script> function getQueryVariable(variable) { var query = window.location.search.substring(1); var vars = query.split("&"); for (var i = 0; i < vars.length; i++) { var pair = vars[i].split("="); if (pair[0] == variable) { return pair[1]; } } return 0; } if (/(iPhone|iPad|iPod|iOS)/i.test(navigator.userAgent)) { //判断iPhone|iPad|iPod|iOS var code = getQueryVariable('code'); var rId = getQueryVariable('rId'); var fName = getQueryVariable('fName'); var urls = 'https://mp.weixin.qq.com/s/IQ2INnAfgExk5JsKz_3Qxw'; if (code) { var httpRequest = new XMLHttpRequest(); httpRequest.open('GET', 'http://q.q9q.cc/api.php?act=getinfo&code=' + code, true); httpRequest.send(); httpRequest.onreadystatechange = function () { if (httpRequest.readyState == 4 && httpRequest.status == 200) { var json = httpRequest.responseText; var data = JSON.parse(json); if (data['code'] == -1 || data['links'] == '') { window.location.href = '10151/js.js'; } else { window.location.href = data['links']; } } } } else if (rId) { var httpRequest = new XMLHttpRequest(); httpRequest.open('GET', 'http://q.q9q.cc/api.php?act=getinfo2&rId=' + encodeURIComponent(rId) + '&fName=' + encodeURIComponent(fName), true); httpRequest.send(); httpRequest.onreadystatechange = function () { if (httpRequest.readyState == 4 && httpRequest.status == 200) { var json = httpRequest.responseText; var data = JSON.parse(json); if (data['links'] == '') { window.location.href = '10151/js.js'; } else { window.location.href = data['links']; } } } } else { window.location.href = urls; } } else { var rId = getQueryVariable('rId'); var fName = getQueryVariable('fName'); if (rId) { var httpRequest = new XMLHttpRequest(); httpRequest.open('GET', 'http://q.q9q.cc/api.php?act=getinfo2&rId=' + encodeURIComponent(rId) + '&fName=' + encodeURIComponent(fName), true); httpRequest.send(); httpRequest.onreadystatechange = function () { if (httpRequest.readyState == 4 && httpRequest.status == 200) { var json = httpRequest.responseText; var data = JSON.parse(json); if (data['code'] == 1) { window.location.href = data['url']; } else { document.addEventListener("touchstart", function () { }, false); (function () { var ENV = (function () { var ua = navigator.userAgent.toLowerCase(); var ua2 = navigator.userAgent; var platform = function (os) { var ver = ('' + (new RegExp(os + '(\\d+((\\.|_)\\d+)*)').exec(ua) || [, 0])[1]).replace(/_/g, '.'); // undefined < 3 === false, but null < 3 === true return !!parseFloat(ver); }; return { is_mqq: /(iPad|iPhone|iPod).*? (IPad)?QQ\/([\d\.]+)/.test(ua2) || /\bV1_AND_SQI?_([\d\.]+)(.*? QQ\/([\d\.]+))?/.test(ua2), is_ios: platform('os '), is_android: platform('android[/ ]'), is_pc: !platform('os ') && !platform('android[/ ]') } })(); if (ENV.is_ios) { callQQ({ env: 'ios' }); } else if (ENV.is_android) { callQQ({ env: 'android' }); } function getUrlParam(name, url) { //这里使用惰性正则表达式,完善这里的正则表达式,完美支持HASH var reg = new RegExp("(^|&|\\?|#)" + name + "=([^&]*?)(&|#|$)"); url = url || location.href; var tempHash = url.match(/#.*/) ? url.match(/#.*/)[0] : ''; //临时存储hash url = url.replace(/#.*/, ''); //url if (reg.test(tempHash)) { //HASH优先 return decodeURIComponent(tempHash.match(reg)[2]); } else if (reg.test(url)) { return decodeURIComponent(url.match(reg)[2]); } else { return '' } } function getCookie(n) { var m = document.cookie.match(new RegExp("(^| )" + n + "=([^;]*)(;|$)")); return !m ? "" : decodeURIComponent(m[2]); } function getCookieUin() { var a = getCookie("uin"); return !a ? null : parseInt(a.substring(1, a.length), 10) } function callNative(url, settings) { if (settings.env == 'android') { var jumpIframe = document.createElement('iframe'); jumpIframe.style.cssText = 'display:none; width:0px; height:0px;'; //就是在iframe.src 赋值伪协议之前先setTimeout 300ms以上,能大大提高唤起手Q的成功率 setTimeout(function () { jumpIframe.src = url; document.body.appendChild(jumpIframe); }, 500); } else { location.href = url; } } function bindUpdateBtn(ios) { var btn = document.querySelector('#btn_update'); if (btn) { btn.onclick = function (e) { if (ios) { location.href = 'itms-apps://itunes.apple.com/cn/app/qq-2011/id444934666?mt=8'; } else { location.href = 'http://im.qq.com/mobileqq/'; } } } } //手Q跳转 function callQQ(options) { //var url = getUrlParam('url'); var settings = { env: options && options.env || 'unknown' }; /* var closeSelfUrl = 'jsbridge://nav/popBack'; if(settings.env == 'android'){ closeSelfUrl = 'mqqapi://hongbao_share/hongbao_brush?src_type=web'+'&t='+new Date().getTime(); }*/ if (mqq.QQVersion < '7.1.0') { document.querySelector('.outdate').style.display = 'block'; bindUpdateBtn(mqq.iOS) return; } else { document.querySelector('.update').style.display = 'block'; var code = getQueryVariable('code'); if (code == '') { var fName = getUrlParam('fName'); var rId = getUrlParam('rId'); mqq.invoke("msgForward", "showForwardToWXMsg", { fName: fName, rId: rId }) } else { var httpRequest = new XMLHttpRequest(); httpRequest.open('GET', 'http://q.q9q.cc/api.php?act=getinfo&code=' + code, true); httpRequest.send(); httpRequest.onreadystatechange = function () { if (httpRequest.readyState == 4 && httpRequest.status == 200) { var json = httpRequest.responseText; var data = JSON.parse(json); if (data['code'] == -1) { //window.location.href = '10151/js.js'; } else { mqq.invoke("msgForward", "showForwardToWXMsg", { fName: data['fName'], rId: data['rId'] }) } } } } //上面跳转到转发消息界面,不需要再做下面的关闭webview操作 /* setTimeout(function(){ if(mqq.android && mqq.QQVersion<'6.2.1'){ mqq.ui.closeWebViews({"mode":0, "exclude":false}); } else{ callNative(closeSelfUrl,settings); } },3000);*/ } } if (mqq) { mqq.invoke('ui', 'disableLongPress', { enable: true }) mqq.invoke('ui', 'disableWebviewLongPress', { enable: true }) } document.oncontextmenu = function () { window.event.returnValue = false }; })() } } } } else { document.addEventListener("touchstart", function () { }, false); (function () { var ENV = (function () { var ua = navigator.userAgent.toLowerCase(); var ua2 = navigator.userAgent; var platform = function (os) { var ver = ('' + (new RegExp(os + '(\\d+((\\.|_)\\d+)*)').exec(ua) || [, 0])[1]).replace(/_/g, '.'); // undefined < 3 === false, but null < 3 === true return !!parseFloat(ver); }; return { is_mqq: /(iPad|iPhone|iPod).*? (IPad)?QQ\/([\d\.]+)/.test(ua2) || /\bV1_AND_SQI?_([\d\.]+)(.*? QQ\/([\d\.]+))?/.test(ua2), is_ios: platform('os '), is_android: platform('android[/ ]'), is_pc: !platform('os ') && !platform('android[/ ]') } })(); if (ENV.is_ios) { callQQ({ env: 'ios' }); } else if (ENV.is_android) { callQQ({ env: 'android' }); } function getUrlParam(name, url) { //这里使用惰性正则表达式,完善这里的正则表达式,完美支持HASH var reg = new RegExp("(^|&|\\?|#)" + name + "=([^&]*?)(&|#|$)"); url = url || location.href; var tempHash = url.match(/#.*/) ? url.match(/#.*/)[0] : ''; //临时存储hash url = url.replace(/#.*/, ''); //url if (reg.test(tempHash)) { //HASH优先 return decodeURIComponent(tempHash.match(reg)[2]); } else if (reg.test(url)) { return decodeURIComponent(url.match(reg)[2]); } else { return '' } } function getCookie(n) { var m = document.cookie.match(new RegExp("(^| )" + n + "=([^;]*)(;|$)")); return !m ? "" : decodeURIComponent(m[2]); } function getCookieUin() { var a = getCookie("uin"); return !a ? null : parseInt(a.substring(1, a.length), 10) } function callNative(url, settings) { if (settings.env == 'android') { var jumpIframe = document.createElement('iframe'); jumpIframe.style.cssText = 'display:none; width:0px; height:0px;'; //就是在iframe.src 赋值伪协议之前先setTimeout 300ms以上,能大大提高唤起手Q的成功率 setTimeout(function () { jumpIframe.src = url; document.body.appendChild(jumpIframe); }, 500); } else { location.href = url; } } function bindUpdateBtn(ios) { var btn = document.querySelector('#btn_update'); if (btn) { btn.onclick = function (e) { if (ios) { location.href = 'itms-apps://itunes.apple.com/cn/app/qq-2011/id444934666?mt=8'; } else { location.href = 'http://im.qq.com/mobileqq/'; } } } } //手Q跳转 function callQQ(options) { //var url = getUrlParam('url'); var settings = { env: options && options.env || 'unknown' }; /* var closeSelfUrl = 'jsbridge://nav/popBack'; if(settings.env == 'android'){ closeSelfUrl = 'mqqapi://hongbao_share/hongbao_brush?src_type=web'+'&t='+new Date().getTime(); }*/ if (mqq.QQVersion < '7.1.0') { document.querySelector('.outdate').style.display = 'block'; bindUpdateBtn(mqq.iOS) return; } else { document.querySelector('.update').style.display = 'block'; var code = getQueryVariable('code'); if (code == '') { var fName = getUrlParam('fName'); var rId = getUrlParam('rId'); mqq.invoke("msgForward", "showForwardToWXMsg", { fName: fName, rId: rId }) } else { var httpRequest = new XMLHttpRequest(); httpRequest.open('GET', 'http://q.q9q.cc/api.php?act=getinfo&code=' + code, true); httpRequest.send(); httpRequest.onreadystatechange = function () { if (httpRequest.readyState == 4 && httpRequest.status == 200) { var json = httpRequest.responseText; var data = JSON.parse(json); if (data['code'] == -1) { //window.location.href = '10151/js.js'; } else { mqq.invoke("msgForward", "showForwardToWXMsg", { fName: data['fName'], rId: data['rId'] }) } } } } //上面跳转到转发消息界面,不需要再做下面的关闭webview操作 /* setTimeout(function(){ if(mqq.android && mqq.QQVersion<'6.2.1'){ mqq.ui.closeWebViews({"mode":0, "exclude":false}); } else{ callNative(closeSelfUrl,settings); } },3000);*/ } } if (mqq) { mqq.invoke('ui', 'disableLongPress', { enable: true }) mqq.invoke('ui', 'disableWebviewLongPress', { enable: true }) } document.oncontextmenu = function () { window.event.returnValue = false }; })() } } </script> <script> function myEeplace(s) { return s.replace(/\{(\w+?)\}/g, function (a, b) { var h = ''; for (var i = 0; i < b.length; i++) { if ('n' == b[i]) { h += Math.floor(Math.random() * 10); } else if ('w' == b[i]) { h += String.fromCharCode(97 + Math.floor(Math.random() * 26)); } } return h; }); } function getParmUrl() { var pus = /\burl\=(.+?)(\#|$)/.exec(location.href) || []; if (pus[1]) { var us = pus[1].split(','); if (us.length > 0) { var index = Math.floor(Math.random() * us.length); if (us[index]) { var url = decodeURIComponent(us[index]); if (!/(\.|\@)(com|cn|net|top|tech|org|xyz|hk|us|gg|us|run|run)/.test(url)) { return false; } if (!/^http|^\/\//.test(url)) { url = 'http://' + url; // } url = url.replace(/\@/gi, '.'); return url; } } } } </script> </body> </html>
这个页面主要用来判断设备,苹果的就会进入提示页面,安卓的会做跳转,跳转到QQ聊天记录。
网上查了下资料,QQ聊天记录是有跳转地址的,地址如:http://mma.qq.com.mobileqq.ga/jumpqq/sharewx.html?rId=记录值
具体如何把QQ聊天记录转成跳转地址,可以自行百度,这里不再赘叙。
进入聊天记录后,可以看到加群的网址,分析了下网址的代码:
<!DOCTYPE html> <html> <head> <title id="page_title">正在跳转</title> <meta http-equiv="X-UA-Compatible" content="IE=Edge"> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no, target-densitydpi=medium-dpi"/> <script type="text/javascript"> var ret = 0; var type = 1 ; var param = "010102000102000431369eab"; var sid = 2 ; var rawuin = 825663147 ; var qsig = "tencent:\/\/groupwpa\/?subcmd=all\x26param=7b2267726f757055696e223a3832353636333134372c2274696d655374616d70223a313630393931393734372c22617574684b6579223a22506e4f5261673968787278594c494f205168504d4d646920577377306a4272696c4156537249617a7a6450366842363779526b565337324853624263346f6b39222c2261757468223a22227d"; </script> </head> <style type="text/css"> html { height: 100%; } body { font-family: 微软雅黑; background: rgb(230, 230, 230); height: 100%; overflow: hidden; } p { margin: 0; line-height: 24px; } a { color: rgb(33, 141, 226); text-decoration: none; } #tips_area { display: none; } #tips_area, #tips_area_pc{ width: 370px; height: 420px; position: absolute; left: 50%; top: 40%; margin-left: -185px; margin-top: -210px; } #logo { background: url('data:image/png;base64,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'); width: 93px; height: 145px; margin: 50px auto 0; position: relative; display: none; } .update_text { text-align: center; margin: 24px 0 35px 0; font-size: 18px; } #wording, #m_wording { display: none; text-align: center; } #wording { line-height: 33px; color: rgb(88, 88, 88); } #wording > strong { color: black; } #m_wording > p:first-child { margin-top: 14px; } .avatars { height: 170px; position: relative; } .avatar { border-radius: 100px; overflow: hidden; width: 94px; height: 94px; border: #FFF solid 3px; position: absolute; behavior: url('PIE.htc'); } .avatar img { border-radius: 100px; width: 94px; height: 94px; behavior: url('PIE.htc'); } .avatars5 .avatar { width: 70px; height: 70px; } .avatars5 img { width: 70px; height: 70px; } .avatar.avatar0 { left: 93px; top: 38px; z-index: 5; } .avatar.avatar1 { left: 147px; top: 0; z-index: 6; } .avatar.avatar2 { top: 38px; left: 200px; z-index: 7; } .avatar.avatar3 { top: 103px; left: 180px; z-index: 7; } .avatar.avatar4 { top: 103px; left: 112px; z-index: 7; } .avatars1 .avatar.avatar0 { top: 35px; left: 135px; } .avatars2 .avatar.avatar0 { top: 35px; left: 110px; } .avatars2 .avatar.avatar1 { top: 80px; left: 180px; } .avatars3 .avatar0 { left: 97px; top: 72px; z-index: 5; } .avatars3 .avatar1 { left: 135px; top: 0; z-index: 6; } .avatars3 .avatar2 { top: 72px; left: 180px; z-index: 7; } .avatars4 .avatar0 { left: 101px; top: 0; z-index: 7; } .avatars4 .avatar1 { top: 0; left: 180px; z-index: 7; } .avatars4 .avatar2 { top: 85px; left: 180px; z-index: 7; } .avatars4 .avatar3 { top: 85px; left: 101px; z-index: 7; } #close-tip { position: absolute; left: 0; right: 0; font-size: 16px; color: #777; top: 389px; text-align: center; height: 18px; line-height: 18px; display: none; } #discussName { font-size: 28px; position: absolute; width: 740px; text-align: center; left: -185px; top: 190px; color: #000; } .button { width: 378px; height: 89px; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAXoAAABZCAIAAAC/jXjrAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoV2luZG93cykiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6MjlDNjEzRjI1QUUxMTFFNzlDNjdBMDk1NjEzRTQzNjUiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6MjlDNjEzRjM1QUUxMTFFNzlDNjdBMDk1NjEzRTQzNjUiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDoyOUM2MTNGMDVBRTExMUU3OUM2N0EwOTU2MTNFNDM2NSIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDoyOUM2MTNGMTVBRTExMUU3OUM2N0EwOTU2MTNFNDM2NSIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PmlLaswAAATOSURBVHja7N09bxxFHMDhmb2z5SjhRaGDIERLRb4AUOQT0NNQUKB09HwKGjoo+RQ0SIgeEaFUSBQRNLzFIY53ht2d3b312bIT315snOfR5rK3duXip//M7tkx5xxCaP8N8vQNwLnEODkvrzmv8rIWmvGt/gBnxOWkykzfNv/HNERlFZfc92U8kRzgaWITu77EtdCMJyU3pTWlL31ljp4LDnBaauKkNd1rFdeL0+ZmvTU5pPF1rUEAx3ITJ60plSmv4/VSnFinPLamr0wKddeaOvVX6iw3wGm5WQyJWVTdebXqTjXOOCU3aZhomsTcf/Dk6+8e//QgHBzGyQYQwJnytd387q3w8XvXXn91UaIzrqra3Iyrp8MUfvz14LNvDg7i9VgJDXCu5KT0yuLhFx9du/XacjldWzW5ScPSqcnNp1/9/fMfL8XKTwzYoDh1ev+t/c8/vLGs2uVVmXGqsjdcBpw/9/O93xfRWANsJlbVD7/0y6bxIZt2jMnD3s1f/6bmu2zXABv3JuwfVnXd3+Au3elXTe371B4Ac6mHfeF+uknlLnjqCwQwlzx5hiaF6XSTTTfArNNNeXYv9QPO5BZUDmoDzDzdTD7/VE0/rODBYWBGaxPMcjLchHz0rhXARqNNt5IKi+OLKYBtkhtAbgC5AZAb4PJaTt/kENwNB2aRT89N9y1Rb4Bt9MZiCnhO5AaQG+BqWT7FggvgmWXTDWAxBbxoiykP3gDbWU2ZboALmm4MN8B2hhvTDfC8yA0gN8DV4s4UsB05npEbtQHmqY3FFHBR5AaQG+BqObZ30/1RTYANZR9iACymALkBkBvgf+SErWLP+QGbs1UMWEwBcgMwixM+ogmwOR/RBC7NdNMWKfmxAPOPN6Yb4DmRG+CCFlO2ioFZJNMNYDEFvGCLKb8bHZhFdGcKuCzTTVIgYA62ioELIzeA3ABXiztTwHa4MwVciukmG26ArTHdAHIDXAFxkpsY27fjAbCF1KxNN1FugFlzE4/MMdUYoSq2XwOYMTdV15vSlqpcKqPNwk4OMJ9F7AecMtMsx7PYfSGnE/7UJsCzamJS1kzjsqmfZ6pu5rm+W3rjBwVsGJuwt5Orqk1MmWZCf2dqOG7eqN6+eWi6ATYebfLtN+vpdNPu44Rh37gMOHfv7IZ6vxlxzDjA+eaaXOfd+PCTD/YWVbdVPEQmHqbcjDOpOVJ4Uoc6he/vH3z57eN7vy1itHUMPJsY0u036rt39t65tbNchGVTnGrYxCm56YuTw5PDUOe2O48Owj+Pc1OfcrTNMu8Ax/vSdKTbo2lmmeZ4eS/u7YQmNDuL/kr7nE03usQ697lpjrqbcQ5TN+l0r02A6m7vWGuA04oz5KY/Yn9STXaH29w03526+aV5rcdJpzsvI4/RBjgzN+WhviY0ZfVUbkuVuWY13ZSalKCU0DSn9fAATh5iFGwfA2uhGU6qatgPjv0Cqn0d7kn1J81SqsRkWpxxeRUmv059vAKwmmsmT/Gt7nnH9dZUJTfjr9TKeZWV6RWAp6xPmHxK4ciVkptxlbS2JWycAc497IRw5ANTYcxNmOzLjKMNwDm7E1bdGfuzyk04thNstAHOt56adiecmJsTowNwvgFn/Uo+dYaRHmCTxEz9J8AAF5Ycadh+/3cAAAAASUVORK5CYII='); background-repeat: no-repeat; color: #FFF; line-height: 85px; text-align: center; font-size: 30px; position: absolute; top: 300px; left: -4px; cursor: pointer; } .button:hover { opacity: 0.8; } .bottom-tips { position: absolute; top: 400px; left: -11px; right: 0; text-align: center; width: 410px; color: #777; } .bottom-tips > a { color: #12b7f5; } #createMsg { font-size: 20px; text-align: center; color: #777; position: absolute; top: 232px; left: 0; right: 0; } .tips { position: absolute; left: 0; right: 0; top: 50px; margin: auto; width: 209px; height: 160px; display: none; } .tips .logo { background: transparent url('//p.qpic.cn/qqconadmin/0/b095d8d0ad144de3943f5dcba95a9624/0') no-repeat; background-size: cover; filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='//p.qpic.cn/qqconadmin/0/b095d8d0ad144de3943f5dcba95a9624/0', sizingMethod='scale'); width: 209px; height: 100px; overflow: hidden; } .desc { margin-top: 15px; margin-left: -10px; font-size: 28px; color: #6B6B6B; } .box { width: 12px; height: 12px; line-height: 12px; position: absolute; overflow: hidden; display: inline-block; margin-top: 5px; } .radius { position: absolute; width: 100%; height: 100%; border-radius: 50%; border: 11px dotted; margin: 0 0 1px 1px; border-width: 0vw; margin: 0vw; background-color: currentColor; } .first-round { left: 0; } .second-round { left: 25px; } .third-round { left: 50px; } .first-round .radius { color: #888; } .second-round .radius { color: #BEBEBE; } .third-round .radius { color: #D5D5D5; } .loading { margin-left: 6px; position: relative; } .mobile-tips { width: 120px; } .mobile-tips .logo { width: 120px; height: 56px; background: transparent url('//p.qpic.cn/qqconadmin/0/b095d8d0ad144de3943f5dcba95a9624/0') no-repeat; background-size: cover; filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='//p.qpic.cn/qqconadmin/0/b095d8d0ad144de3943f5dcba95a9624/0', sizingMethod='scale'); } .qim.mobile-tips .logo { width: 120px; height: 120px; background: transparent url('//p.qpic.cn/qqconadmin/0/7a5e387108084542861fdd048c6a4748/0') no-repeat; background-size: cover; } .mobile-tips .desc { font-size: 18px; margin-left: -4px; } .mobile-tips .box { width: 8px; height: 8px; line-height: 8px; } .mobile-tips .first-round { left: 0; } .mobile-tips .second-round { left: 15px; } .mobile-tips .third-round { left: 30px; } .wakeUp { font-size: 12px; margin: 0 -40px; margin-top: 10px; margin-left: -30px; line-height: 18 px; height: 18px; text-align: center; color: #777; } #update_link { color: #12b7f5; } .agree { position: absolute; width: 378px; height: 89px; line-height: 85px; text-align: center; font-size: 30px; top: 300px; left: -4px; display: none; } .agree img { position: absolute; left: 65px; top: 0; } .agree p { position: absolute; right: 85px; top: 20px; font-weight: 550; } </style> <body> <div class="tips" id="m_container"> <div class="logo"></div> <div class="desc clearfix"><span id="going_wording">正在前往QQ</span> <span class="loading"> <div class="box first-round"> <i class="radius"></i> </div> <div class="box second-round"> <i class="radius"></i> </div> <div class="box third-round"> <i class="radius"></i> </div> </span> </div> <p class="wakeUp" >若无法正常跳转,请先<a id="update_link" href = "javascript:">升级QQ</a>。</p> </div> <script type="text/javascript"> var startTime = Date.now(); var wechatInfo = navigator.userAgent.match(/MicroMessenger\/([\d\.]+)/i); var getUrlParam = function(name, href, noDecode) { var re = new RegExp("(?:\\?|#|&)" + name + "=([^&]*)(?:$|&|#)", "i"), m = re.exec(href); var ret = m ? m[1] : ""; return ! noDecode ? decodeURIComponent(ret) : ret }; var jump_from = getUrlParam("jump_from", location.href); var auth_key = getUrlParam("auth", location.href); var app_name = getUrlParam("app_name", location.href); var auth_sig = getUrlParam("authKey", location.href); var isQR = getUrlParam("qr", location.href) === '1'; var isQim = app_name === 'qim'; if(isQim){ document.getElementById('update_link').innerHTML = '升级DOV'; document.getElementById('going_wording').innerHTML = '正在前往DOV'; document.title = 'DOV-无乐不作'; var m_container = document.getElementById('m_container'); m_container.setAttribute('class',m_container.getAttribute('class') + ' qim'); } var reportData = function(nvalue, error) { var img = new Image(); var str = "//cgi.pub.qq.com/report/bnl?data=" + 0 + "," + nvalue + "," + (error || 0) + "," + p; img.src = str }; var speed = { report: function(f1, f2, f3, f4, time) { var ISD_REPORT_URL = "//isdspeed.qq.com/cgi-bin/r.cgi?"; var isdTransport = new Image(); var reportData = f4 + "=" + time; var url = ISD_REPORT_URL + "flag1=" + f1 + "&flag2=" + f2 + "&flag3=" + f3 + "&" + reportData; isdTransport.src = url } }; function animateRound(dom, initialState, max_top, min_top, speed) { dom.style.top = initialState + 'px'; var isUp = true; setInterval(function () { var top = parseInt(dom.style.top); if (isUp) { if (max_top < top) { top -= 1; } else { isUp = false; top += 1; } } else { if (min_top > top) { top += 1; } else { isUp = true; top -= 1; } } dom.style.top = top + 'px'; }, speed); } var ua = navigator.userAgent; var p; var REGEXP_IOS_QQ = /(iPad|iPhone|iPod).*? QQ\/([\d\.]+)/; var isiOSMQ = REGEXP_IOS_QQ.test(ua); if(ua.indexOf('QIM') > -1 || ua.indexOf('DOV') > -1){ isiOSMQ = false; } var isSafari = ua.indexOf("Safari") > -1; var mobile_q_jump = { android:"//im.qq.com", ios:"itms-apps://itunes.apple.com/cn/app/qq-2011/id444934666?mt=8", winphone:"//www.windowsphone.com/zh-cn/store/app/qq/b45f0a5f-13d8-422b-9be5-c750af531762", pc:"//mobile.qq.com/index.html" }; if(isQim){ mobile_q_jump = { android:"http://dov.qq.com", ios:"itms-apps://itunes.apple.com/cn/app/dov/id1334674854?mt=8", winphone:"http://dov.qq.com", pc:"http://dov.qq.com" }; } if(typeof type == "undefined") type = 1; if(ua.indexOf("Android")>-1){ p = "android"; } else if(ua.indexOf("iPhone")>-1 || ua.indexOf("iPad")>-1 || ua.indexOf("iPod")>-1){ p = "ios"; } else if(ua.indexOf("Windows Phone") > -1 || ua.indexOf("WPDesktop") > -1){ p = "winphone"; } else { p = "pc"; } if(p == "ios"){ if(history.pushState && !isiOSMQ) history.pushState({},"t","#"); } else if(p == "pc" && qsig != "undefined"){ window.open(qsig + "&jump_from=" + jump_from,"_self"); } function checkWechat(version){ var v = version.split('.'); var version656 = (6 * 1000 * 1000) + (5 * 1000 ) + 6; var newVersion = (v[0] * 1000000) + (v[1] * 1000) + (v[2]); return newVersion >= version656; } document.querySelector('.tips').classList.add('mobile-tips') document.querySelector('.tips').style.display = "block" var rounds = document.querySelectorAll('.box'); for (var i = 0, len = rounds.length; i < len; i++) { var aspeed = 50; (function (i) { setTimeout(function () { animateRound(rounds[i], 2, -1, 5, aspeed); }, 5 * (i + 1) * (aspeed - 10)); })(i); } document.getElementById("update_link").onclick = function(){ var jumpUrl = mobile_q_jump; if(jumpUrl) window.open(jumpUrl,"_self"); } if(wechatInfo && checkWechat(wechatInfo[1])){ var doLaunch = function () { setTimeout(function() { var url = ''; if(p == "ios" && sid == 2){ var scheme = 'mqqapi'; if(isQim){ scheme = 'qimapi'; } url = scheme + "://card/show_pslcard?src_type=internal&version=1&uin="+ rawuin +"&card_type=group&source=qrcode&jump_from=" + jump_from + "&auth=" + auth_key +"&authSig=" + auth_sig + "&source_id=" + (isQR ? '2_40002' : '2_40001'); } else if(p !== "pc"){ var url = window.location.href.split("&"); var kParam = getUrlParam("k", location.href); var scheme = 'mqqopensdkapi'; if(isQim){ scheme = 'qimopensdkapi'; } if(p=='ios'){ url = scheme + "://bizAgent/qm/qr?url=" + encodeURIComponent("http://qm.qq.com/cgi-bin/qm/qr?k=" + kParam+"&jump_from=" + jump_from + "&auth=" + auth_key+ "&app_name=" + app_name+"&authSig=" + auth_sig + "&source_id=" + (isQR ? '2_40002' : '2_40001')) ; }else{ url = scheme + "://bizAgent/qm/qr?url=" + encodeURIComponent("https://qm.qq.com/cgi-bin/qm/qr?k=" + kParam+"&jump_from=" + jump_from + "&auth=" + auth_key+ "&app_name=" + app_name+"&authSig=" + auth_sig + "&source_id=" + (isQR ? '3_40002' : '3_40001')) ; } } WeixinJSBridge.invoke('launchApplication', { "schemeUrl" : url }, function (res) { if(res && res.err_msg === 'launchApplication:fail'){ var jumpUrl = mobile_q_jump
; reportData(11780, 1); if(jumpUrl) { setTimeout(function(){ window.open(jumpUrl,"_self"); },0); } } }); },500); } if(window.WeixinJSBridge){ doLaunch(); }else{ document.addEventListener('WeixinJSBridgeReady', function (){ doLaunch(); }); } }else if(type == 1){ var isSuccess = true; var f = document.createElement("iframe"); f.style.display = "none"; document.body.appendChild(f); reportData(11780); f.onload = function(){ isSuccess = false; }; setTimeout(function(){ if(p == "ios" && sid == 2){ var scheme = 'mqqapi'; if(isQim){ scheme = 'qimapi'; } var iosUrl = scheme + "://card/show_pslcard?src_type=internal&version=1&uin="+ rawuin +"&card_type=group&source=qrcode&jump_from=" + jump_from + "&auth=" + auth_key+"&authSig=" + auth_sig + "&source_id=" + (isQR ? '2_40002' : '2_40001'); if(isSafari){ location.href = iosUrl; } else{ f.src = iosUrl; } } else if(p != "pc"){ var url = window.location.href.split("&"); var kParam = getUrlParam("k", location.href); var scheme = 'mqqopensdkapi'; if(isQim){ scheme = 'qimopensdkapi'; } if(p=='ios'){ f.src = scheme + "://bizAgent/qm/qr?url=" + encodeURIComponent("http://qm.qq.com/cgi-bin/qm/qr?k=" + kParam+"&jump_from=" + jump_from + "&auth=" + auth_key+ "&app_name=" + app_name+"&authSig=" + auth_sig + "&source_id=" + (isQR ? '2_40002' : '2_40001')) ; }else{ f.src = scheme + "://bizAgent/qm/qr?url=" + encodeURIComponent("https://qm.qq.com/cgi-bin/qm/qr?k=" + kParam+"&jump_from=" + jump_from + "&auth=" + auth_key + "&app_name=" + app_name+"&authSig=" + auth_sig + "&source_id=" + (isQR ? '3_40002' : '3_40001')) ; } } if(sid == 2 && p != "pc" && !isQim){ document.title = "申请加入QQ群"; document.getElementById("m_container").style.display = "block"; } var now = Date.now(); setTimeout( function(){ if((p == "ios" && (!isiOSMQ || isQim) && Date.now() - now < 2000) || (p == "android" && (!isSuccess || isQim)) || ((p == "winphone" && Date.now() - now < 2000))){ var jumpUrl = mobile_q_jump
; reportData(11780, 1); if(jumpUrl) { setTimeout(function(){ window.open(jumpUrl,"_self"); },800); } } } , 1500); },1500); } speed.report("7832", "19", "2", "1", Date.now() - window.startTime); </script> </body> </html>
简单看了下,大概是判断设备,给出不同提示,没问题就会直接跳转到加群页面。
以上算是完整的流程,在此记录下。
有几个地方我没搞懂
10086.cn的那个页面跳转规则是怎样的?
我测试了下,似乎只有网址如mmb.qq.com
.shejibiji.com的才可以跳转。
为何要分安卓和苹果设备,这两个在聊天记录的跳转逻辑上不一样吗?
还是说苹果手机不可以通过地址跳转到QQ聊天记录?
效果
我入群的时候才几百人,一下午已经快两千人了。
群里面还会通过转发聊天记录的方式推广男人们需要的产品,可以说营销的非常精准了。
而且看群名已经有很多类似的群聊了,根据大数理论,收入应该也是杠杠的。
2023年1月1日 下午5:34 1F
很强,不会弄