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

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

  • Да

    Голосов: 66 64,1%
  • Нет

    Голосов: 37 35,9%

  • Всего проголосовало
    103

Andronio

Флудер
Дней с нами
948
Репутация
46
Розыгрыши
0
Сообщения
349
Лайки
1.394
Приветствую!
Накопилось уже много скриптов для Алиэкспресс, в нескольких вариантах, и все разбросаны по теме. Решил собрать скрипты в одной теме и держать в шапке актуальные версии.
Скрипты расположены в порядке действия, т.е. сначала логин, в конце данные с готового заказа.

Скрипт быстого входа и регистрации на Алиэкспресс
Скрипт быстрой регистрации по рефф-сслылке друга
Скрипт быстрого заполнения адресных данных
Скрипт заполняет случайными данными адрес США для игры пистолет
Скрипт быстрого доведения до оплаты вебманями/Яндекс.деньгами из списка заказов
Скрипт быстрой оплаты на WebMoney через E-NUM
Скрипт быстрой оплаты на WebMoney с авторизацией через Яндекс
Скрипт быстрого заполнения данных платежной карты

Скрипт получения информации из заказа и трека
Скрипт быстрого заполнения профиля для смены страны для игры
Скрипт автонажатия кнопки на игре "пуск"
Скрипт автоматически меняет на Алиэкспресс страну доставки и валюту
Скрипт удаляет Еву в списке заказов
Скрипт получения списка заказов для BAS
Скрипт скрытия сообщений с картинками на Miped.ru
Скрипт переключения валюты в КОРЗИНЕ
Скрипт для форума Miped.ru, добавляет курс купона на экран вверху
Скрипт авторизации на cash4brands
Скрипт авторизации на bonus.webmoney.ru

Скрипт авторизации на bonus.webmoney.ru через Яндекс
Скрипт переключения валюты и устанвки страны на всем Алиэкспресс
Скрипт проверки конечной цены перед оформлением


Скрипты от future_:
Скрипт для удобного поиска добивки и др.

Скрипты от readdead01:
Скрипт оплаты Яндекс.Деньгами на Алиэкспресс

Скрипты от Dimokin:
Скрипт автоматического входа на Скидка.ру
 
Последнее редактирование:

Andronio

Флудер
Дней с нами
948
Репутация
46
Розыгрыши
0
Сообщения
349
Лайки
1.394
Если логин-пароль хранится в экселе в соседних ячейках, то для входа на алиэкспресс (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
скрипт запускается на https://sale.aliexpress.com/__pc/referral_register_success.htm*, предназначен для быстрого забивания логина и пароля при реферральной реге друга.

Код:
// ==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();
}
 

Andronio

Флудер
Дней с нами
948
Репутация
46
Розыгрыши
0
Сообщения
349
Лайки
1.394
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("Ошибка в программе");
    }
}
 

Andronio

Флудер
Дней с нами
948
Репутация
46
Розыгрыши
0
Сообщения
349
Лайки
1.394
Cкрипт автоматической оплаты заказа/заказов и доведения до вебманей/яндекс.денег
1. Если домен .ru и есть неоплаченные заказы, то автоматически перекидывает на .com
2. Если есть неоплаченные заказы, то добавляется кнопка "оплатить все" и скрипт автоматом доводит до оплаты все неоплаченные заказы.
3. Если нажать "Оплатить" на отдельном заказе, то его доведет до отплаты.
4. Можно платить WebMoney или Яндекс.Деньги (настраивается в скрипте)

В скрипте нужно свой способ оплаты раскомментировать, а другой закомментировать вот так
Код:
let mymoney = 'WebMoney';

//let mymoney = 'Яндекс.Деньги';
или так
Код:
//let mymoney = 'WebMoney';

let mymoney = 'Яндекс.Деньги';
Код:
// ==UserScript==
// @name         Aliexpress automatic payment
// @namespace    http://tampermonkey.net/
// @version      0.2
// @description  try to take over the world!
// @author       Andronio
// @match        https://trade.aliexpress.ru/orderList.htm*
// @match        https://trade.aliexpress.com/orderList.htm*
// @match        https://trade.aliexpress.ru/order_list.htm*
// @match        https://trade.aliexpress.com/order_list.htm*
// @match        https://shoppingcart.aliexpress.ru/order/secondPayment.htm*
// @match        https://shoppingcart.aliexpress.com/order/secondPayment.htm*
// @grant        none
// ==/UserScript==

