馬上要過生日了,我嘗試在淘寶找到了自己喜歡的同款禮物,點擊右上角分享到她的微信,看她能不能讀懂我的小心思。這個分享的過程涉及到一段“亂碼”(淘口令,后續均以淘口令來稱呼),可別小看這段淘口令,它包含了很多信息。今天主要就是分享一下為什么淘寶分享出來的內容是淘口令?淘口令包含了什么信息?以及解析這段工具是怎么制作的。
這是一個系列文章,涉及淘客工具的使用與制作,后續陸續會完成一個整套系列工具的開發,歡迎收藏關注看整個系列。文中可能涉及到鏈接信息,僅僅只是做程序解釋演示使用,並不能直接達到具體商品地址。圖片上的二維碼地址已做馬賽克處理。
為什么是亂碼(淘口令)
對於下面這段從淘寶分享出來的文字,你除了能看懂中括號里面的問題,其它的文字是不是也能猜出個八九不離十?這段所謂的亂碼文字就是淘口令。
【手撕素肉豆腐干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 的解析不能直接拿到商品信息,這個里面存在的信息后續在制作另外一個工具的時候再具體講解,這里暫時只是做普通淘口令以及非領券淘口令的解析。
工具有什么用途
局部功能是我們解析了淘口令得到了商品鏈接,整理功能是我們通過商品鏈接再進行一次定向查詢就可以得到這個商品是否存在內部券以及返利信息,這也就是我為什么做工具,如果你正在研究工具制作,或者你正在尋找適合自己的自動化推廣工具,或者你想使用工具,可以通過下面圖片上的演示地址來體驗今晚我們的開發的工具。
后續計划
后續我們要介紹如果通過商品鏈接自動化查詢優惠信息,對於普通用戶的你可以了解這個過程是怎么來的,對於開發者來說可以借鑒里面的思想來實現一個自己的工具。感興趣的你可以點擊關注或者收藏,定期更新后續制作過程。