// ==UserScript== // @name AmazonCN_Ship_Track // @namespace http://tampermonkey.net/ // @version 0.1 // @description 支持在亚马逊中国的"跟踪订单"里直接展示部分承运商(目前支持EMCS和通关网)的货运信息, 暂不支持DHL和转顺丰后的信息 // @author You // @match *://www.amazon.cn/gp/your-account/ship-track/* // @icon data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw== // @grant GM_xmlhttpRequest // @downloadURL https://update.greasyfork.icu/scripts/427581/AmazonCN_Ship_Track.user.js // @updateURL https://update.greasyfork.icu/scripts/427581/AmazonCN_Ship_Track.meta.js // ==/UserScript== (function() { 'use strict'; const append_info = (text_) => { const html_ = `

运单信息

`; const p_el = document.querySelector('h3.notifications-box-header'); p_el.insertAdjacentHTML('beforebegin', html_); }; const load_status = { 'HS Code': (track_number)=>{ const url = `https://new.wherexpress.com/index.php?r=track%2Findex&assbillno=${track_number}`; GM_xmlhttpRequest({ method: 'GET', url: url, headers: { 'Referer': top.location.href }, anonymous: false, onload : function(resp){ const text_ = resp.responseText; const regexp = /
  • <\/span>(\d+\-\d+\-\d+)<\/span> (\d+\:\d+\:\d+)<\/span> (.+?)<\/span><\/li>/g; const result_ = [...text_.matchAll(regexp)]; const info_list = result_.map((item)=>{ const time_ = new Date(item[1]+' '+item[2]); const msg_ = item[3]; return `
  • ${time_}${msg_}
  • `; }).reverse().join(''); append_info(info_list); } }); }, 'ECMS Express': (track_number)=>{ const url = `https://www.ecmsglobal.com/brige/getTarcking?orderNumber=${track_number}`; GM_xmlhttpRequest({ method: 'POST', url: url, headers: { 'Referer': top.location.href }, anonymous: false, onload : function(resp){ const json_ = JSON.parse(resp.responseText); const info_list = json_.orderInfo[0].infoList.map((info)=>{ const time_ = new Date(info.createDateTime).toLocaleDateString(); const msg_ = info.customDescription; return `
  • ${time_}${msg_}
  • `; }).reverse().join(''); append_info(info_list); } }); } } const [carrier, track_number] = (() => { const text_ = document.querySelector('.ship-track-grid-subtext').textContent; let carrier, track_number; if(/配送商:\s*([\w\s]+),.+\#\:\s*(\w+)/.test(text_)){ carrier = RegExp.$1; track_number = RegExp.$2; } return [carrier, track_number]; })(); if(carrier) { load_status[carrier](track_number); }; })();