let mymoney = 'WebMoney';
//let mymoney = 'Яндекс.Деньги';

(async function() {
    'use strict';
    let href = location.href;
    if (href.search("trade.aliexpress.ru/orderList.htm") >= 0 ||
        href.search("trade.aliexpress.ru/order_list.htm") >= 0) {
        let buttonPay = document.querySelectorAll(".button-pay");
        if (buttonPay.length > 0) {
            location.href = "https://trade.aliexpress.com/orderList.htm";
            return;
        }
    }
    if (href.search("shoppingcart.aliexpress.ru/order/secondPayment.htm") >= 0 ||
        href.search("shoppingcart.aliexpress.com/order/secondPayment.htm") >= 0)
           wmPaySelect();
    if (href.search("trade.aliexpress.com/orderList.htm") >= 0 ||
        href.search("trade.aliexpress.com/order_list.htm") >= 0) {
// currentMode - хранит текущий шаг последовательности оплаты
        let currentMode = sessionStorage.getItem('currentMode');
        if (!currentMode) {

// Первый проход
            let buttonPay = document.querySelectorAll(".button-pay");
            if (buttonPay.length > 0) {
                let combinPay = document.getElementById("TP_CombinPay");
                if (!combinPay) {
    // Кнопка оплатить все
                    let button = document.createElement("button");
                    button.id = "allPay";
                    button.className = "ui-button ui-button-primary combine-pay-button";
                    button.innerText = "Оплатить все";
                    document.getElementById("simple-pager").before(button);
                    button.addEventListener("click", function(){
                        sessionStorage.setItem('currentMode', 'payAll_step1');
                        document.getElementById("remiandTips_waitBuyerPayment").click();
                    });
                }
            }
        } else {
            document.getElementById("cb").click();   // Выбрать все заказы
            await sleep(100);
            document.getElementById("TP_CombinPay").click();          // Нажать кнопку оплатить
            sessionStorage.removeItem('currentMode');
        }
    }

})();


async function wmPaySelect() {
    // Ждем выбор эл. денег
    try {
        await waitForDisableElement("#init-loading", 150);
        await waitForElement(".title-to-detail", 150);
    } catch {
        return alert("Не найден элемент 1");
    }
    await sleep(500);
    document.querySelector(".title-to-detail").click();
// Ждем появления вебманей
    try {
        await waitForElement(".payment-opt", 150);
    } catch {
        return alert("Не найден элемент 2");
    }
// Выбираем вебмани
    let money = document.querySelectorAll(".opt-title");
    let found = false;
    for (let el of money) {
        if (el.innerText == mymoney) {
            money = el;
            found = true;
            break;
        }
    }
    await sleep(800);
    if (found) {
        try {
            await waitForDisableElement(".spinner-container", 150);
        } catch {
            return alert("Не найден элемент 2.5");
        }
        await sleep(800);
        money.click();
    } else return alert("Не нашел " + mymoney + " 3");
// Только для ЯД нажать кошелек
    if (mymoney == 'Яндекс.Деньги') {
        await sleep(800);
        try {
            await waitForDisableElement(".spinner-container", 150);
            await waitForElement(".sub-payment-opt-item", 150);
        } catch {
            return alert("Не найден элемент 4");
        }
        await sleep(500);
        let wallet = document.querySelectorAll(".sub-payment-opt-item");
        if (wallet) wallet[0].click();
        else return alert("Не нашел " + mymoney + " 5");
    }
    await sleep(800);
    let countdown = 15;
    do {
        try {
            await waitForDisableElement(".spinner-container", 150);
        } catch {
            return alert("Не прошел ожидание 7");
        }
        await sleep(1000);
    } while(document.querySelector(".spinner-container") && --countdown);
    if (!countdown) return alert("Не прошел ожидание 8");
    await sleep(500);
    document.querySelector(".next-btn-primary").click();
}

function sleep(ms) {
  return new Promise(resolve => setTimeout(resolve, ms));
}

