您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
自动下单
// ==UserScript== // @name 半自动下单 // @namespace zlh.com // @include https://detail.1688.com/offer/* // @version 2 // @grant none // @description 自动下单 // ==/UserScript== window.onload = function () { console.log("半自动下单开始"); //获取属性参数 function GetQueryString(name) { var reg = new RegExp('(^|&)' + name + '=([^&]*)(&|$)'); var r = window.location.search.substr(1).match(reg); if (r != null) return urldecode(r[2]); return null; } var strname = GetQueryString('name'); console.log(strname); var arrname = strname.split('__'); var n = GetQueryString('n'); var arrlen = arrname.length; if (n >= arrlen) { //已全部加入购物车,跳转到购物车页面 window.location.href = 'https://cart.1688.com/cart.htm?&status=' + n+'&name='+strname; } console.log('断点1'); var name = arrname[n].split('_') [2]; var num = arrname[n].split('_') [1]; var m = eval(n) + 1; if (arrlen != m) { var product = arrname[m].split('_') [0]; } else { var product = arrname[n].split('_') [0]; } //执行选中属性 console.log(name); if (name && name!="noattrname") { console.log('可选属性名'); var ul = document.getElementsByClassName('list-leading'); // alert(ul.length); if (ul.length != 0) { console.log(ul.length); var li = ul[0].getElementsByTagName('li'); var leng = li.length; for (var j = 0; j < leng; j++) { var div = li[j].getElementsByTagName('div') [0]; var hax = div.getAttribute('data-unit-config'); var str = JSON.parse(hax); if (str.name.trim() == name.trim()) { var aa = div.getElementsByTagName('a') [0]; aa.click(); var flag = true; //alert(name); } } } if (!flag) { console.log('不选属性名'); var tablesku = document.getElementsByClassName('table-sku') [0]; if(tablesku){ console.log("只有一个属性"); var tbody = tablesku.getElementsByTagName('tbody') [0]; var trs = tbody.getElementsByTagName('tr'); var lenx = trs.length; // alert(lenx); for (var k = 0; k < lenx; k++) { var tdx = trs[k].getElementsByClassName('name') [0]; var spanx = tdx.getElementsByTagName('span') [0]; //如果span里面是图片 if(spanx.getAttribute("class")=="image"){ var content=spanx.getAttribute("title").trim(); }else{ var content=spanx.innerHTML.trim(); } var tdamount = trs[k].getElementsByClassName('amount') [0]; if ( content== name.trim()) { //就点击Num下 console.log(spanx.innerHTML.trim()); var upx = tdamount.getElementsByClassName('amount-up') [0]; for (var l = 0; l < num; l++) { upx.click(); } console.log(l); //这是数量 }else{ var flag = true;//参数写noattrname } } }else{ console.log("没有一个属性"); var nonameup=document.getElementsByClassName('amount-up') [0]; for (var q = 0; q < num; q++) { nonameup.click(); } //alert(i); console.log(q); } } } else { var flag = true; } //执行选择数量 console.log(num); if (num && flag) { //找到正确的对象 var amount = document.getElementsByClassName('table-sku') [0]; if(amount){ var up = amount.getElementsByClassName('amount-up') [0]; for (var i = 0; i < num; i++) { up.click(); } console.log(i); }else{ var up = document.getElementsByClassName('amount-up') [1];//第二个amount_up console.log(up); for (var i = 0; i < num; i++) { up.click(); } console.log(i); } } //执行点击加入购物车 if (num) { var cart = document.getElementsByClassName('do-cart') [0]; var spancart=cart.getElementsByTagName("span")[0]; spancart.click(); var cartflag=true; console.log('cart'); } //如果num存在就继续添加 if (cartflag) { n++; var url = window.location.href; console.log(url); var index = url.lastIndexOf('&'); var newurl = url.substring(0, index); //替换产品id var reg = /\/[0-9]+/; product = '/' + product; var str = newurl.replace(reg, product); setTimeout(function(){ window.location.href=str+"&n="+n; },10000); } } //js解php的url编码 function urldecode(encodedString) { var output = encodedString; var binVal, thisString; var myregexp = /(%[^%]{2})/; function utf8to16(str) { var out, i, len, c; var char2, char3; out = ""; len = str.length; i = 0; while(i < len) { c = str.charCodeAt(i++); switch(c >> 4) { case 0: case 1: case 2: case 3: case 4: case 5: case 6: case 7: out += str.charAt(i-1); break; case 12: case 13: char2 = str.charCodeAt(i++); out += String.fromCharCode(((c & 0x1F) << 6) | (char2 & 0x3F)); break; case 14: char2 = str.charCodeAt(i++); char3 = str.charCodeAt(i++); out += String.fromCharCode(((c & 0x0F) << 12) | ((char2 & 0x3F) << 6) | ((char3 & 0x3F) << 0)); break; } } return out; } while((match = myregexp.exec(output)) != null && match.length > 1 && match[1] != '') { binVal = parseInt(match[1].substr(1),16); thisString = String.fromCharCode(binVal); output = output.replace(match[1], thisString); } //output = utf8to16(output); output = output.replace(/\\+/g, " "); output = utf8to16(output); return output; }