Скрипты на JavaScript для Алиэкспресс

Тема закреплена бессрочно

Пользуетесь ли этими скриптами?

  • Да

    Голосов: 290 64,4%
  • Нет

    Голосов: 160 35,6%

  • Всего проголосовало
    450
Послушай, а почему например при авторизации на Али нельзя отправить одну строку выдраную например из фидлера? Ведь в скрипте по сути происходит автозаполнение полей логин-пароль ну и собственно нажатие кнопки войти.
Пробовал передавать эти параметры одной строкой или там какие-то подводные камни с этим связаны?
Можно, конечно. Разберись, сделай строку и выложи сюда - все тебе спасибо скажут.
 
  • Like
Реакции: eddo, krysa и BakeaCake
Можно, конечно. Разберись, сделай строку и выложи сюда - все тебе спасибо скажут.
Попробую, думал просто реально ли это. А как на JS это лучше запустить? Там ведь что-то вроде такого будет:
ali.com/login.php?pass=123
Не подскажешь как такие ссылки лучше запускать?
 
Прошу прощения, не в тему. Ваш метод про оплату вебмани от 11 сентября 2020 г. актуально или нет, спасибо
 
Такс, не судите строго, особенно @Andronio. Я тут тоже сляпал скрипт, ну как сляпал -переделал код @Andronio. Собственно, функция скрипта - это ускорение оплаты на ЯД: проход логина и возврат на али. Не стал, автоматизировать нажатие кнопки оплатить, мне так неудобно, поэтому ее жмем руками и вводим код из смс. Но если будут заявки-попробую допилить.
ПС
Я в java или seleniume не шарю ;)
Java:
// ==UserScript==
// @name         Extra pay by YM
// @namespace http://tampermonkey.net/
// @version 0.1
// @description Авторизация на Yandex
// @Author Me
// @match https://money.yandex.ru/payments/internal/success*
// @match https://money.yandex.ru/payments/internal/confirmation*
// @match https://passport.yandex.ru/auth*
// @match https://shoppingcart.aliexpress.com/order/payResult.htm?cashierRequestNo*
// @GranT none
// ==/UserScript==

let yandexLogin = "";
let yandexPass = "";



(function repeat() {
'use strict';
let href = window.location.href;

if (window.location.href.indexOf("https://money.yandex.ru/payments/internal/confirmation") > -1) {
$(function enter(){
document.getElementsByClassName("control button2 button2_view_classic button2_size_m button2_theme_pseudo button2_type_link")[0].click();
});
}

if (/passport\.yandex\.ru\/auth/.test(href)) {
let newForm = document.getElementById("passp-field-login");
if (newForm) {
document.querySelector("form").submit();
return;
} else {
document.getElementById("login").value = yandexLogin;
document.getElementById("passwd").value = yandexPass;
document.querySelector(".js-submit-button").click();
}
}

if (/shoppingcart\.aliexpress\.com\/order\/payResult\.htm/.test(href)) {

let mybtn = document.querySelectorAll(".operation-container > .next-btn-primary")

if (mybtn.length != 0) {
mybtn[1].click();
} else {
setTimeout(repeat, 500);
}
}

if (window.location.href.indexOf("https://money.yandex.ru/payments/internal/success") > -1) {
window.location.href = "https://trade.aliexpress.com/orderList.htm";

}

})();
Отлично скрипт работал, но перестал с новыми юмани. Может уже есть исправленный?
 
  • Like
Реакции: Rasel
@Andronio, помоги, пожалуйста)
В скрипте для вытягивая информации о заказе, хочу сделать так, чтобы он картинку вытасиквал и вставлял в эксель, но юзаю гугл шитс, туда нужно картинку вставлять по формуле только, короче:
Код:
            let picURL = product[num].querySelectorAll(".pic.s50 > img")[0].src;
            if (picPrefix) picURL = "picURL=" + picURL;
У меня сейчас это выглядит так:
Код:
picURL=https://ae01.alicdn.com/kf/U5bc88268085b42579345b6200d44c9fdx.jpg_50x50.jpg
Что нужно и на что изменить, чтобы по итогу было вот так:
Код:
=IMAGE("https://ae01.alicdn.com/kf/U5bc88268085b42579345b6200d44c9fdx.jpg_50x50.jpg")
?
У меня уже вроде почти получилось, но он начал ругаться на ковычки, ссылку внутри скобок надо обязательно брать в ковычки и он не дает, буду очень благодарен за помощь.
можешь поделиться скриптом, или расскажи как происходит экспорт в гугл шитс
 
