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

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

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

  • Да

    Голосов: 294 63,9%
  • Нет

    Голосов: 166 36,1%

  • Всего проголосовало
    460
Скрипт заполнения данных платежной карточки.
Данные карты должны быть в формате
5405 1047 0034 3817, 2023/02, 461, IRINA ANDREEVA, MasterCard - Wells Fargo Bank,
Только в таком, другой никак.
А можно от пробелов в номере карты избавиться?
Номер генерируется без пробелов.
 


А можно от пробелов в номере карты избавиться?
Номер генерируется без пробелов.
Замени строки
Код:
    if (/\d{4}\s\d{4}\s\d{4}\s\d{4},\s\d{4}\/\d\d,\s\d{3},\s[\w\s]+,\s/.test(mytext.value)) {
        mass = mytext.value.split(', ');
    } else {
        return alert("Нет данных карты");
    }
на
Код:
    if (/(\d{4}\s\d{4}\s\d{4}\s\d{4})|(\d{16}),\s\d{4}\/\d\d,\s\d{3},\s[\w\s]+,\s/.test(str)) {
        mass = str.split(', ');
    } else {
        return alert("Нет данных карты");
    }
    if (/\d{16}/.test(mass[0])) mass[0] = mass[0].replace(/(\d{4})(\d{4})(\d{4})(\d{4})/,"$1 $2 $3 $4");
---------Двойное сообщение соединено: ---------
@Andronio
а нельзя ли сделать скриптик чтоб в корзине или при плате вебмани не совершалась оплата свыше заданой суммы а то иногда бывает что купишь за полную стоимость еще и барахло какое-то без купона. или что б предупреждение какое-то было. думаю было бы очень полезно. на БАСе такое точно было.

Скрипт перед нажатием кнопки "Оформить" проверяет сумму. Если сумма превышает, то спрашивает подтверждение. Если не превышает, то платится как обычно.
Для доллара и рубля своя установка, если задать ноль, то проверка соответствующей валюты будет выключена.

Код:
let maxPriceUSD = 0.1;   // 0 - отключает проверку
let maxPriceRUB = 50.1;  // 0 - отключает проверку
Так отключена проверка в рублях
Код:
let maxPriceUSD = 0.1;   // 0 - отключает проверку
let maxPriceRUB = 0;  // 0 - отключает проверку

Код:
// ==UserScript==
// @name         Aliexpress cart checker
// @namespace    http://tampermonkey.net/
// @version      0.1
// @description  Оплата не более
// @author       Andronio
// @include      https://shoppingcart.aliexpress.ru/order/confirm_order.htm*
// @include      https://shoppingcart.aliexpress.ru/orders.htm*
// @include      https://shoppingcart.aliexpress.com/order/confirm_order.htm*
// @include      https://shoppingcart.aliexpress.com/orders.htm*
// @grant        none
// ==/UserScript==

let maxPriceUSD = 0.1;   // 0 - отключает проверку
let maxPriceRUB = 50.1;  // 0 - отключает проверку

(function repeat() {
    'use strict';
    let checkBtn = document.getElementById("checkout-button");
    if (!checkBtn) return setTimeout(repeat, 200);
    checkBtn.addEventListener("click", function(event) {
        let totalPrice = document.querySelector(".total-price dl dd").innerText;
        let totalPriceUSD = totalPrice.match(/(?<=US\s\$)\d+\.\d+/g);
        let totalPriceRUB = totalPrice.match(/\d+,\d+(?=\sруб\.)/g);
        if (maxPriceUSD && totalPriceUSD && parseFloat(totalPriceUSD[0]) > maxPriceUSD) {
            if (!confirm(`Сумма оплаты ${totalPriceUSD}$ больше установленной ${maxPriceUSD}$`))
                event.stopPropagation();
        }
        if (maxPriceRUB && totalPriceRUB && parseFloat(totalPriceRUB[0].replace(",",".")) > maxPriceRUB) {
            if (!confirm(`Сумма оплаты ${totalPriceRUB}руб. больше установленной ${maxPriceRUB}руб.`))
                event.stopPropagation();
        }
    });
})();
 
Посидел-посмотрел, что же есть на каждой странице, куда можно воткнуть кнопочки? Оказывается везде есть логитип AliExpress. Долой его!

