Black

(Колледж операторов)
Увидев, что многие дилеры страдают от регулярного пропадания адресов из общего поиска, я решил по мере своих сил помочь в решении этой проблемы. Для этого мной был написан код на Python3, который с аккаунта сотрудника магазина ищет в вашем магазине все адреса, не отображающиеся в поиске, а дальше каждый из них "чинит", возвращая обратно в поисковый каталог. В этой статье будет дана подробная инструкция по настройке кода на Linux и MacOS, а также предоставлено общее пояснение принципа работы.

Принцип работы кода
После активации код находит рабочее зеркало площадки и по нему заходит в аккаунт, данные от которого вы пишите в конфигурационном файле. При заполнении данных указывается логин, пароль, а также тип решения 2FA. На данный момент реализовано прохождение 2FA через проверочные коды (2FA через PGP в коде пока не прописан и будет добавлен по запросу). Совершив вход в аккаунт, скрипт заходит на дашборд вашего магазина, от туда собирает все активные товары и в странице редактирования каждого из них берёт категорию. Для дальнейшей работы будут оставлены только товары из категорий ПАВ, но при желании вы можете расширить или уменьшить список индексируемых категорий.

После сбора информации по товарам, скрипт собирает все моментальные адреса с их страниц и проходится в каталогах по каждому уникальному сочетанию (категория - город - район/станция - фасовка) в поисках ваших товаров. Те сочетания поисковых запросов, в которых не было найдено вашего конкретного товара, будут переданы в последующую обработку. В скрипте также заложена логика по добавлению типов кладов в поисковые сочетания. Она не прописана в рабочую версию, так как в общении с одним дилером я установил, что часто неотображающийся адрес появляется в каталоге при проставлении нужного типа клада. Если вы считаете по другому, этот вопрос можно обсудить, а логику для индексации типов кладов - включить.

Все пропавшие адреса заносятся в CSV файл, чтобы вы могли с ними детальнее ознакомиться. Далее по каждому товару собираются моментальные лоты (информация со страницы /product/x/momental, где x - id товара) и оставляются те из них, в которых были обнаружены исчезнувшие клады. В каждый такой оставленный лот по пропавшему району / станции скрипт сначала добавляет клад, а после сразу же его удаляет. Эта операция возвращает исчезнувший адрес в каталог в течение 5-10 минут. Если же все ваши адреса были в каталоге в момент сбора данных, то скрипт выведет об этом сообщени и завершит работу.

Требования
  1. Python3. По умолчанию установлен на Whonix, Tails и прочих дистрибутивах Linux. Для проверки пропишите к командной строке "python3 -V", что покажет вам версию Python на устройстве. Если вы работаете с MacOS, то для установки данного языка программирования смотрите инструкцию ниже.
  2. Аккаунт на Гидре с 2FA через проверочные коды и некоторыми полномочиями. Во-первых, должен быть доступ на cоздание / изменение / удаление товаров. Это требуется для того, чтобы код мог правильно определять категориии продуктов - если делать это с их страниц, то нет возможности различать кристаллы и муку мефедрона и альфа-пвп, а в странице редактирования хранится привязка товара к именно к ID. Во-вторых, добавление / просмотр / редактирование своих адресов. Это нужно для того, чтобы скрипт мог создавать клады и после их удалять. При этом аккаунт, с которого совершается проверка, не должен быть помещён в премодерацию. Для выполнения данного пункта я рекомендую зарегистрировать нового пользователя, поставить ему 2FA и дать необходимые права в магазине.
  3. Аккаунт на https://anti-captcha.com/ , требуется для автоматического решения капч. Стоит копейки, можете закинуть 5$ и забыть на месяц при каждодневной работе кода. Оплата возможна через криптовалюту, XMR в том числе.

Где скачать сам код?
Скачать файлы для кода можно ссылкам ниже (предоставлены ссылки с двух файлообменников на случай оффлайна какого-либо одного). После скачивания внимательно прочитайте всю дальнейшую инструкцию и пропишите все указанные команды в терминале. В случае возникновения каких-либо ошибок / вопросов / уточнений, попросите меня отписать Вам в ЛС в этом треде.
  1. https://turbo.me/folder/EBKmSS (все файлы вместе)
  2. https://www.solidfiles.com/v/g6QLKzvYQRAPm (config.py)
    https://www.solidfiles.com/v/ZZkP63qB4QnBy (main.py)
    https://www.solidfiles.com/v/m27LzgpKRz8Kr (requirements.txt)