можешь поделиться скриптом, или расскажи как происходит экспорт в гугл шитс
Экспорта никакого нет, использую скрипт для вытягивания информации из заказа от Andronio, он тут есть в шапке.
 
Подскажите, пожалуйста. Скрипт вытягивания треков ставит текущую дату, а не из заказов. В чем может быть дело?
 
уже увидел. А как today на date поменять из заказа?
Никак. Этот скрипт для абузеров - купил, сразу заказы записал и забыл. Заказы с сегодняшней датой. Зачем потом копировать дату?

Ну если я сегодня хочу с акка весь список взять, к примеру.
Выше кнопок заказов есть кнопка все заказы.
 
  • Like
Реакции: jam
Никак. Этот скрипт для абузеров - купил, сразу заказы записал и забыл. Заказы с сегодняшней датой. Зачем потом копировать дату?


Выше кнопок заказов есть кнопка все заказы.
наверное если только хаходишь аккаунты проверять
 
Скрипт заполняет случайными данными адрес США
Спасибо за скрипты.
А можно сделать что бы выбирались только безналоговые штаты?
Аляска, Делавэр, Монтана, Нью-Гемпшир, Орегон.
 
Если логин-пароль хранится в экселе в соседних ячейках, то для входа на алиэкспресс (login.aliexpress.com) достаточно в экселе скопировать две соседние ячейки и сделать ctrl+v -> enter (или кнопка). Получается одно действие вместо двух.
Cкрипт, понимает логин-пароль с двоеточием и табуляцией, понимает email вида abc@xyz.mail.ua
Для ВХОДА вставить логин-пароль и нажать Enter СЛЕВА (большая кнопка в виде перевернутой буквы Г).
Для РЕГИСТРАЦИИ вставить логин-пароль и нажать Enter СПРАВА на дополнительной цифровой клавиатуре, либо shift+Enter (большая кнопка в виде перевернутой буквы Г) - для ноутбуков, где нет цифровой клавиатуры.
Также работают экранные кнопки под полем ввода.

Код:
// ==UserScript==
// @name         Aliexpress Register/Login
// @namespace    http://tampermonkey.net/
// @version      0.2
// @description  try to take over the world!
// @author       Andronio
// @match        https://login.aliexpress.com/*
// @match        https://login.aliexpress.ru/*
// @grant        none

// ==/UserScript==

(function() {
    'use strict';

    var div = document.createElement('div');
    div.className = 'myBox';

    div.innerHTML += `
    <input type="text" id="namepass"></br>
    <input type="button" id="rega" class="mybutton" value="Рега">
    <input type="button" id="vhod" class="mybutton" value="Вход">
    `;

// Стили
    var styles = `
    .myBox {
    position: fixed;
    top: 0;
    right: 0;
    background: white;
    box-shadow: 1px -1px 4px 1px;
    max-width: 40%;
    max-height: 400px;
    padding: 10px 20px;
    overflow-y: auto;
    overflow-x: hidden;
    z-index:9999;
    }

    .mybutton {
    display: inline;
    padding: 5px 10px;
    margin-right:auto;
    cursor:pointer;
    }`

    var styleSheet = document.createElement("style")
    styleSheet.type = "text/css"
    styleSheet.innerText = styles
    document.head.append(styleSheet)
    document.body.append(div);

    let mybutton1 = document.getElementById("rega");
    let mybutton2 = document.getElementById("vhod");
    mybutton1.addEventListener('click', regaFunc);
    mybutton2.addEventListener('click', vhodFunc);
    let mytext = document.getElementById("namepass");
    mytext.addEventListener('keydown', event => {
        if (event.keyCode == "13") {
            if (event.code == "Enter" && !event.shiftKey) document.getElementById('vhod').click();
            if (event.code == "NumpadEnter" || event.code == "Enter" && event.shiftKey)  document.getElementById('rega').click();
        }
    });
    mytext.focus();
})();