Код:
// ==UserScript==
// @name         Aliexpress All Currency Changer
// @namespace    http://tampermonkey.net/
// @version      0.1
// @description  Изменяет валюту на Алиэкспресс
// @author       Andronio
// @include      https://*aliexpress.ru/*
// @include      https://*aliexpress.com/*
// @grant        none
// @run-at       document-end
// ==/UserScript==

let myCountry = "KZ";

(function repeat() {
    'use strict';
    let logoPic = document.querySelector(".hm-left");
    if (!logoPic) return setTimeout(repeat, 200);
    logoPic.innerHTML = `<div class="currency-button" data-curr="USD"><span class="css_flag css_us" style="display:inline"><span class="shipping-text" style="display:inline">USD</span></span></div>
                        <div class="currency-button" data-curr="RUB"><span class="css_flag css_ru" style="display:inline"><span class="shipping-text" style="display:inline">RUB</span></span></div>`;
    let style = document.createElement("style");
    style.innerHTML = `.currency-button {
                            display: inline-block;
                            padding: 5px 10px;
                            margin: 20px 0 0 20px;
                            border: 2px solid black;
                            border-radius: 0.5em;
                            cursor:pointer;
                        }

                        .no-modify-btn {background-color: OrangeRed;}

                        .yes-modify-btn {background-color: Lime;}
                            `;
    document.head.append(style);
    logoPic.addEventListener("click", btnClickHandler);
})();



function btnClickHandler(event) {
    'use strict';

    let btn = event.target.closest(".currency-button");
    if (!btn) return;
    let currency = btn.dataset.curr;
    let cookies = document.cookie.split('; ');
    let isNeedModif = false;
    let str;
    for (let i = 0; i < cookies.length; i++) {
        if (cookies[i].startsWith("aep_usuc_f=")) { // Если нашел нужную куку
            let cookie = cookies[i].slice(11).split('&'); // Убираем aep_usuc_f= и разделяем
            cookie = cookie.map(elem => { // Смотрим, что в куке
                if (elem.startsWith("c_tp=")) {
                    if (elem.slice(5) == currency)
                        return elem;
                    else {
                    isNeedModif = true;
                    return "c_tp=" + currency;
                    }
                } else if (elem.startsWith("region=")) {
                    let currCountry = elem.slice(7);
                    if (myCountry == "")
                        return elem;
                    else if (currCountry == myCountry)
                        return elem
                    else {
                        isNeedModif = true;
                        return "region=" + myCountry;
                    }

                } else return elem;
            });
            str = cookie.join("&");
            break;
        }
    }
    if (isNeedModif) {
        if (window.location.hostname.includes("aliexpress.ru")) {
            document.cookie = `aep_usuc_f=${str}; path=/; expires=Tue, 19 Jan 2088 03:14:07 GMT; domain=.aliexpress.ru`;
            window.location.reload();
        } else if (window.location.hostname.includes("aliexpress.com")) {
            document.cookie = `aep_usuc_f=${str}; path=/; expires=Tue, 19 Jan 2088 03:14:07 GMT; domain=.aliexpress.com`;
            window.location.reload();
        } else {alert("Ошибка в скрипте")};
        btn.classList.add("yes-modify-btn");
        setTimeout(() => {btn.classList.remove("yes-modify-btn");}, 300);
        window.location.reload();
    } else {
        btn.classList.add("no-modify-btn");
        setTimeout(() => {btn.classList.remove("no-modify-btn");}, 300);
    }
}
Почему-то валюту меняет а страну доставки c RUS на USA не меняет
 
  • Like
Реакции: bountyk1ller
Почему-то валюту меняет а страну доставки c RUS на USA не меняет
Это страна, которая показывается справа вверху. Она используется только для вычисления цены доставки.
Вот здесь
Код:
let myCountry = "KZ";
Нужно прописать нужную страну, тогда будет меняться. Если оставить пусто, т.е. "", то страна меняться не будет. Для юсы, наверно, нужно US поставить.
 
  • Like
Реакции: Volk7
Посидел-посмотрел, что же есть на каждой странице, куда можно воткнуть кнопочки? Оказывается везде есть логитип AliExpress. Долой его
А можно вариант, где слева будет ещё одна кнопка, с ссылкой на главную страницу Али?
Оказывается, я ей частенько пользуюсь )
---------Двойное сообщение соединено: ---------
...Она используется только для вычисления цены доставки.
Вот я то же заметил, что фактически страна доставки не меняется и её всё равно приходится руками менять.
 