Установка Python3 на MacOS
Как уже было написано, на Linux Python3 идёт по умолчанию. Если же вы работаете с MacOS (что крайне не рекомендуется из соображений безопасности, лучше в нашем деле работать с Tails / Whonix или прочих анонимных ОС), то откройте Терминал через Finder/Утилиты и пропишите строчки снизу.

Данная команда установит инструмент для установки Python, не забудьте нажать Enter, как терминал это попросит. Полная загрузка может занять до 10 минут.
>>
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install.sh)"

После откройте для редактирования файл ~/.profile через:
>> nano ~/.profile
  • Напишите в открывшемся окне команду ниже, после нажмите Ctrl+S и Ctrl+X, сохранив таким образом файл:
    >> export PATH="/usr/local/opt/python/libexec/bin:$PATH"
  • Если вы работаете с OS X 10.12 (Sierra) или старше то вместо команды выше напишите:
    >> export PATH=/usr/local/bin:/usr/local/sbin:$PATH

Дальше уже непосредственно установите сам Python:
>> brew install python3

Установка необходимых компонентов
После того, как вы убедились, что на вашем устройстве установлен Python3, выполните следующие команды:

(Только для Linux) Установка инструмента управления модулями, а также доп. пакетов для обеспечения надёжной среды программирования.
>> sudo apt update
>> sudo apt -y upgrade
>> sudo apt install -y python3-pip

Создание директории fix_addresses (название может быть любым), в которой будет код и его виртуальное окружение.
  • Если вы выполняете настройку с Tails, то папка должна быть создана в разделе Persistent. таким образом вам не придётся устанавливать все необходимые компоненты заново при перезагрузке системы:
    >> cd ~/Persistent
    >> mkdir fix_addresses
    >> cd fix_addresses
  • Если настройка идёт с Whonix или другой операционной системы, включая MacOS, то вы можете создать папку в любом месте, пусть для общего примера это будет директория вашего текущего пользователя:
    >> cd ~
    >> mkdir fix_addresses
    >> cd fix_addresses

Установка модуля для работы с виртуальным окружением и его создание в выбранной директории:
  • Если вы работаете с Whonix / Tails / прочих дистрибутивов Linux:
    >>
    sudo apt install -y python3-venv
  • Если вы работаете с MacOS:
    >> pip3 install virtualenv

Дальше команды одинаковы для всех операционных систем. В дальнейшем перед запуском кода вам всегда нужно будет прописывать вторую команду из этого пункта:
>> python3 -m venv env
>> source env/bin/activate

Следом вы скачиваете все файлы, которые я вам отдаю [requirements.txt, main.py, config.py], и помещаете их в созданную директорию, после чего прописываете команду для установки всех требуемых модулей.
  • Если вы выполняете настройку с Tails:
    >> torsocks pip3 install -r requirements.txt
  • Eсли настройка идёт с Whonix / прочих дистрибутивов Linux / MacOS:
    >> pip3 install -r requirements.txt

После выполнения этих шагов вы полностью подготовите среду для запуска скрипта. Останется лишь настроить конфигурационный файл.

Настройка config.py
В конфигурационном файле прописаны константы (параметры), которые вы должно "скормить" коду для его работы. Если у значения параметра вы видите квадртаные скобки [], то этот параметр представляет из себя список, в котором может находиться несколько элементов. Элементы нужно записывать через запятую, при этом строковые элементы должны окружать одинардные или двойные кавычки '' / "", в то время как для цифр они не нужны. Теперь по пунктам объясню значение каждого параметра:

  • URLS — все открытые зеркала Гидры, из которых подбирается основная ссылка для работы. Если у вас есть дилерское зеркало и вы хотите осуществлять работу через него, можете самостоятельно, подобно тому, как прописаны другие ссылки, добавить его в список (ВАЖНО: при добавлении другой ссылки не ставьте слэш "/" в конце, иначе код не сможет пройти 2FA).
  • PROXIES — прокси для использования Tor'а. Без знаний не трогать.
  • HEADERS — хэдеры для подключения к сайту. Без знаний не трогать.
  • PROCESSES_N — количество процессов, с которыми будет собираться информация. Чем больше, тем быстрее, но 10 - оптимальное число, обеспечивающее хорошую скорость, так что лучше не трогать.
  • USERNAME — ваш логин от аккаунта на площадке.
  • PASSWORD — ваш пароль от аккаунта на площадке.
  • PASS_TYPE — тип входа по 2FA через проверочные коды. 2fa_backup - вход по бэкап ключу, требует синхронизации времени на устройстве и введеннёого параметра BACKUP_CODE. С таким вариантом ваше участие в работе кода не нужно, более автоматизированный вариант. 2fa_code - вход непосредственно по проверочному коду, не требует бэкапа, но вынудит вручную вводить код при запуске скрипта. Более безопасный вариант.
  • BACKUP_CODE — 2FA бэкап-ключ, который нужно ввести при PASS_TYPE = 2fa_backup.
  • ANTICAPTCHA_API — API-ключ антикапчи, для получения которого требуется аккаунт на сайте. Ключ будет выдан вам сразу после регистрации, его нужно скопировать и вставить в конфигурационный файл.
  • SELECTED_CATS — выбранные ID категорий, по которым будут проверяться отсутствующие моментальные адреса. Изначально поставлены все ПАВ + реактивы, но вы можете изменить этот список по своему усмотрению.
  • EXTRA_PRODUCTS — ID товаров-исключений, которые входят в список выбранных категорий, но при этом не должны проверяться (выдача МК, рабочие позиции...).