// Функция ждет элемент elem, таймаут timeout
async function waitForElement(elem, timeout) {
    while(!document.querySelector(elem) && --timeout > 0) {
        await sleep(100);
    }
    let el = document.querySelector(elem);
    if (el) return Promise.resolve(el);
        else return Promise.reject();
}

async function waitInnerText(elem, text, timeout)
{
    let el;
    do {
        el = document.querySelector(elem);
        if (el.innerText == text) break;
    } while(--timeout > 0);
    if (el.innerText == text) Promise.resolve(el);
        else return Promise.reject();
}

// Функция для фрейма ждет элемент elem, таймаут timeout
async function waitForDisableElement(elem, timeout) {
    let el;
    while((el = document.querySelector(elem)) && --timeout > 0) {
        if (el.style.display == "none") break;
        await sleep(100);
    }
    if (!el || el.style.display == "none") return Promise.resolve(true);
        else return Promise.reject();
}
 

Andronio

Флудер
Дней с нами
948
Репутация
46
Розыгрыши
0
Сообщения
349
Лайки
1.394
Скрипт ускоряющий оплату через вебмани. Вводит WMId, пароль, капчу НЕ РЕШАЕТ, нажимает получить E-NUM, при получении кода жмет кнопки до возвращения на Али. В коде нужно поставить ваш WMId и пароль.

Код:
// ==UserScript==
// @name         WebMoney E-NUM clicker
// @namespace    http://tampermonkey.net/
// @version      0.3
// @description  Вводит WMId и пароль на WebMoney
// @author       Andronio
// @match        https://merchant.web.money/lmi/payment_conf.asp
// @match        https://merchant.web.money/lmi/SignedLoginFormNewWC.asp*
// @match        https://psp.wmtransfer.com/payment/process/*
// @match        https://merchant.web.money/lmi/payment_do.asp
// @match        https://shoppingcart.aliexpress.com/order/payResult.htm?cashierRequestNo*
// @grant        none
// ==/UserScript==

let mwIdVal = "000000000000";
let wmPassVal = "000000000";



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

    if (href == "https://merchant.web.money/lmi/payment_conf.asp") {
        let enumCode = document.getElementById("ConfirmENum");
        let confirmButton = document.getElementById("do_payment");
        let askENUM = document.getElementById("ConfirmENumSend");

        if (askENUM) askENUM.click();
        if (!enumCode) {
            setTimeout(repeat, 500);
        } else {
            if (enumCode.value == ""){
            // Запуск таймера
            setTimeout(repeat, 500);
            } else {
                confirmButton.click();
            }
        }
    }
    if (/psp\.wmtransfer\.com\/payment\/process\//.test(href)) {
        let returnButton = document.getElementById("returnToMerchant");
        if (!returnButton) {
            setTimeout(repeat, 500);
        } else {
            if (returnButton.clientWidth == 0) {
                setTimeout(repeat, 500);
            } else {
                    returnButton.click();
            }
        }
    }
    if (/merchant\.web\.money\/lmi\/SignedLoginFormNewWC\.asp/.test(href)) {

        let wmId = document.getElementById("wmcheck_no");
        let wmPass = document.getElementById("wmcheck_pwd");
        let wmCapt = document.getElementById("mobilecaptcha");
        let wmAuth = document.getElementById("auth");

        if (wmId && wmPass) {
            if (wmPass.parentNode.parentNode.classList.contains('js-hidden')) {
                if (wmId.value == "") {
                    wmId.value = mwIdVal;
                    wmCapt.focus();
                }
                setTimeout(repeat, 500);
            } else {
                if (wmPass.value == "") {
                    wmPass.value = wmPassVal;
                    if (wmId.value == "") {
                        wmId.value = mwIdVal;
                        wmCapt.focus();
                    }
                }
                if (wmCapt.value != "") wmAuth.click();
            }
        } else {
            setTimeout(repeat, 500);
        }
    }
    if (href == "https://merchant.web.money/lmi/payment_do.asp") {
        let backButton = document.getElementById("back_toshop");
        if (backButton) {
            backButton.click();
        } else {
            setTimeout(repeat, 500);
        }
    }
    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);
        }
    }
})();
 

Andronio