Не, ну вам вообще не угодишь! Может просто в закладки добавить главную страницу?
---------Двойное сообщение соединено: ---------
Исправил недоработку, когда не менялась страна в скрипте смены валюты и страны

Код:
// ==UserScript==
// @name         Aliexpress All Currency Changer
// @namespace    http://tampermonkey.net/
// @version      0.2
// @description  Изменяет валюту на Алиэкспресс
// @author       Andronio
// @include      https://*aliexpress.ru/*
// @include      https://*aliexpress.com/*
// @grant        none
// @run-at       document-end
// ==/UserScript==

let myCountry = "KZ";

(function repeat() {
    'use strict';
    let logoPic = document.querySelector(".hm-left");
    if (!logoPic) return setTimeout(repeat, 200);
    logoPic.innerHTML = `<div class="currency-button" data-curr="USD"><span class="css_flag css_us" style="display:inline"><span class="shipping-text" style="display:inline">USD</span></span></div>
                        <div class="currency-button" data-curr="RUB"><span class="css_flag css_ru" style="display:inline"><span class="shipping-text" style="display:inline">RUB</span></span></div>`;
    let style = document.createElement("style");
    style.innerHTML = `.currency-button {
                            display: inline-block;
                            padding: 5px 10px;
                            margin: 20px 0 0 20px;
                            border: 2px solid black;
                            border-radius: 0.5em;
                            cursor:pointer;
                        }

                        .no-modify-btn {background-color: OrangeRed;}

                        .yes-modify-btn {background-color: Lime;}
                            `;
    document.head.append(style);
    logoPic.addEventListener("click", btnClickHandler);
})();



function btnClickHandler(event) {
    'use strict';

    let btn = event.target.closest(".currency-button");
    if (!btn) return;
    let currency = btn.dataset.curr;
    let cookies = document.cookie.split('; ');
    let isNeedModif = false;
    let isFound = false;
    let str;
    for (let i = 0; i < cookies.length; i++) {
        if (cookies[i].startsWith("aep_usuc_f=")) { // Если нашел нужную куку
            let cookie = cookies[i].slice(11).split('&'); // Убираем aep_usuc_f= и разделяем
            cookie = cookie.map(elem => { // Смотрим, что в куке
                if (elem.startsWith("c_tp=")) {
                    isFound = true;
                    if (elem.slice(5) == currency)
                        return elem;
                    else {
                    isNeedModif = true;
                    return "c_tp=" + currency;
                    }
                } else if (elem.startsWith("region=")) {
                    isFound = true;
                    let currCountry = elem.slice(7);
                    if (myCountry == "")
                        return elem;
                    else if (currCountry == myCountry)
                        return elem
                    else {
                        isNeedModif = true;
                        return "region=" + myCountry;
                    }

                } else return elem;
            });
            if (!isFound) {
                cookie.push("c_tp=" + currency);
                if (myCountry != "") cookie.push("region=" + myCountry);
            }
            str = cookie.join("&");
            break;
        }
    }
    if (isNeedModif || !isFound) {
        if (window.location.hostname.includes("aliexpress.ru")) {
            document.cookie = `aep_usuc_f=${str}; path=/; expires=Tue, 19 Jan 2088 03:14:07 GMT; domain=.aliexpress.ru`;
            window.location.reload();
        } else if (window.location.hostname.includes("aliexpress.com")) {
            document.cookie = `aep_usuc_f=${str}; path=/; expires=Tue, 19 Jan 2088 03:14:07 GMT; domain=.aliexpress.com`;
            window.location.reload();
        } else {alert("Ошибка в скрипте")};
        btn.classList.add("yes-modify-btn");
        setTimeout(() => {btn.classList.remove("yes-modify-btn");}, 300);
        window.location.reload();
    } else {
        btn.classList.add("no-modify-btn");
        setTimeout(() => {btn.classList.remove("no-modify-btn");}, 300);
    }
}
---------Двойное сообщение соединено: ---------

В связи с изменением оформления форума изменил скрипт показа цены купона.

Цена купона берется с сайта 0xFF, за что ему огромное спасибо. Теперь новое окно алиэкспресс не всплывает.