// Функция регистрации
function regaFunc () {
    let namepass = document.getElementById("namepass");
    let mass;

    mass = parseString(namepass.value);
    if (mass) {
        document.querySelectorAll(".next-tabs-tab")[0].click();
        let email = document.querySelector(".email");
        let pass = document.querySelector(".password");
        email.setAttribute("value", mass[0]);
        email.dispatchEvent(new Event("change", {bubbles: true}));
        email.dispatchEvent(new Event("blur", {bubbles: true}));

        let nativeInputValueSetter = Object.getOwnPropertyDescriptor(window.HTMLInputElement.prototype, 'value').set;
        nativeInputValueSetter.call(pass, mass[1]);
        pass.dispatchEvent(new Event('change', {bubbles: true}));
        pass.dispatchEvent(new Event('blur', {bubbles: true}));
        setTimeout(waitReady, 200);
    } else alert("Нет логина");
}


// Ждем проверки email при реге
let timeout = 50;
function waitReady() {
    if (document.querySelector(".email-checking")) {
        if (--timeout) return setTimeout(waitReady, 200);
        else return;
    }
    document.querySelector(".submit").click();
}

// Функция входа
function vhodFunc () {
    let namepass = document.getElementById("namepass");
    let mass;

    mass = parseString(namepass.value);
    if (mass) {
        document.querySelectorAll(".next-tabs-tab")[1].click();
        let signName = document.getElementById("fm-login-id");
        let signPass = document.getElementById("fm-login-password");
        let enterButton = document.querySelector(".fm-button.fm-submit.password-login");
        signPass.value = mass[1];
        signName.value = mass[0];
        enterButton.click();
    } else alert("Нет логина");
}

function parseString(str) {
    if (str == "") return null;
    if (/\w+@[\w\.]+\.\w+\t\w+/.test(str)) {
        return str.split('\t');
    } else if (/\w+@[\w\.]+\.\w+:\w+/.test(str)) {
        return str.split(':');
    } else return null;
}
---------Двойное сообщение соединено: ---------
Скрипт для автоматической регистрации на Алиэкспресс по пришлашению/промо-коду.
Cкрипт понимает логин-пароль с двоеточием и табуляцией, понимает email вида abc@xyz.mail.ua
скрипт запускается на --Ссылка удалена--, предназначен для быстрого забивания логина и пароля при реферральной реге друга.

Код:
// ==UserScript==
// @name         Aliexpress Referral autoreg
// @namespace    http://tampermonkey.net/
// @version      0.1
// @description  try to take over the world!
// @author       Andronio
// @match        https://sale.aliexpress.com/__pc/referral_register_success.htm*
// @grant        none
// @noframes
// ==/UserScript==

let timeout = 50;

(function() {
    'use strict';

    var div = document.createElement('div');
    div.className = 'myBox';

    div.innerHTML += `
    <input type="text" id="namepass"></br>
    <input type="button" id="rega" class="mybutton" value="Рега">
    `;

// Стили
    var styles = `
    .myBox {
    position: fixed;
    top: 0;
    right: 0;
    background: white;
    box-shadow: 1px -1px 4px 1px;
    max-width: 40%;
    max-height: 400px;
    padding: 10px 20px;
    overflow-y: auto;
    overflow-x: hidden;
    z-index:9999;
    }

    .mybutton {
    display: inline;
    padding: 5px 10px;
    margin-right:auto;
    cursor:pointer;
    }`

    var styleSheet = document.createElement("style")
    styleSheet.type = "text/css"
    styleSheet.innerText = styles
    document.head.append(styleSheet)
    document.body.append(div);

    let mybutton2 = document.getElementById("rega");
    mybutton2.addEventListener('click', regaFunc);
    let mytext = document.getElementById("namepass");
    mytext.addEventListener('keydown', event => {
        if (event.keyCode == "13") {
            document.getElementById('rega').click();
        }
    });
    mytext.focus();
    btnRega();
})();

function btnRega() {
    'use strict';
    let btn = document.querySelector(".claimbtn");
    if (!btn) {
        if (--timeout) return setTimeout(btnRega, 200);
        else return;
    }
    timeout = 50;
    btn.click();
    setMyFocus();
}

function setMyFocus(){
    'use strict';
    if (!document.getElementById("ws-xman-register-email") || !document.getElementById("ws-xman-register-password")) {
        document.getElementById("namepass").focus();
        if (--timeout) return setTimeout(setMyFocus, 200);
        else return;
    }
    document.getElementById("namepass").focus();
}

