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

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

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

  • Да

    Голосов: 293 63,8%
  • Нет

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

  • Всего проголосовало
    459
Эксперты по js , а подскажите , как вы решаете вопрос когда нужно найти конкретное слово в html странице и как только оно появится делать какое-то действие . Слово заранее известно , его не нужно откуда-то брать. Может есть скелет такой реализации ?
 


Эксперты по js , а подскажите , как вы решаете вопрос когда нужно найти конкретное слово в html странице и как только оно появится делать какое-то действие . Слово заранее известно , его не нужно откуда-то брать. Может есть скелет такой реализации ?
обычно, где текст появится известно заранее и можно проверять тот элемент. Ну а так, то так
JavaScript:
var content = document.body.textContent || document.body.innerText;
var hasText = content.indexOf("твой текст")!==-1;
 
Эксперты по js , а подскажите , как вы решаете вопрос когда нужно найти конкретное слово в html странице и как только оно появится делать какое-то действие . Слово заранее известно , его не нужно откуда-то брать. Может есть скелет такой реализации ?
Если определять нужно не срочно, то можно по таймеру периодически проверять наличие, например так:
JavaScript:
waitForText("hello");

function waitForText(str) {
    if (document.querySelector('my_element').innerText.indexOf(str) == -1) return setTimeout(waitForText, 1000, str);
    // здесь после найденого текста
}
Если элемент не известен, то можно искать по всей странице document.body.innerHTML.indexOf('ищем текст')
либо по изменению документа mutation-observer
Если изменение в текстовом поле, например инпут, то можно повесить обработчик на change, input, blur
JavaScript:
let myinput = document.querySelector('input');
myinput.addEventListener('input', inputEntered);

function inputEntered(event) {
    if (event.target.innerText.indexOf('ищем текст') == -1) return;
    // здесь обрабатываем
}
 
Как пользоваться скриптом автозаполнения адреса ?
Справа сверху появилось окошко
Что нужно вводить чтоб адрес заполнился.
Для примера стоят такие данные но ничего не работает

let myIndex = "100000";
let myPhoneCode = "+7";
let myCountry = "KZ";
//let myCountry = "KZ";
let myProvince = "Almaty";
let myCity = "Almaty";

let orderPhone = 0;
let orderAddr = 1;
let orderName = 2;
let orderCountry= 3;
let orderCity = 4;
let orderProvince = 5;
let orderIndex = 6;
let orderPhCode = 7;
 

Вложения

  • Снимок564.JPG
    Снимок564.JPG
    12,6 KB · Просмотры: 128
Как пользоваться скриптом автозаполнения адреса ?
Справа сверху появилось окошко
Что нужно вводить чтоб адрес заполнился.
Для примера стоят такие данные но ничего не работает
Описание ранее читал? Описание
Страна теперь должна быть полностью Kazakhstan Описание 2
Если и после этого не понятно, распишу еще подробнее.
И еще более ранняя версия Описание 0
 
Чуть подправленный скрипт для входа, если появился слайдер, то перезагружает страницу и пробует войти еще раз. Работает не всегда.