Также добавил настройку, чтобы можно было поставить свои любимые купоны
Код:
    let coupon1name = "3,99/4,99";
    let = 4.99;
coupon1name - просто название купона, можно писать что угодно в кавычках
coupon1val - верхний номинал купона, без кавычек и десятичное разделение точкой

JavaScript:
// ==UserScript==
// @name         Miped.ru coupon currency show2
// @namespace    http://tampermonkey.net/
// @version      0.2
// @description  Показывает курс купона
// @author       Andronio
// @match        https://mipped.com/f/threads/obsuzhdenie-kuponov-aliexpress*
// @grant        GM_xmlhttpRequest
// @connect      1c.now.sh
// @run-at       document-end
// ==/UserScript==

(function() {
    'use strict';
/*
 * Здесь начинать править настройки
*/

    let itemNumber = "32915345420";
    let changeTime = 6;  // MSK
    let coupon1name = "3,99/4,99";
    let coupon1val  = 4.99;
    let coupon2name = "4/5";
    let coupon2val  = 5;
    let coupon3name = "5/10";
    let coupon3val  = 10;

/*
 * Далее не трогать
*/

    let coef = 0;

    if (location.href.startsWith("https://mipped.com/f/threads/")) {
        showMiped();
        let couponCurrency = localStorage.getItem("couponCurrency");
        if (!couponCurrency) return requestCurrency();
        try {
            couponCurrency = JSON.parse(couponCurrency);
        } catch {
            return requestCurrency();
        }
        let thresholdTime = new Date();
        thresholdTime.setHours(thresholdTime.getHours() - changeTime - 3);
        let oldDate = new Date(couponCurrency.date);
        if (oldDate.getDate() < thresholdTime.getDate()) return requestCurrency();
        coef = couponCurrency.coef;
        fillTable();
        document.getElementById('couponrequest').dispatchEvent(new Event("input"));

    }

    function requestCurrency() {
        let url = `https://1c.now.sh/api/price?item=${itemNumber}`;
        var ret = GM_xmlhttpRequest({
            method: "GET",
            url: url,
            onload: function(res) {
                let mydata;
                try {
                    mydata = JSON.parse(res.responseText);
                } catch {
                    console.log("Ошибка JSON");
                }
                if (mydata.success) {
                    coef = 4484.66 * mydata.USD * 10 / 7 / mydata.RUB;
                    fillTable();
                    let couponCurrency = {};
                    couponCurrency.date = new Date();
                    couponCurrency.coef = coef;
                    localStorage.setItem("couponCurrency", JSON.stringify(couponCurrency));
                }
            },
            onerror: function(res) {
                var msg = "An error occurred."
                    + "\nresponseText: " + res.responseText
                    + "\nreadyState: " + res.readyState
                    + "\nresponseHeaders: " + res.responseHeaders
                    + "\nstatus: " + res.status
                    + "\nstatusText: " + res.statusText
                    + "\nfinalUrl: " + res.finalUrl;
                console.log(msg);
            }
            });
    }

    function showMiped() {
        let div = document.createElement('div');
        div.className = 'currency';
        div.innerHTML = `
            <div style="display: inline-block; color: DarkGreen; font-size: 0.8em;">
                <table border="1" cellpadding="5">
                    <tr><th>Купон</th><th>цена</th></tr>
                    <tr><td>${coupon1name}</td><td id="coupon1">0</td></tr>
                    <tr><td>${coupon2name}</td><td id="coupon2">0</td></tr>
                    <tr><td>${coupon3name}</td><td id="coupon3">0</td></tr>
                </table>
            </div>
            <div style="display: inline-block; width: 100px; margin-left: 50px">
                <span id="showCalCoupon" style="width:90px; font-size: 1.2em; color: black">10</span><br>
                <input type="text" id="couponrequest" value="10" style="width:90px; font-size: 1.2em">
            </div>
            <div style="display: inline-block; margin-left: 50px">
                <button id="refreshCoupon" style="height:50px;width:100px;margin-top:20px">Обновить</button>
            </div>`;
        div.style.cssText = 'display: flex;';
        document.querySelector(".p-header-logo").after(div);
        let inputCoupon = document.getElementById('couponrequest');
        inputCoupon.addEventListener("input", (event) => {
            let couponPrice = document.getElementById('showCalCoupon');
            couponPrice.innerText = Math.ceil(event.target.value * coef) / 100;
        });
        let refreshBtn = document.getElementById('refreshCoupon');
        refreshBtn.addEventListener("click", requestCurrency);
    }

    function fillTable() {
        let coupon1 = document.getElementById("coupon1");
        coupon1.innerText = Math.ceil(coupon1val * coef) / 100;
        let coupon2 = document.getElementById("coupon2");
        coupon2.innerText = Math.ceil(coupon2val * coef) / 100;
        let coupon3 = document.getElementById("coupon3");
        coupon3.innerText = Math.ceil(coupon3val * coef) / 100;
    }

}());
 