Запуск программы
После того, как вы выполнили установку необходимых компонентов и настроили конфигурационный файл, вам лишь остаётся, находясь в директории проекта, прописать следующую команду и наблюдать за выполнением кода:
  • Если вы выполняете запуск с Tails:
    >> torsocks python3 main.py
  • Eсли запуск идёт с Whonix / прочих дистрибутивов Linux / MacOS:
    >> python3 main.py

Важно! Если запуск идёт с MacOS или систем Linux, которые не берут трафик из Tor (Ubuntu / Debian...), то в конфигурационном файле в параметре PROXIES поменяйте 9050 на 9150 в обоих строчках, а после запустите Tor Browser. 9050 - это порт Tor'а, по которому трафик в Whonix и Tails идёт по умолчанию. 9150 - порт браузера, для запуска трафика по которому требуется соответственно запустить сам браузер.

Чтобы запускать код в дальнейшем после перезагрузки системы, вам обязательно предварительно нужно будет входить в виртуальное окружение через пропись данной строки (вы узнаете, что вход осуществлён, по надписи env в скобках с левого края строки ввода в терминале):
>> source env/bin/activate

Общие комментарии
  • Все части кода тщательно откомментированны, чтобы вы сами могли полностью просмотреть файл и убедиться, что он выполняет только заявленную задачу. Однако, в качестве дополнительной меры проявления паранойи вы можете обратиться к любым сторонним программистам и отдать им код на ознакомление, чтобы они развеяли любые ваши сомнения. Разделение кода на основной и конфигурационный файлы позволит скрыть вам, для какого сайта предназначается скрипт, так что по вопросу проверки можно обратиться к любому белому программисту с любого белого фриланс сайта.
  • В данный момент код тестировался лишь на одном магазине, так что возникновение каких-либо ошибок в работе - это нормально. Я постарался максимально учесть все возможные исключения, но вполне допустимо, что в ходе исполнения скрипта могут всплыть какие-либо ошибки. Если такое случится, и вы увидите надпись "Ошибка работы, обратитесь к разработчику", либо заметите какие-либо другие неисправности самостоятельно, то пишите в наш совместный диалог, скидывайте мне файл loginfo.txt (все действия кода тщательно логируются в этот файл, который вы найдёте в главной директории программы), и я решу вашу проблему.
  • Учитывая, что я сказал про логирование, хочу дополнительно выделить, что в лог записываются только действия кода и ошибки, туда не добавляется информация о введённых вами данных аккаунта.
  • Автоматизация работы кода на сервере возможна, однако, учитывая, что аккаунт для работы скрипта имеет доступ к важной информации (как минимум, к возможности редактировать товары), из соображений безопасности я бы не рекомендовал загружать данные от него на сервер. Лучше обучите работе с кодом оператора и скажите запускать код каждые пару часов - этого будет более чем достаточно. После внесения исправлений баг появляется нескоро, плюс сами изменения вступают в силу буквально за несколько минут. Если же вы всё-таки хотите запускать код в атоматическом режиме, то инструкции для этого вы сможете получить от меня в ЛС.

История версий
  1. Релиз версии 1.0.0 - 2021-07-07.
  2. Версия 1.1.0, выпущена 2021-07-13. Информация: http://hydraclbbg7tspwiknhejpewdzatd5egkw67pa3e64ipzde3z4hopmqd.onion/forum/reply/5282656

Также выражаю отдельную благодарность дилеру MEROVING, который предоставил доступ к панели магазина для тестирования кода и активно помогал советами при разработке!
 
Сверху