Ruby on Rails Покупка товара из Amazon с использованием API?

Я хотел бы программно автоматизировать совершение покупки на Amazon из моего приложения rails, так как я должен вручную делать одни и те же покупки неделю за неделей. Это будет использовать мою собственную платежную информацию/учетную запись, а не от имени пользователя.

Я просматривал большинство своих API и обнаружил, что вы можете искать элемент, добавлять его в корзину и т.д., но я не могу найти способ сделать покупку.

Кто-нибудь знает, как это сделать через API? Было бы здорово автоматизировать наш ручной процесс. Кажется, что это должно быть возможно, поскольку https://zincapi.com/, похоже, облегчает это.

Ответы

Ответ 1

Вы можете сделать это, просто не через API. Вместо этого используйте:

Mechanize

Как подробно описано в их документах:

Библиотека Mechanize используется для автоматизации взаимодействия с веб-сайтами. Механизм автоматически сохраняет и отправляет файлы cookie, переадресовывается и может следовать ссылкам и отправлять формы. Поля формы могут быть заполнены и отправлены.

Вы можете запрограммировать расширенный веб-искатель, который

  • записывает вас на Amazon
  • добавляет нужный товар в корзину
  • проверяет и оплачивает нужные элементы.

Как установить это

Я предложу некоторую логику и опишу процесс примерно. Было бы не вдаваться в подробности вопроса, чтобы подробно объяснить все. Будьте готовы к большому рытью.

1. Добавьте свой сканер

Прокопайте прямо в Механизацию. Узнайте, как войти на ваш сайт, искать ссылки, кнопки и все, что аккуратно. Он построен на Nokogiri, который использует селекторы CSS. Это может занять некоторое время, но это стоит пота!

Кроме того, разделить логику отдельных задач на разные методы. Что-то вроде

class AmazonCrawler
  attr_accessor :agent

  def initialize
    @agent = Mechanize.new
  end

  def login
    agent.get(LOGIN_PATH)
    # fill in and submit the form
  end

  def add_item_to_basket
    agent.get(ITEM_PATH)
    # find 'add to basket', etc...
  end

  def checkout
    agent.get(CHECKOUT_PATH)
    # validate adress, payment and place the order
  end

  def place_weekly_order
    AmazonCrawler.login
    AmazonCrawler.add_item_to_basket
    AmazonCrawler.checkout
  end
end

Таким образом, вы можете легко добавить другие задачи, если они вам понадобятся позже

2. Добавить Cronjob

Чтобы настроить свой недельный график, я предлагаю использовать всякий раз, когда он будет. Этот драгоценный камень делает задачи планирования легкими peasy

schedule.rb

every :sunday, :at => '12pm' do
  runner "AmazonCrawler.place_weekly_order"
end

Sidenote

В идеале я бы создал конкретную учетную запись Amazon, которая только делает это. Вы не хотите, чтобы бот просматривал элементы, которые вы лично добавили в течение недели, и, возможно, не уверены в покупке.

Кроме того, обязательно сохраняйте свои учетные данные в переменных ENV, поэтому они не отображаются в вашем коде.

Заключение

Надеюсь, вам это удастся, для вас будет много нового, но это действительно забавная задача и будет очень полезной, когда ваш маленький искатель будет запущен и работает.