Последнее редактирование:
Спасибо!

Обновленный скрипт убирания картинок (на всякий случай) для нового форума.
Описание здесь

JavaScript:
// ==UserScript==
// @name         Miped forum spam blocker
// @namespace    http://tampermonkey.net/
// @version      1.0
// @description  Удаляет плохие сообщения
// @author       Andronio
// @match        https://mipped.com/f/threads/*
// @grant        none
// @run-at       document-body
// ==/UserScript==
let mipedCounterTimeout = 200;
(function repeat() {
    'use strict';

/*
* Здесь начинать править настройки
*/

let maxPics         = 2;     // Если больше 2 картинок в сообщении, то прятать
let newUserMessages = 15;    // Если меньше сообщений, то прятать сообщение при completeHide = 1 или есть картинка
let completeHide    = 0;     // Прятать новичка всегда - 1 или только если в сообщении есть картинка - 0
let oldUser         = 200;   // Если у пользователя больше сообщений, то его картинки прятаться не будут

/*
* Далее не трогать
*/

let messagesBuffer = [];

    let messages = document.querySelectorAll(".message-content");
    if (!messages.length && --mipedCounterTimeout) return setTimeout(repeat, 100);
    if (!mipedCounterTimeout) return;
    let badMessageCounter = 0;
    messages.forEach(message => {
        let messagesCount = +message.closest(".message-inner").querySelectorAll(".pairs.pairs--justified dd")[3].innerText.replace(/[^\d]+/, '');  // Количество сообщений у пользователя
        if (completeHide && messagesCount < newUserMessages)
            message.closest(".message--post.message").style.display = "none";
        else {
            let messagesPics = message.querySelectorAll("img");
            let imgCount = 0;
            messagesPics.forEach(img => {
                if (!img.src.startsWith("https://mipped.com/f/styles/"))
                    imgCount++;
            });
            if (imgCount > maxPics && messagesCount < oldUser || imgCount && messagesCount < newUserMessages) {
                let picsBuffer = [];
                messagesPics.forEach(img => {
                    picsBuffer.push(img.outerHTML);
                    img.outerHTML = `<span name="old-pic">Здесь была картинка</span>`;
                });
                messagesBuffer.push(picsBuffer);
                message.style.display = "none";
                let messageNew = document.createElement("div");
                messageNew.className = "message-content";
                messageNew.innerHTML = `<button name="show-bad-message" data-show="${badMessageCounter}">Показать</button><br>Обнаружено ${imgCount} картинок<br>${message.innerText.slice(0,80)}`;
                message.after(messageNew);
                badMessageCounter++;
            }
        }
    });
    let buttonShow = document.querySelectorAll('[name="show-bad-message"]');
    buttonShow.forEach(btn => btn.addEventListener("click", btnClickHandler));

    function btnClickHandler(event) {
        let elem = event.target;
        let messageContents = elem.closest(".message-inner").querySelectorAll(".message-content");
        messageContents[0].style.display = "block";
        elem.removeEventListener("click", btnClickHandler);
        messageContents[1].remove();
        let pics = messageContents[0].querySelectorAll('[name="old-pic"]');
        for (let i = 0; i < pics.length; i++) {
            pics[i].outerHTML = messagesBuffer[elem.dataset.show][i];
        }
    }

})();
 
  • Like
Реакции: Volk7 и Razor112
Всем привет
 
Не знаю, будет ли кому-нибудь полезен этот скрипт, я использую. На странице поиска, когда надо отсортировать товары не более или не менее цены, то цену надо вводить с точкой, а на русской раскладке на доп. цифровой клавиатуре вместо точки ставится запятая, которую али не воспринимает. Также нужно вручную нажимать "ОК" мышкой, а рядом пирамидка, которая сбрасывает установленные цены, поэтому добавил автонажатие кнопки по Enter.