Флудер
Дней с нами
948
Репутация
46
Розыгрыши
0
Сообщения
349
Лайки
1.394
Скрипт ускоряющий оплату через вебмани с авторизацией через Яндекс.

Код:
// ==UserScript==
// @name         WM pay by Yandex
// @namespace    http://tampermonkey.net/
// @version      0.3
// @description  Авторизация на WebMoney через Yandex
// @author       Andronio
// @match        https://merchant.web.money/lmi/payment_conf.asp
// @match        https://merchant.web.money/lmi/SignedLoginFormNewWC.asp*
// @match        https://psp.wmtransfer.com/payment/process/*
// @match        https://merchant.web.money/lmi/payment_do.asp
// @match        https://passport.yandex.ru/auth*
// @match        https://shoppingcart.aliexpress.com/order/payResult.htm?cashierRequestNo*
// @grant        none
// ==/UserScript==

let yandexLogin = "login";
let yandexPass  = "pass";

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

    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 (href == "https://merchant.web.money/lmi/payment_conf.asp") {
        let enumCode = document.getElementById("ConfirmENum");
        let confirmButton = document.getElementById("do_payment");
        let askENUM = document.getElementById("ConfirmENumSend");

        if (askENUM) askENUM.click();
        if (!enumCode) {
            setTimeout(repeat, 500);
        } else {
            if (enumCode.value == ""){
            // Запуск таймера
            setTimeout(repeat, 500);
            } else {
                confirmButton.click();
            }
        }
    }
    if (/psp\.wmtransfer\.com\/payment\/process\//.test(href)) {
        let returnButton = document.getElementById("returnToMerchant");
        if (!returnButton) {
            setTimeout(repeat, 500);
        } else {
            if (returnButton.clientWidth == 0) {
                setTimeout(repeat, 500);
            } else {
                    returnButton.click();
            }
        }
    }

    if (/merchant\.web\.money\/lmi\/SignedLoginFormNewWC\.asp/.test(href)) {

        let socMore = document.querySelector(".soc-show_more");

        if (!socMore.classList.contains("active")) {
            socMore.classList.add("active");
            setTimeout(repeat, 500);
        } else {
            let socYandex = document.querySelector(".soc-yandex");
            if (!socYandex) setTimeout(repeat, 500);
            else {
                socYandex.click();
                return;
            }
        }
    }
    if (href == "https://merchant.web.money/lmi/payment_do.asp") {
        let backButton = document.getElementById("back_toshop");
        if (backButton) {
            backButton.click();
        } else {
            setTimeout(repeat, 500);
        }
    }
    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);
        }
    }
})();

@MORAX Нужна чистка
---------Двойное сообщение соединено: ---------
Скрипт заполнения данных платежной карточки. Заполнение происходит только на полной версии корзины, т.е. адрес должен быть https://shoppingcart.aliexpress.ru/orders.htm?aeOrderFrom=main_shopcart*
Данные карты должны быть в формате
Код:
5405 1047 0034 3817, 2023/02, 461, IRINA ANDREEVA, MasterCard - Wells Fargo Bank, USA
Только в таком, другой никак.

Код:
// ==UserScript==
// @name         Aliexpress CARD filler
// @namespace    http://tampermonkey.net/
// @version      0.1
// @description  Заполнение данных платежной карты
// @author       Andronio
// @match        https://shoppingcart.aliexpress.ru/orders.htm?aeOrderFrom=main_shopcart*
// @grant        none
// @noframes
// ==/UserScript==

let timeout = 50;

(function() {
    'use strict';

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

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

})();

function cardFunc() {
    let cardNumber = document.getElementById('cardNo');
    let cardHold   = document.getElementById('cardHolder');
    let dateExpire = document.getElementById('expire');
    let codeCVC    = document.getElementById('cvc');
    let mytext     = document.getElementById("carddata");
    let mass;

    if (mytext.value == "") return null;
    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("Нет данных карты");
    }
    let nativeInputValueSetter = Object.getOwnPropertyDescriptor(window.HTMLInputElement.prototype, 'value').set;

    nativeInputValueSetter.call(cardNumber, mass[0]);
    cardNumber.dispatchEvent(new Event('change', {bubbles: true}));
    cardNumber.dispatchEvent(new Event('blur', {bubbles: true}));

    nativeInputValueSetter.call(cardHold, mass[3]);
    cardHold.dispatchEvent(new Event('change', {bubbles: true}));

    let date = mass[1].slice(5,7) + '/' + mass[1].slice(2,4);
    nativeInputValueSetter.call(dateExpire, date);
    dateExpire.dispatchEvent(new Event('change', {bubbles: true}));

    nativeInputValueSetter.call(codeCVC, mass[2]);
    codeCVC.dispatchEvent(new Event('change', {bubbles: true}));

    document.querySelector('[ae_button_type="confirm"]').click();
    document.querySelector(".myBox").style.display = "none";
}
 