function regaFunc() {
    let signName    = document.getElementById("ws-xman-register-email");
    let signPass    = document.getElementById("ws-xman-register-password");
    let namepass    = document.getElementById("namepass");
    let mass;

    if (namepass.value == "") return alert("Нет логина");
    if (/\w+@[\w\.]+\.\w+\t\w+/.test(namepass.value)) {
        mass = namepass.value.split('\t');
    } else if (/\w+@[\w\.]+\.\w+:\w+/.test(namepass.value)) {
        mass = namepass.value.split(':');
    } else {
        return alert("Нет логина");
    }
    signName.value = mass[0];
    signName.dispatchEvent(new Event('change', {bubbles: true}));
    signName.dispatchEvent(new Event('blur', {bubbles: true}));
    signPass.value = mass[1];
    signPass.dispatchEvent(new Event('change', {bubbles: true}));
    signPass.dispatchEvent(new Event('blur', {bubbles: true}));
    timeout = 50;
    waitReady();
}

// Ждем проверки email при реге
function waitReady() {
    if (document.getElementById("ws-xman-email-checking").style.display != "none") {
        if (--timeout) return setTimeout(waitReady, 200);
        else return;
    }
    document.getElementById("ws-xman-register-submit").click();
}
Приветик! Попробовала твой скрип для регистрации тот что в начале и почему то ничего не происходит когда вствляешь в поле мыло и пароль через двоеточие, когда строчки пустые он выдает окно, где написанно нет логина, а когда есть, ничего не происходит. Подскажи пожалуйста в чем может быть проблема
 

Вложения

  • изображение_2020-11-20_173105.png
    изображение_2020-11-20_173105.png
    39,6 KB · Просмотры: 45
Спасибо за скрипты.
А можно сделать что бы выбирались только безналоговые штаты?
Аляска, Делавэр, Монтана, Нью-Гемпшир, Орегон.
Конкретно в этом - нет. Это надо переписывать часть с выбором.
---------Двойное сообщение соединено: ---------
Приветик! Попробовала твой скрип для регистрации тот что в начале и почему то ничего не происходит когда вствляешь в поле мыло и пароль через двоеточие, когда строчки пустые он выдает окно, где написанно нет логина, а когда есть, ничего не происходит. Подскажи пожалуйста в чем может быть проблема
Этот скрипт уже давно старый и не рабочий. Новый все нет времени доделать.
 
  • Like
Реакции: Arni007
Конкретно в этом - нет. Это надо переписывать часть с выбором.
---------Двойное сообщение соединено: ---------

Этот скрипт уже давно старый и не рабочий. Новый все нет времени доделать.
Спасибо за ответ, буду очень ждать :)
 