JavaScript:
// ==UserScript==
// @name         Aliexpress search point changer
// @namespace    http://tampermonkey.net/
// @version      0.1
// @description  заменяет запятую на точку в поле мин. цены на странице поиска
// @author       Andronio
// @include      https://*aliexpress.ru/af/*
// @include      https://*aliexpress.com/af/*
// @grant        none
// ==/UserScript==

(function() {
    'use strict';
    let inp = document.querySelector(".price-input.ltr");
    inp.addEventListener("input", function(event) {
        if (event.target.tagName != "INPUT") return;
        if (event.inputType == "insertText" && event.data == ',') {
            let nativeInputValueSetter = Object.getOwnPropertyDescriptor(window.HTMLInputElement.prototype, 'value').set;
            nativeInputValueSetter.call(event.target, event.target.value.slice(0, -1) + '.');
        }
    });
    inp.addEventListener("keydown", function(event) {
        if (event.key == 'Enter') {
            document.querySelector(".price-input.ltr a").click();
        }
    });
})();
 
на русской раскладке на доп. цифровой клавиатуре вместо точки ставится запятая
не трушный подход.
Нужно раскладку заменить, запятая на num блоке не нужна совсем.
 
Кому как! В экселе по умолчанию используется именно запятая. А скрипт - это вполне себе решение.
 
  • Like
Реакции: Razor112 и Tatarin300
А в чем смысл скрипта? 2,78 на новых акках собирать? А есть вариант кликателя, чтобы 3,99 брать?
Нет, он нажимает до игры, чтобы начать игру. Например, у меня экран игры огромный и кнопка где-то внизу, приходится проматывать экран. Теперь же просто вставил ссылку и жду пистолет.
 
Не знаю, будет ли кому-нибудь полезен этот скрипт, я использую. На странице поиска, когда надо отсортировать товары не более или не менее цены, то цену надо вводить с точкой, а на русской раскладке на доп. цифровой клавиатуре вместо точки ставится запятая, которую али не воспринимает. Также нужно вручную нажимать "ОК" мышкой, а рядом пирамидка, которая сбрасывает установленные цены, поэтому добавил автонажатие кнопки по Enter.

JavaScript:
// ==UserScript==
// @name         Aliexpress search point changer
// @namespace    http://tampermonkey.net/
// @version      0.1
// @description  заменяет запятую на точку в поле мин. цены на странице поиска
// @author       Andronio
// @include      https://*aliexpress.ru/af/*
// @include      https://*aliexpress.com/af/*
// @grant        none
// ==/UserScript==

(function() {
    'use strict';
    let inp = document.querySelector(".price-input.ltr");
    inp.addEventListener("input", function(event) {
        if (event.target.tagName != "INPUT") return;
        if (event.inputType == "insertText" && event.data == ',') {
            let nativeInputValueSetter = Object.getOwnPropertyDescriptor(window.HTMLInputElement.prototype, 'value').set;
            nativeInputValueSetter.call(event.target, event.target.value.slice(0, -1) + '.');
        }
    });
    inp.addEventListener("keydown", function(event) {
        if (event.key == 'Enter') {
            document.querySelector(".price-input.ltr a").click();
        }
    });
})();
Все что ты делаешь на этом форуме полезно и нужно. Ты главное это, не вздумай прекращать)
 
Cкрипт-заполнитель. Скрипт заполняет адресные данные в профиле. Данные должны быть три ячейки подряд из экселя, либо данные разделенные двоеточием, т.е. имя, адрес и телефон в любом порядке.
В начале скрипта надо сделать настройку - указать порядок данных, страну, область и город.
При загрузке фокус сразу передается полю ввода, поэтому можно сразу нажать ctrl+v + enter (либо кнопка).

Код:
// ==UserScript==
// @name         Aliexpress address filler
// @namespace    http://tampermonkey.net/
// @version      0.1
// @description  try to take over the world!
// @author       Andronio
// @match        ilogisticsaddress.aliexpress.com/addressList.htm*
// @match        ilogisticsaddress.aliexpress.ru/addressList.htm*
// @grant        none
// ==/UserScript==

