立刻要過生日了,我嘗試在淘寶找到了本身喜歡的同款禮物,點擊右上角分享到她的微信,看她能不能讀懂個人當心思。這個分享的過程涉及到一段「亂碼」(淘口令,後續均以淘口令來稱呼),可別小看這段淘口令,它包含了不少信息。今天主要就是分享一下爲何淘寶分享出來的內容是淘口令?淘口令包含了什麼信息?以及解析這段工具是怎麼製做的。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
後續咱們要介紹若是經過商品連接自動化查詢優惠信息,對於普通用戶的你能夠了解這個過程是怎麼來的,對於開發者來講能夠借鑑裏面的思想來實現一個本身的工具。感興趣的你能夠點擊關注或者收藏,按期更新後續製做過程。