立刻要过生日了,我尝试在淘宝找到了本身喜欢的同款礼物,点击右上角分享到她的微信,看她能不能读懂个人当心思。这个分享的过程涉及到一段“乱码”(淘口令,后续均以淘口令来称呼),可别小看这段淘口令,它包含了不少信息。今天主要就是分享一下为何淘宝分享出来的内容是淘口令?淘口令包含了什么信息?以及解析这段工具是怎么制做的。javascript
这是一个系列文章,涉及淘客工具的使用与制做,后续陆续会完成一个整套系列工具的开发,欢迎收藏关注看整个系列。文中可能涉及到连接信息,仅仅只是作程序解释演示使用,并不能直接达到具体商品地址。图片上的二维码地址已作马赛克处理。java
对于下面这段从淘宝分享出来的文字,你除了能看懂中括号里面的问题,其它的文字是否是也能猜出个八九不离十?这段所谓的乱码文字就是淘口令。api
【手撕素肉豆腐干100包素牛排整箱小包装麻辣条休闲好吃不贵的零食】點ゞ撃°鏈ㄣ接,再选择瀏覽●噐○咑№亓;或復ず■淛这句话¢HvpZYBM7U6D¢后咑閞👉淘灬寳👈微信
微信对于分享有不少限制,有了限制咱们能够不被太多的分享信息打扰。有了限制咱们就须要认识上面相似火星文的乱码,乱码为何微信就限制不了了呢?其实也是能够限制的,在去年有一段时间就有淘客反馈,淘口令也被限制分享了。可是对于聊天内容这个仍是比较容易误伤。app
上述一段文字你认识或者不认识的汉字或者符号其实都是修饰文字,里面的关键信息只有“¢HvpZYBM7U6D¢”这一句淘口令才是关键信息,这个相似与连接,其实也能够叫短连接。淘口令中首先会对应出商品连接,商品标题等信息均可以查询出来,这里咱们用代码来识别一下这个淘口令。看一下代码怎么写?less
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 包。ui
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 的解析不能直接拿到商品信息,这个里面存在的信息后续在制做另一个工具的时候再具体讲解,这里暂时只是作普通淘口令以及非领券淘口令的解析。url
局部功能是咱们解析了淘口令获得了商品连接,整理功能是咱们经过商品连接再进行一次定向查询就能够获得这个商品是否存在内部券以及返利信息,这也就是我为何作工具,若是你正在研究工具制做,或者你正在寻找适合本身的自动化推广工具,或者你想使用工具,能够经过下面图片上的演示地址来体验今晚咱们的开发的工具。spa
后续咱们要介绍若是经过商品连接自动化查询优惠信息,对于普通用户的你能够了解这个过程是怎么来的,对于开发者来讲能够借鉴里面的思想来实现一个本身的工具。感兴趣的你能够点击关注或者收藏,按期更新后续制做过程。