/*
Выбираем свою страну: KZ, RU, BY, UA
Область и город так, как написано на страничке адреса
Если область или город не получается, то смотрим код страницы
и ищем свои данные.
Задаем порядок следования ваших данных. Например у меня:
телефон -> адрес -> имя, соответственно у меня порядок
будет 0, 1, 2
*/

let myIndex     = "100000";
let myPhoneCode = "+7";
let myCountry   = "KZ";
let myProvince  = "oblast";
let myCity      = "gorod";

let orderPhone  = 0;
let orderAddr   = 1;
let orderName   = 2;



(function () {
    'use strict';

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

    div.innerHTML += `
    <input type="text" id="namepass"></br>
    <input type="button" id="fillAddr" 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("fillAddr");
    mybutton2.addEventListener('click', fillAddrFunc);
    let mytext = document.getElementById("namepass");
    mytext.addEventListener('keydown', event => {
        if (event.keyCode == "13") {
            document.getElementById('fillAddr').click();
        }
    });
    mytext.focus();
})();


let currMode = 0;
let myTemp = "";

// Функция заполения адреса
function fillAddrFunc() {

    let elemCountry = document.querySelector('select[name="country"]');
    let elemProvinceSelect = document.querySelector('.sa-province-wrapper > select');
    let elemProvinceInput = document.querySelector('.sa-province-wrapper > input');
    let elemCitySelect = document.querySelector('.sa-city-wrapper > select');
    let elemCityInput = document.querySelector('.sa-city-wrapper > input');

    switch(currMode) {
        case 0:
            let namepass = document.getElementById("namepass");
            let mass;

            if (namepass.value == "") return alert("Нет данных");
            if (/.+\t.+\t.+/.test(namepass.value)) {
                mass = namepass.value.split('\t');
            } else if (/.+:.+:.+/.test(namepass.value)) {
                mass = namepass.value.split(':');
            } else {
                namepass.value = "";
                return alert("Неправильный формат");
            }

            document.querySelector('input[name="contactPerson"]').value = mass[orderName];
            document.querySelector('input[name="address"]').value = mass[orderAddr];
            document.querySelector('input[name="zip"]').value = myIndex;
            document.querySelector('input[name="mobileNo"]').value = mass[orderPhone];
            elemCountry.value = myCountry;
            myTemp = elemProvinceSelect.options[1].text;
            elemCountry.dispatchEvent(new Event("change"));
            currMode = 1;
            return setTimeout(fillAddrFunc, 200);
            break;
        case 1:
            if (elemProvinceSelect.options[1].text == myTemp && myCountry != "BY")
                return setTimeout(fillAddrFunc, 200);
            if (myCountry == "BY") {
                elemProvinceInput.value = myProvince;
            } else {
                elemProvinceSelect.value = myProvince;
                elemProvinceSelect.dispatchEvent(new Event("change"));
            }
            currMode = 2;
            return setTimeout(fillAddrFunc, 200);
            break;
        case 2:
            if (elemCitySelect.length == 0 && myCountry != "BY")
                return setTimeout(fillAddrFunc, 200);
            if (myCountry == "BY") {
                elemCityInput.value = myCity;
            } else {
                elemCitySelect.value = myCity;
                elemCitySelect.dispatchEvent(new Event("change"));
            }
            currMode = 3;
            return setTimeout(fillAddrFunc, 200);
            break;
        case 3:
            document.querySelector('input[name="phoneCountry"]').value = myPhoneCode;
            currMode = 0;
            document.querySelector('.sa-confirm').click();
            break;
        default:
            alert("Ошибка в программе");
    }
}
Как этим пользоваться? Внес свои данные сюда:
let myIndex = "100000";
let myPhoneCode = "+7";
let myCountry = "KZ";
let myProvince = "oblast";
let myCity = "gorod";

И что дальше? Как запустить заполнение?
 
Дальше переходишь на "мой адрес" и там делаешь вставить и enter. Более подробное описание в сообщении скрипта
 
Добрый день. А можно сделать скрипт, который бы на странице: Заказы открывал максимальное количество заказов. По умолчанию стоит 10 заказов на листе. И часто приходится вручную или переходить на следующую страницу или увеличивать количество заказов на листе.
 
  • Like
Реакции: Author
Есть возможность сделать скрипт убирающий появление купона для нового пользователя? Он часто у меня появляется даже когда залогинился акком, с которого уже была покупка.

Или такой скрипт уже есть?