/aliParser

Primary LanguagePythonMIT LicenseMIT

aliParser

Делает полный дамп твоей истории заказов (активные, архивные, диспуты, отменённые).

Important

Работает только с АлиРаша!

Как юзать?

  1. Заходишь через браузер на АлиРаша
  2. Логинишься
  3. Прописываешь кукисы в файл .env или ставишь руками переменные среды, список кук ниже (вместе с кавычками!!!)
  4. Запускаешь python main.py

Tip

Если хотите замедлить парсинг для избежания бана, запускайте со слипом (1й параметр задаёт sleep между запросами в секундах): python main.py 1

Tip

Если у вас много заказов можете увеличить размер страницы (2й параметр задаёт число запрашиваемых за раз заказов): python main.py 0 100

Что на выходе?

На выходе получаешь 3 файлика в формате csv:

  1. активные заказы
  2. архив
  3. диспуты

В файлах csv сохраняются следующие поля:

  • name - имя лота (как он назывался на момент заказа)
  • options - опция лота (цвет, фактура, уточнение модели, также может нести информацию о количестве, например: 1pcs, 25pcs, 500pcs)
  • quantity - сколько инстансов лота было заказано
  • status - статус и дата; возможные статусы (из моей истории заказов): Received, Cancelled, Finished, Problems with delivery
  • image_url - ссылка на картинку лота в разрешении 220х220

Note

Поскольку вся затея была ради того, чтобы получить список лотов распоряжении, то из архивных заказов однозначно следует отфильтровать заказы со статусом Cancelled: grep -v 'Cancelled ' archive.csv > archive_new.csv. Статусы Finished и Problems with delivery неоднозначны - это могут быть как полученные заказы, так и нет (например, недоставленные к моменту закрытия по таймауту, но диспут по которым не открывался); по этим статусам надо в индивидуальном порядке вспоминать что было получено, а что утеряно безвозвратно.

Какие кукисы нужны и как их добыть

Забиваешь в .env следующие переменные (имя кук такое же):

XMAN_T="..."
XMAN_F="..."
X_AER_TOKEN="..."

Caution

Кавычки обязательны!

Important

/* Paranoid mode*/: На всякий случай будет нелишним подставить строку User Agent того браузера, откуда были взяты куки (переменная UA в коде)

Linux

Для извлечения кук из Firefox я использовал баш-скрипт по ссылке (отфильтровывает одноимённые куки с глобального АЕ и Алибабы):

./extract_cookies.sh /home/<user>/.mozilla/firefox/<profile>.default/cookies.sqlite \
  | grep -v "aliexpress.com" | grep -v "alibaba.com" | grep -e xman_t -e xman_f -e x_aer_token

Win

todo

Known issues

Cookies exiration

Если скрипт вылетает подобным образом, то проверьте не протухли ли ваши куки:

Traceback (most recent call last):
  File "aliParser/main.py", line 97, in <module>
    main()
  File "aliParser/main.py", line 46, in main
    dataRaw, next = getItems(s, mode, page, PAGE_SIZE)
  File "aliParser/main.py", line 60, in getItems
    items.append(respJSON["items"])
KeyError: 'items'