Kish

Бог флуда
Дней с нами
996
Репутация
13
Розыгрыши
0
Сообщения
1.146
Лайки
754
я б может и пользовался..если бы знал куда их вставлять
 

Andronio

Флудер
Дней с нами
948
Репутация
46
Розыгрыши
0
Сообщения
349
Лайки
1.394
я б может и пользовался..если бы знал куда их вставлять
Ну вот здесь же все расписано с картинками.
---------Двойное сообщение соединено: ---------
Код:
// ==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;
}
 

Andronio

Флудер
Дней с нами
948
Репутация
46
Розыгрыши
0
Сообщения
349
Лайки
1.394
В предыдущем сообщении скрипт большой, еле влез в сообщение

Скрипт получения информации из заказа. На странице списка заказов появляется окно с кнопками. Первая кнопка - получить все заказы, остальные, соответственно, один заказ. Данные о заказе копируются в буфер обмена, можно напрямую вставить в Excel. Необходимая последовательность ячеек нужно указать в строке вначале. Важно не испортить строку, иначе скрипт упадет. Строка должна начинаться и заканчиваться символом обратной кавычки. Для перехода к следующей ячейке используется символ табуляции \t.
Также добавил ссылку на картинку-превью в информацию. Перед ссылкой стоит префикс picURL=, его можно отключить.
Если заказ отправлен, то справа добавляется кнопка получения трека и даты автозакрытия заказа. Данные также копируются в буфер. Формат данных также можно настроить.
Для загрузки картинки из инета в экселе сделал скрипт, его надо повесить на кнопку. Надо выделить нужные строки и нажать кнопку. Const piccell As Integer = 6 - указывает номер столбца где ищутся картинки.
Код:
Sub GetPics()
Const piccell As Integer = 6
Dim begincell As Integer, endcell As Integer
begincell = Selection.Cells(1).Row
endcell = Selection.Cells(Selection.Cells.Count).Row
For i = begincell To endcell
    If InStr(Cells(i, piccell).Value, "picURL=") Then
        path_string = Right(Cells(i, piccell).Value, Len(Cells(i, piccell).Value) - 7)
        iLeft = Cells(i, piccell).Left
        iTop = Cells(i, piccell).Top
        iHeight = Cells(i, piccell).Height
        With ActiveSheet.Pictures.Insert(path_string)
            .Top = iTop
            .Left = iLeft
            .Width = iHeight
            .Height = iHeight
        End With
        Cells(i, piccell).Value = ""
    End If
Next i
End Sub
Только не спрашивайте меня как установить Скрипт для Excel VBA. Вот моя таблица для примера https://drive.google.com/file/d/1lsqf3DU1ibRWOIAnQZBvFXHKe0eCbvFx/view?usp=sharing
 

Andronio

Флудер
Дней с нами
948
Репутация
46
Розыгрыши
0
Сообщения
349
Лайки
1.394
Далее более мелкие скрипты, уже без категорий

Скрипт рандомно заполняет все поля. В начале скрипта запишите свою страну, соответственно, KZ, RU, BY
Код:
// ==UserScript==
// @name         Aliexpress profile filler for Game
// @namespace    http://tampermonkey.net/
// @version      0.2
// @description  Изменяет страну на USA и заполняет поля
// @author       Andronio
// @match        https://accounts.aliexpress.com/user/organization/manage_person_profile.htm?isEdit=true
// @grant        none
// ==/UserScript==

var myCountry = "KZ";