Ну вот здесь же все расписано с картинками.
---------Двойное сообщение соединено: ---------
Код:
// ==UserScript==
// @name         Aliexpress Order info getter track
// @namespace    http://tampermonkey.net/
// @version      1.0
// @description  Получение информации из заказа и трека
// @author       Andronio
// @match        https://trade.aliexpress.ru/orderList.htm*
// @match        https://trade.aliexpress.ru/order_list.htm*
// @match        https://trade.aliexpress.com/orderList.htm*
// @match        https://trade.aliexpress.com/order_list.htm*
// @noframes
// ==/UserScript==
/*
prodName  - Название товара
picURL    - URL-ссылка на картинку-превью товара
prodPrice - Цена товара
today     - Сегодняшняя дата
orderNum  - Номер заказа
\t        - Табуляция, переход к следующей ячейке
picPrefix - 1 - добавлять префик picURL= для адреса картинки, 0 - не добавлять
track     - Трек-номер заказа
date      - Дата автозакрытия заказа
Строка должна начинаться и заканчиваться символом обратной кавычки
*/
var orderStr  = `prodName + '\t' + picURL + '\t' + prodPrice + '\t' + today +  '\t' + orderNum`;
var trackStr  = `track + '\t' + date`;
let picPrefix = 1;
/*
Далее не трогать
*/
let ordersMass = [];
let trackMass = [];
(function () {
    'use strict';
// Рисуем окно с кнопками
    var div = document.createElement('div');
    div.className = 'mybox';
    let product = document.querySelectorAll('.order-item-wraper');
    let hasTrackable = false;
    if (product.length == 0) {
        div.innerHTML = '<p class="noorders">Нет заказов</p>';
    } else {
        let str = document.body.innerHTML.split("var appealInfoParams = encodeURIComponent('")[1].split("');")[0];
        if (str.match(/\[(\{("\w+":["\w]+,)+"\w+":["\w]+\},){0,30}\{("\w+":["\w]+,)+"\w+":["\w]+\}\]/g)) {
            ordersMass = eval(str);
            ordersMass.forEach(order => {
                if (order.orderStatus == "WAIT_BUYER_ACCEPT_GOODS") {
                    hasTrackable = true;
                }
            });
        }
        div.innerHTML = `<button class="infoGetter" myattr="-1">Все заказы</button>`;
        if (hasTrackable) div.innerHTML +=`<button class="trackGetter" myattr="99" disabled>Треки</button>`;
        for (let i = 0; i < product.length; i++) {
            let productName = product[i].querySelectorAll(".product-title > a.baobei-name")[0].getAttribute("title").substr(0,20);
            div.innerHTML += `<br><button class="infoGetter" myattr="${i}">${i+1} - <span style="color:green">${productName}</span></button>`;
            if (hasTrackable && ordersMass[i].orderStatus == 'WAIT_BUYER_ACCEPT_GOODS')
                div.innerHTML += `<button class="trackGetter" myattr="${i+100}" disabled>Трек</button>`;
        }
    }
    document.body.append(div);
    var styles = `
    .mybox {
    position: fixed;
    top: 0;
    right: 0;
    background: white;
    box-shadow: 1px -1px 4px 1px;
    max-width: 40%;
    max-height: 400px;
    padding: 10px 10px;
    overflow-y: auto;
    overflow-x: hidden;
    z-index:9999;
    }
    .noorders {
    color: red;
    text-align: center;
    font-size: 1.5em;
    padding: 5px;
    margin: 0;
    }
    .infoGetter {
    display: inline;
    margin-right:auto;
    margin-top: 2px;
    cursor:pointer;
    padding: 5px;
    width: 180px;
    text-align: left;
    }
    .trackGetter {
    display: inline;
    margin-right:auto;
    margin-top: 2px;
    cursor:pointer;
    padding: 5px;
    width: 46px;
    text-align: left;
    }
    .greenbutton{
    background-color: LightGreen;
    }`
    var styleSheet = document.createElement("style")
    styleSheet.type = "text/css"
    styleSheet.innerText = styles
    document.head.append(styleSheet)
    div.addEventListener('click', buttonClick);
    if (hasTrackable) getTracks();
})();
function buttonClick(event) {
    let elem = event.target;
    if (elem.tagName != "BUTTON") {
        elem = elem.parentNode;
        if (elem.tagName != "BUTTON") return;
    }
    let orderString;
    let num = +elem.getAttribute('myattr');
    if (num > 98) return trackBuff(num, elem);
    else {
        let product = document.querySelectorAll('.order-item-wraper');
        let productPrice = document.querySelectorAll(".amount-num");
        let orderNumber = document.querySelectorAll(".order-info > .first-row > span.info-body");
        let today = formatDate();
        let prodName, prodPrice, orderNum;
        if (num > -1) {
            // один заказ
            let productName = product[num].querySelectorAll(".product-title > a.baobei-name");
            let picURL = product[num].querySelectorAll(".pic.s50 > img")[0].src;
            if (picPrefix) picURL = "picURL=" + picURL;
            prodName = `=ГИПЕРССЫЛКА("https:\/\/www.aliexpress.ru\/item\/${productName[0].getAttribute("productid")}.html";` +
                `"${productName[0].getAttribute("title").substr(0,80)}")`;
            prodPrice = productPrice[num].innerText.match(/\d+\.\d+/);
            if (prodPrice)
                prodPrice = prodPrice[0].replace(/\./,",");
            else
                prodPrice = productPrice[num].innerText.trim();
            orderNum = orderNumber[num].innerText;
            orderString = eval(orderStr);
        } else {
            // много заказов
            orderString = "";
            for (let num = 0; num < orderNumber.length; num++) {
                let productName = product[num].querySelectorAll(".product-title > a.baobei-name");
                let picURL = product[num].querySelectorAll(".pic.s50 > img")[0].src;
                if (picPrefix) picURL = "picURL=" + picURL;
                prodName = `=ГИПЕРССЫЛКА("https:\/\/www.aliexpress.ru\/item\/${productName[0].getAttribute("productid")}.html";` +
                    `"${productName[0].getAttribute("title").substr(0,80)}")`;
                prodPrice = productPrice[num].innerText.match(/\d+\.\d+/);
                if (prodPrice)
                    prodPrice = prodPrice[0].replace(/\./,",");
                else
                    prodPrice = productPrice[num].innerText.trim();
                orderNum = orderNumber[num].innerText;
                orderString += eval(orderStr);
                orderString += "\r\n";
            }
        }
    }
    navigator.clipboard.writeText(orderString).then(function () {
        console.log('Async: Copying to clipboard was successful!');
        window.mybtn = elem;
        window.mybtn.classList.add("greenbutton");
        setTimeout(() => window.mybtn.classList.remove("greenbutton"), 500);
    }, function (err) {
        console.error('Async: Could not copy text: ', err);
    });
}
function trackBuff(num, elem){
    num -= 100;
    let date, track, orderString = "";
    let trackMassCopy = trackMass.slice();
    if (num > -1) {
        let el = trackMassCopy.find(index => index.id == ordersMass[num].id);
        date = el.date;
        track = el.track;
        orderString = eval(trackStr);
    } else {
        for (let i = 0; i < ordersMass.length; i++) {
            if (ordersMass[i].orderStatus == "WAIT_BUYER_ACCEPT_GOODS") {
                let el = trackMassCopy.shift();
                date = el.date;
                track = el.track;
                orderString += eval(trackStr);
            }
            orderString += "\r\n";
        }
    }
    navigator.clipboard.writeText(orderString).then(function () {
        console.log('Async: Copying to clipboard was successful!');
        window.mybtn = elem;
        window.mybtn.classList.add("greenbutton");
        setTimeout(() => window.mybtn.classList.remove("greenbutton"), 500);
    }, function (err) {
        console.error('Async: Could not copy text: ', err);
    });
}
function getTracks() {
    ordersMass.forEach(order => {
        if (order.orderStatus == "WAIT_BUYER_ACCEPT_GOODS") {
            trackMass.push({id: order.id, track: "", date: ""});
        }
    });
    let requests = trackMass.map(order => fetch(`${location.protocol}//${location.hostname}/order_detail.htm?orderId=${order.id}`));
    Promise.all(requests)
        .then(responses => Promise.all(responses.map(r => r.text())))
        .then(texts => {
            for (let i = 0; i < texts.length; i++) {
                let obj = document.createElement('html');
                obj.innerHTML = texts[i];
                let track = obj.querySelector(".flush-btn").getAttribute("logisticsNo");
                let date = obj.querySelector('.order-reminder');
                if (!track || !date) return alert("Не получил информацию о заказе");
                date = date.innerText.match(/\d{4}-\d\d-\d\d/g);
                if (date.length > 0) date = date[0].replace(/\d\d(\d\d)-(\d\d)-(\d\d)/, '$3.$2.$1');
                else return alert("Не правильная дата в заказе");
                trackMass[i].track = track;
                trackMass[i].date = date;
            }
            document.querySelectorAll(".trackGetter").forEach(elem => elem.removeAttribute("disabled"));
        })
        .catch(err => alert(`Ошибка ${err}`));
}
function formatDate() {
    let date = new Date();
    let dd = date.getDate();
    if (dd < 10)
        dd = '0' + dd;
    let mm = date.getMonth() + 1;
    if (mm < 10)
        mm = '0' + mm;
    let yy = date.getFullYear() % 100;
    if (yy < 10)
        yy = '0' + yy;
    return dd + '.' + mm + '.' + yy;
}

Подскажешь как сделать список заказов в обратном порядке? Чтоб первым был тот что раньше сделан. Спасибо заранее
 
  • Like
Реакции: jam
А есть скрипт (программа) кликер для получения бранд купоны, а то задолбали читеры. Нужный купон не можешь получить.
 
А есть скрипт (программа) кликер для получения бранд купоны, а то задолбали читеры. Нужный купон не можешь получить.
:) А ты не читер становишься со скриптом?
 
  • Like
Реакции: Qant