Код:
// ==UserScript==
// @name         Aliexpress Login no slide
// @namespace    http://tampermonkey.net/
// @version      1.2
// @description  Автоматический вход на Алиэкспресс
// @author       Andronio
// @match        https://login.aliexpress.com/*
// @match        https://login.aliexpress.ru/*
// @grant        none
// ==/UserScript==
(function() {
    'use strict';

    let ddelay = 1000;


    let key = sessionStorage.getItem('slider');
    if (key) {
        let mass2 = parseString(key);
        setTimeout( () => {
            document.getElementById("fm-login-id").value = mass2[0];
            document.getElementById("fm-login-password").value = mass2[1];
            document.querySelector(".fm-button").click();
        }, ddelay);
        sessionStorage.removeItem('slider');
        return;
    }
    let div = document.createElement('div');
    div.className = 'regavhod-box';

    div.innerHTML += `
    <input type="text" id="namepass"></br>
    <input type="button" id="vhod" class="regavhod-btn" value="Вход">
    `;

// Стили
    let styles = `
    .regavhod-box {
    position: fixed;
    top: 0;
    right: 0;
    background: white;
    box-shadow: 1px -1px 4px 1px;
    padding: 10px 20px;
    z-index:9999;
    }

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

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

    let btn2 = document.getElementById("vhod");
    btn2.addEventListener('click', vhodFunc);
    let mytext = document.getElementById("namepass");
    mytext.addEventListener('keydown', event => {
        if (event.keyCode == "13") {
            document.getElementById('vhod').click();
        }
    });
    mytext.focus();
    console.log("ali cookie " + document.cookie );

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

        mass = parseString(namepass.value);
        if (mass) {
            let tabLogin = document.querySelectorAll(".fm-tabs-tab");
            if (!tabLogin.length) tabLogin = document.querySelectorAll(".next-tabs-tab");
            if (tabLogin.length) {
                if (!tabLogin[1].classList.contains("active")) tabLogin[1].click();
            }
            let signName = document.getElementById("fm-login-id");
            let signPass = document.getElementById("fm-login-password");
            let enterButton = document.querySelector(".fm-button");
            signPass.value = mass[1];
            signName.value = mass[0];
            enterButton.click();
            setTimeout(checkSlider, 1000, mass[0] + ':' + mass[1]);
        } 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;
    }

    // Проверяем слайдер, если есть, то обновляем и вход
    let tryAmount = 50; // количество попыток
    function checkSlider (logname) {
        if (--tryAmount) {
            if (document.getElementById('login-check-code').clientHeight) {
                sessionStorage.setItem('slider', logname);
                //location.reload();
                location.href=location.href;
            } else setTimeout(checkSlider, 200, logname);
        }
    }
})();

Можно поиграться временем до повторного входа. Сейчас 1 секунда.
let ddelay = 1000;

Можно ли чуть подправить скрипт. Походу имеет значение не время повторного ввода.
А время через которое обновиться страница. Если быстро обновить страницу лезет слайдер. Если выждать секунды 2 , слайдера нет.
 
Нужен скрипт для автоматического выбора оплаты через webmoney
(Чтоб не нажимать вручную на кнопку Webmoney когда перехожу с корзины на оплату )
И возможен ли вариант автовыбора доставки товара только с помощью "Aliexpress saver shipping" , а то часто доставку курьером предлагает(неудобно)
 
Последнее редактирование:
  • Like
Реакции: Author
Можно ли чуть подправить скрипт. Походу имеет значение не время повторного ввода.
А время через которое обновиться страница. Если быстро обновить страницу лезет слайдер. Если выждать секунды 2 , слайдера нет.
Не работает. Попробовал 5 секунд перед перезагрузкой. Видимо F5 что-то немного не так делает.
 
  • Like
Реакции: kpmtmby
Обновлённый скрипт для авторизации на Скидка.ру

Баги или пожелания по скрипту в лс.
p.s. код не смотреть, сделано лишь бы работало.

JavaScript:
// ==UserScript==
// @name         Skidka - auth.
// @namespace    http://tampermonkey.net/
// @version      0.2
// @author       Dimokin
// @match        https://skidka.ru
// @match        https://skidka.ru/user/auth/
// @match        https://skidka.ru/shops/details/aliexpress-keshbek/
// @match        https://skidka.ru/user/goto/72/
// @grant        none
// @require http://code.jquery.com/jquery-3.3.1.min.js
// ==/UserScript==
(function() {
    'use strict';

    var $ = window.jQuery;

    var MY_MAIL = 'ПОЧТА';
    var MY_PASSWORD = 'ПАРОЛЬ';

    $(document).ready(function() {
        setTimeout(function() {
            if (window.location.href === 'https://skidka.ru/') {
                window.location.href = 'https://skidka.ru/user/goto/72/';
            } else if (window.location.href === 'https://skidka.ru/user/goto/72/') {
                setTimeout(function() {
                    if ($('.goto-not-logged__buttons').length) {
                        window.location.href = $('.goto-not-logged__buttons a').attr('href');
                    }
                }, 1000);
            } else {
                let nativeInputValueSetter = Object.getOwnPropertyDescriptor(window.HTMLInputElement.prototype, 'value').set;

                setTimeout(function() {
                    let login = document.querySelector('.auth__phone-input input');
                    let pass = document.querySelector('.pass-input  input');

                    nativeInputValueSetter.call(login, MY_MAIL);

                    login.dispatchEvent(new Event('change', {
                        bubbles: true
                    }));
                    login.dispatchEvent(new Event('input', {
                        bubbles: true
                    }));

                    nativeInputValueSetter.call(pass, MY_PASSWORD);

                    pass.dispatchEvent(new Event('change', {
                        bubbles: true
                    }));
                    pass.dispatchEvent(new Event('input', {
                        bubbles: true
                    }));

                    setTimeout(function() {
                        $(".auth__buttons button").trigger('click');

                        setTimeout(function() {
                            window.location.reload();
                        }, 1000);
                    }, 1000);
                }, 1000);
            }
        }, 1000);
    });
})();
Подскажите, в чем может быть проблема, почему скрипт логинится по кругу бесконечо ? Захожу через страницу https://skidka.ru/user/auth/, скрипт логинится, доходит до главной страницы, куда то переходит и выскакивает окно с кнопками ВХОД и ОТМЕНА, проходит пару сек и опять открываетя страница для ввода логина пароли и так по кругу. Заметил что иногда всетаки скрипт срабатывает, доводя до главной страницы АЛИ, но это прим 2 из 10 раз. Подскажите, куда копать , Спасибо.
 
  • Like
Реакции: thehawk
Подскажите, в чем может быть проблема, почему скрипт логинится по кругу бесконечо ? Захожу через страницу https://skidka.ru/user/auth/, скрипт логинится, доходит до главной страницы, куда то переходит и выскакивает окно с кнопками ВХОД и ОТМЕНА, проходит пару сек и опять открываетя страница для ввода логина пароли и так по кругу. Заметил что иногда всетаки скрипт срабатывает, доводя до главной страницы АЛИ, но это прим 2 из 10 раз. Подскажите, куда копать , Спасибо.
У меня такой проблемы не встречалось.
Попробуй в скрипте везде поменять тайминги с 1000 на 2000.
 
  • Like
Реакции: hatvil
Не работает. Попробовал 5 секунд перед перезагрузкой. Видимо F5 что-то немного не так делает.
Заметил что если заполнить поле логина и обновить, то после этого можно заполнять логин и пароль - слайдера не будет
 
Скрипт для жены!
На товаре около цены появляется кнопка "получить ID". При нажатии в буфер копируются данные товара в виде:
Код:
US $2.08 Многоразовая сумка на молнии для хранения продуктов, 10 шт.
https://aliexpress.ru/item/4000020423288.html
1 1 1
Для настойки вывода используется строка
let outString = `price + ' ' + ship + item_name + newstr + item_id + newstr + mass1[0] + ' ' + mass1[1] + ' ' + mass1[2] + newstr + newstr`;
где
price - Цена товара
ship - Если есть, то будут цифры, иначе пусто
item_name - Название товара, укороченное до 80 символов
item_id - Ссылка на товар
mass1[0] \
mass1[1] -- выбор 1, 2, 3 соответственно
mass1[2] /
newstr - новая строка
' ' - пробел
Если доставка не бесплатная, то к цене добавляется цена доставки.
Если какого-то выбора характеристик товара нет, то вместо него будет пустое место.

Ссылка на гитхаб
 
Что сейчас юзают в фоксе - Tampermonkey, Greasemonkey или что-то ещё? slowpoke.jpg
 
  • Like
Реакции: aiGuest
Что сейчас юзают в фоксе - Tampermonkey, Greasemonkey или что-то ещё? slowpoke.jpg
я вообще не одно из них. Пишешь js скрипт, нажимаешь у гугле режим разраба и упаковать расширение и у тебя готовое расширение
 
  • Like
Реакции: Sobra и Odissey
Кликалка на двухчасовую кнопку в алишном генераторе

Скрытое содержимое доступно для зарегистрированных пользователей!
 
  • Like
Реакции: Яго Первый
А уверен, что нужен именно файл? Есть куки, есть localStorage. У JS нет доступа к файловой системе в целях безопасности. Из просторов инета (сохранение в файл)
JavaScript:
<script>
var text = 'как записать строку в файл ".txt" с помощью js?';
document.write(
    '<a href="data:text/plain;charset=utf-8,%EF%BB%BF' + encodeURIComponent(text) + '" download="text.txt">text.txt</a>'
)
</script>

Еще видел @future_ в скрипте getItem делал сохранение в файл
А не подскажешь, как запустить автоматическую скачку такого файла ?
Пробовал так
setTimeout('document.location.href="data:text/plain;charset=utf-8,%EF%BB%BF' + encodeURIComponent(text) + '" download="'+ email +'.txt";', 3000);
не выходит
 
Просто кликни на ссылку.
document.querySelector("a").click()
это первое что пришло в голову , только у этой ссылки нет никаких селекторов и обратиться к ней никак невозможно
 
это первое что пришло в голову , только у этой ссылки нет никаких селекторов и обратиться к ней никак невозможно
Как это нету? А "а"? Если нужен более уникальный селектор, так добавь его, например
document.write('<a id="my-super-cool-selector" href="data:text/plain;charset=utf-8,%EF%BB%BF'
Ну и далее по тексту

потом document.getElementById("my-super-cool-selector")
 
  • Like
Реакции: edwardfreedom и Odissey