(function() {
    'use strict';

    // Your code here...
    var div = document.createElement('div');
    div.className = 'mybox';

    div.innerHTML += `
    <input type="button" id="usa" class="mybutton" value="Fill USA">
    <input type="button" id="kaz" class="mybutton" value="Fill ${myCountry}">
    `;

// Стили
    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: 10px 20px;
    margin-right:auto;
    cursor:pointer;
    }`

    var styleSheet = document.createElement("style")
    styleSheet.type = "text/css"
    styleSheet.innerText = styles
    document.head.appendChild(styleSheet)
    document.body.appendChild(div);
    let mybutton1 = document.getElementById("usa");
    mybutton1.addEventListener('click', fillUSA);
    let mybutton2 = document.getElementById("kaz");
    mybutton2.addEventListener('click', fillKAZ);
})();

async function fillUSA() {
    let genderMale = document.getElementById("mr");
    let genderFemale = document.getElementById("ms");
    let countrySel = document.getElementById("countrySelect");
    let allInput = document.querySelectorAll("input");
    let submitButton = document.getElementById("formSubmit");

    if (genderMale.checked == false && genderFemale.checked == false) {
        if (Math.random() > 0.5) {
            genderMale.checked = true;
        } else {
            genderFemale.checked = true;
        }
    }

    if (allInput[10].value == "") allInput[10].value = randomString(9);
    if (allInput[11].value == "") allInput[11].value = randomString(9);

    countrySel.value = "US";
    countrySel.onchange();
    await sleep(500);
    let province = document.getElementById("usProvinceList");
    province.selectedIndex = Math.floor(Math.random() * province.length);

    if (allInput[13].value == "") allInput[13].value = getRandomInt(999999);

    allInput[14].value = "1";
    allInput[15].value = getRandomInt(999);
    allInput[16].value = getRandomInt(99999999);
    allInput[17].value = "1";
    submitButton.click();
}

async function fillKAZ() {
    let genderMale = document.getElementById("mr");
    let genderFemale = document.getElementById("ms");
    let countrySel = document.getElementById("countrySelect");
    let allInput = document.querySelectorAll("input");
    let submitButton = document.getElementById("formSubmit");

    if (genderMale.checked == false && genderFemale.checked == false) {
        if (Math.random() > 0.5) {
            genderMale.checked = true;
        } else {
            genderFemale.checked = true;
        }
    }

    if (allInput[10].value == "") allInput[10].value = randomString(9);
    if (allInput[11].value == "") allInput[11].value = randomString(9);

    countrySel.value = myCountry;
    countrySel.onchange();
    await sleep(500);

    allInput[12].value = randomString(9);

    allInput[13].value = getRandomInt(999999);

    allInput[14].value = "7";
    allInput[15].value = getRandomInt(999);
    allInput[16].value = getRandomInt(99999999);
    allInput[17].value = "7";
    submitButton.click();

}

function randomString(i)
{
    var text = "";
    var possible = "abcdefghijklmnopqrstuvwxyz";

    while (text.length < i)
        text += possible.charAt(Math.floor(Math.random() * possible.length));

    return text;
}

function sleep(ms) {
  return new Promise(resolve => setTimeout(resolve, ms));
}

function getRandomInt(max) {
  return Math.floor(Math.random() * Math.floor(max)).toString();
}

Скрипт автонажатия кнопки на игре "пуск"
Код:
// ==UserScript==
// @name         Game Controller
// @namespace    http://tampermonkey.net/
// @version      0.1
// @description  try to take over the world!
// @author       Andronio
// @match        https://sale.aliexpress.com/__mobile/cash_brother_m.htm*
// @grant        none
// ==/UserScript==

(function() {
    'use strict';

    // Your code here...
    let gameButton = document.querySelector("._2WRj8");

debugger;
    if (gameButton) {
        gameButton.click();

    }

})();
 

Andronio

Флудер
Дней с нами
948
Репутация
46
Розыгрыши
0
Сообщения
349
Лайки
1.394
Скрипт автоматически меняет страну доставки на выбранную и валюту. Зачем он нужен - не знаю, кто-то просил.

Код:
// ==UserScript==
// @name         Aliexpress Country Changer
// @namespace    http://tampermonkey.net/
// @version      0.1
// @description  Изменяет страну и валюту
// @author       Andronio
// @match        https://aliexpress.ru/*
// @match        https://www.aliexpress.com/*
// @grant        none
// ==/UserScript==

let myCurrency = "USD";
let myCountry = "RU";

(function () {
    'use strict';

    let myTemp = document.cookie.split('; ');
    let isFoundCookie = false;
    let isNeedModif = false;
    myTemp.forEach(elem => {
        if (/aep_usuc_f=.*/.test(elem)) { // Если нашел нужную куку
            isFoundCookie = true;
            elem = elem.slice(11); // Убираем aep_usuc_f=
            elem = elem.split('&');
            elem.forEach(elem2 => { // Смотрим, что в куке
                if (/c_tp=.*/.test(elem2)) {
                    if (elem2.slice(5) != myCurrency) {
                        isNeedModif = true;
                    }
                }
                if (/region=.*/.test(elem2)) {
                    if (elem2.slice(7) != myCountry) {
                        isNeedModif = true;
                    }
                }
            });
        }
    });
    if (isNeedModif || !isFoundCookie) {
        if (window.location.hostname.includes("aliexpress.ru")) {
            document.cookie = `aep_usuc_f=site=rus&c_tp=${myCurrency}&region=${myCountry}&b_locale=ru_RU; path=/; expires=Tue, 19 Jan 2038 03:14:07 GMT; domain=.aliexpress.ru`;
            window.location.reload();
        } else if (window.location.hostname.includes("aliexpress.com")) {
            document.cookie = `aep_usuc_f=site=rus&c_tp=${myCurrency}&region=${myCountry}&b_locale=ru_RU; path=/; expires=Tue, 19 Jan 2038 03:14:07 GMT; domain=.aliexpress.com`;
            window.location.reload();
        } else {alert("Ошибка в скрипте")};
        window.location.reload();
    }
})();

Скрипт удаления Евы
Код:
// ==UserScript==
// @name         Eva remover
// @namespace    http://tampermonkey.net/
// @version      0.1
// @description  try to take over the world!
// @author       Andronio
// @match        https://trade.aliexpress.ru/orderList.htm*
// @match        https://trade.aliexpress.com/orderList.htm*
// @grant        none
// ==/UserScript==
let iCounter = 100;
(function repeat() {
    'use strict';
    let eva = document.getElementById('J_xiaomi_dialog');
    if (eva) {
        eva.hidden = true;
    } else {
        if (--iCounter) {
            setTimeout(repeat, 100);
        }
    }
})();
 

Andronio

Флудер
Дней с нами
948
Репутация
46
Розыгрыши
0
Сообщения
349
Лайки
1.394
Скрипт получения списка заказов для BAS скрипта.
Скрипт на основе скрипта Dimokin https://miped.ru/f/threads/obsuzhdenija-kuponov-aliexpress-nojabr.91512/page-446#post-1993285

Как и в исходном скрипте, вычисляет цену всех позиций товара, показывает количество товара по каждой позиции. Если отправка не бесплатно, то предупреждает. И самое главное формирует список товаров в формате:

ID_тавара|выбор1|выбор2|выбор3|название_товара

и сразу копирует в буфер обмена для вставки в текстовый редактор.
Также есть две кнопки. Первая - Copy - очистка буфера в вставка нового айтема в буфер. Вторая добавляет новый айтем к существующему списку. Т.е. можно открыть много вкладок с товарами, выбирать и нажимать Add и в конце получить список для заказа.

Скачать:
https://drive.google.com/file/d/1I1Wb23M0qzvnPSQbB1henbiPXLwiupAC/view?usp=sharing
 

lexikc

Бог флуда
Дней с нами
1.284
Репутация
55
Розыгрыши
0
Сообщения
2.054
Лайки
5.116
В предыдущем сообщении скрипт большой, еле влез в сообщение

Скрипт получения информации из заказа. На странице списка заказов появляется окно с кнопками. Первая кнопка - получить все заказы, остальные, соответственно, один заказ. Данные о заказе копируются в буфер обмена, можно напрямую вставить в Excel. Необходимая последовательность ячеек нужно указать в строке вначале. Важно не испортить строку, иначе скрипт упадет. Строка должна начинаться и заканчиваться символом обратной кавычки. Для перехода к следующей ячейке используется символ табуляции \t.
А можно добавить для отправленных чтобы была кнопка получить и инфу о заказе и трек сразу?
Нажал кнопку - скопировалось всё - вставил в excel..
 

Andronio

Флудер
Дней с нами
948
Репутация
46
Розыгрыши
0
Сообщения
349
Лайки
1.394
Нет, у них разное назначение. Первая кнопка используется сразу после покупки для сохранения информации о заказе. В это время трека, естественно, еще нет. Когда уже получил трек, то информация о заказе уже давно в экселе, поэтому нет никакого смысла копировать здесь же и информацию о заказе.
 

Serega_by

Король флуда
Дней с нами
1.084
Репутация
10
Розыгрыши
0
Сообщения
740
Лайки
897
Далее более мелкие скрипты, уже без категорий


Скрипт автонажатия кнопки на игре "пуск"

[/SPOILER]
Поясни по этому если не сложно , так и не разобрался для чего он.
 

Andronio

Флудер
Дней с нами
948
Репутация
46
Розыгрыши
0
Сообщения
349
Лайки
1.394
Когда включается игра "пистолет" 3,99/4,99 нужно нажать начало или пуск, я уже не помню, т.к. не нажимаю. Вот эту кнопку скрипт и нажимает.
 
  • Like
Лайки: zet17

Volk7

Флудер
Дней с нами
286
Репутация
6
Розыгрыши
0
Сообщения
286
Лайки
667
разобрался для чего он.
При переходе неавторизованного персонажа в игру сразу кидает на страницу авторизации, минуя промежуточную
 

Andronio

Флудер
Дней с нами
948
Репутация
46
Розыгрыши
0
Сообщения
349
Лайки
1.394
Естественно. А как должно быть? Сначала авторизация, затем игра.
 

Andronio

Флудер
Дней с нами
948
Репутация
46
Розыгрыши
0
Сообщения
349
Лайки
1.394
Моя попытка решения проблемы картинок.
Скрипт скрывает сообщения. Если completeHide равен 1 и у пользователя меньше newUserMessages сообщений, то его сообщение удаляется совсем. Если completeHide равен 0 и у пользователя меньше newUserMessages сообщений и в сообщении есть картинка, то его сообщение скрывается, появляется кнопка показать сообщение и часть сообщения, чтобы понять, надо раскрывать или нет. Если в сообщении картинок более maxPics у любого пользователя, то сообщение скрывается.
Сейчас скрипт работает по всему форуму, если нужна какая-то конкретная тема, в "// @match" записываем свою строку.

Код:
// ==UserScript==
// @name         Miped forum spam blocker
// @namespace    http://tampermonkey.net/
// @version      0.1
// @description  Удаляет плохие сообщения
// @author       Andronio
// @match        https://miped.ru/f/threads/*
// @grant        none
// @run-at  document-end
// ==/UserScript==

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

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

let messagesBuffer = [];

(function() {
    'use strict';

    let badMessageCounter = 0;
    let messages = document.querySelectorAll(".messageContent");
    messages.forEach(message => {
        let messagesCount = +message.closest(".uix_message").querySelector(".concealed").innerText.replace(/[^\d]+/, '');
        if (completeHide && messagesCount < newUserMessages)
            message.closest(".sectionMain.message").style.display = "none";
        else {
            let messagesPics = message.querySelectorAll("img");
            let imgCount = 0;
            messagesPics.forEach(img => {
                if (!img.src.startsWith("https://miped.ru/f/styles/"))
                    imgCount++;
            });
            if (imgCount > maxPics || imgCount && messagesCount < newUserMessages) {
                messagesBuffer.push(message.innerHTML);
                messagesPics.forEach(img => img.outerHTML = "<span>Здесь была картинка</span>");
                message.innerHTML = `<button name="show-bad-message" data-show="${badMessageCounter}">Показать</button><br>${message.innerText.slice(0,80)}`;
                badMessageCounter++;
            }
        }
    });
    let buttonShow = document.querySelectorAll('[name="show-bad-message"]');
    buttonShow.forEach(btn => btn.addEventListener("click", btnClickHandler));
})();

function btnClickHandler(event) {
    elem = event.target;
    elem.closest(".messageContent").innerHTML = messagesBuffer[elem.dataset.show];
}
 
Последнее редактирование: