马上要过生日了,我尝试在淘宝找到了自己喜欢的同款礼物,点击右上角分享到她的微信,看她能不能读懂我的小心思。这个分享的过程涉及到一段“乱码”(淘口令,后续均以淘口令来称呼),可别小看这段淘口令,它包含了很多信息。今天主要就是分享一下为什么淘宝分享出来的内容是淘口令?淘口令包含了什么信息?以及解析这段工具是怎么制作的。
这是一个系列文章,涉及淘客工具的使用与制作,后续陆续会完成一个整套系列工具的开发,欢迎收藏关注看整个系列。文中可能涉及到链接信息,仅仅只是做程序解释演示使用,并不能直接达到具体商品地址。图片上的二维码地址已做马赛克处理。
为什么是乱码(淘口令)
对于下面这段从淘宝分享出来的文字,你除了能看懂中括号里面的问题,其它的文字是不是也能猜出个八九不离十?这段所谓的乱码文字就是淘口令。
【手撕素肉豆腐干100包素牛排整箱小包装麻辣条休闲好吃不贵的零食】點ゞ撃°鏈ㄣ接,再选择瀏覽●噐○咑№亓;或復ず■淛这句话¢HvpZYBM7U6D¢后咑閞👉淘灬寳👈
微信对于分享有很多限制,有了限制我们可以不被太多的分享信息打扰。有了限制我们就需要认识上面类似火星文的乱码,乱码为什么微信就限制不了了呢?其实也是可以限制的,在去年有一段时间就有淘客反馈,淘口令也被限制分享了。但是对于聊天内容这个还是比较容易误伤。
淘口令中有什么
上述一段文字你认识或者不认识的汉字或者符号其实都是修饰文字,里面的关键信息只有“¢HvpZYBM7U6D¢”这一句淘口令才是关键信息,这个类似与链接,其实也可以叫短链接。淘口令中首先会对应出商品链接,商品标题等信息都可以查询出来,这里我们用代码来识别一下这个淘口令。看一下代码怎么写?
const { TopClient: ApiClient } = require('./lib/api/topClient.js'); // 官方可以下载到 SDK
/**
* 按照自己的实际情况配置 KEY SECRET
*/
const client = new ApiClient({
'appkey': APP_KEY,
'appsecret': APP_SECRET,
'REST_URL': 'http://gw.api.taobao.com/router/rest'
});
const tpwdQuery = tpwd => {
return new Promise((resolve, reject) => {
client.execute('taobao.wireless.share.tpwd.query', {
'password_content': tpwd
}, (err, response) => {
if (!err) {
resolve(response)
} else {
reject(err);
}
})
})
}
tpwdQuery('¢HvpZYBM7U6D¢')
.then(res => {
/**
* content: 商品标题
* native_url: 淘宝Schema地址
* pic_url: 商品主图
* thumb_pic_url: 商品主图缩略图
* url: 商品链接(非商品原始链接)
*/
console.log(res);
})
通过代码解析我们可以看到能拿到商品的图片链接和标题图片,但是这里的商品链接不是最原始链接。上面这个链接解析出来得到的是一个可以内部券的链接,通过这个解析得到的链接可以领取一张优惠券。这里我们主要讲述的不是领券,而是要继续解析得到的参数内容,看怎么得到商品原始链接。
要得到原始链接我们需要模拟请求一下淘口令解析出来的 url。这里我们使用了 sdk 中用的 request 包。
const request = require('request');
/**
* 模拟请求获得商品详情链接
*/
function getDetailUrl(url, referer) {
let options = {
url,
headers: {
'User-Agent': 'Mozilla/5.0 (iPhone; CPU iPhone OS 11_0 like Mac OS X) AppleWebKit/604.1.38 (KHTML, like Gecko) Version/11.0 Mobile/15A372 Safari/604.1',
}
}
referer && (options.headers.Referer = referer);
return new Promise((resolve, reject) => {
request(options, (err, response) => {
if (!err) {
resolve(response)
} else {
reject(err);
}
})
})
}
/**
* 获取原始链接 https?://detail(\.m)?\.taobao|tmall\.com
*/
const getOriginUrl = tpwd => {
return tpwdQuery(tpwd)
.then(response => {
// 通过解析淘口令的URL再继续解析获得商品本身地址
return getDetailUrl(response.url)
})
.then(response => {
const url = response.request.uri.href;
// s.click 地址
if (/s\.click\./.test(url)) {
try {
const nextUrl = response.body.match(/(?<=var real_jump_address = ').*(?=')/)[0].replace(/amp;/g, '');
return getDetailUrl(nextUrl, url)
.then(response => {
return response.request.uri.href;
});
} catch (e) {
return Promise.reject(e);
}
}
return url;
})
.then(url => {
return url;
})
}
getOriginUrl('¢HvpZYBM7U6D¢')
.then(res => {
console.log(url); // 这里呢到的就是商品的原始链接了
})
上面的代码中存在一个问题,就是对于 uland.taobao.com 的解析不能直接拿到商品信息,这个里面存在的信息后续在制作另外一个工具的时候再具体讲解,这里暂时只是做普通淘口令以及非领券淘口令的解析。
工具有什么用途
局部功能是我们解析了淘口令得到了商品链接,整理功能是我们通过商品链接再进行一次定向查询就可以得到这个商品是否存在内部券以及返利信息,这也就是我为什么做工具,如果你正在研究工具制作,或者你正在寻找适合自己的自动化推广工具,或者你想使用工具,可以通过下面图片上的演示地址来体验今晚我们的开发的工具。
后续计划
后续我们要介绍如果通过商品链接自动化查询优惠信息,对于普通用户的你可以了解这个过程是怎么来的,对于开发者来说可以借鉴里面的思想来实现一个自己的工具。感兴趣的你可以点击关注或者收藏,定期更新后续制作过程。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。