Ruby on Rails 使用 API 从亚马逊购买商品?

Posted

技术标签:

【中文标题】Ruby on Rails 使用 API 从亚马逊购买商品?【英文标题】:Ruby on Rails Purchase item from Amazon using API? 【发布时间】:2018-06-05 23:16:55 【问题描述】:

我想通过我的 rails 应用程序以编程方式自动在亚马逊上进行购买,因为我必须每周都手动进行相同的购买。这将使用我自己的帐单信息/帐户,而不是代表用户。

我搜索了他们的大部分 API,发现您可以搜索商品、将其添加到购物车等,但我似乎找不到实际购买的方法。

有谁知道通过 API 执行此操作的方法?自动化我们的手动过程会很棒。看起来应该是可能的,因为https://zincapi.com/ 似乎促进了这一点。

【问题讨论】:

我相信实现这一点的唯一方法是绘制亚马逊的私有 API,例如亚马逊应用程序使用什么。不过,我确信这违反了他们的 TOS。我不知道正式这样做。 【参考方案1】:

您可以这样做,只需 not via the API。相反,使用:

机械化

正如their docs 中所描述的那样:

Mechanize 库用于自动与网站交互。 Mechanize 自动存储和发送 cookie,跟踪重定向,并且可以跟踪链接和提交表单。可以填充和提交表单字段。

您可以编写一个高级网络爬虫程序

让您登录亚马逊 将您想要的物品添加到购物篮中 结帐并支付您想要的物品

如何设置

我将提出一些逻辑并粗略描述该过程。详细解释所有内容超出了问题的范围。为大量挖掘做好准备。

1.添加您的抓取工具

深入了解机械化。了解如何登录您的网站、搜索链接、按下按钮以及所有这些简洁的东西。它建立在使用 CSS 选择器的Nokogiri 之上。可能需要一段时间才能掌握,但值得付出汗水!

此外,将单个任务的逻辑拆分为不同的方法。类似的东西

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

要设置您的每周计划,我建议使用whenever gem。这个 gem 让调度任务变得轻松简单

schedule.rb

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

旁注

理想情况下,我会设置一个特定的亚马逊账户,只做这个。您不希望机器人结帐您在一周内亲自添加的物品,并且可能还不确定是否要购买。

此外,请务必将您的凭据存储在 ENV 变量中,这样它们就不会暴露在您的代码中。

结论

我希望这能让你继续前进,你会学到很多新东西,但这实际上是一项有趣的任务,当你的小爬虫启动并运行时会非常有益。

【讨论】:

看来这几周会很有趣!感谢您提供详细的示例和建议!

以上是关于Ruby on Rails 使用 API 从亚马逊购买商品?的主要内容,如果未能解决你的问题,请参考以下文章

Ruby on Rails Paypal REST API 来宾结账

如何在 ruby​​ on rails 中集成多个支付网关(多个商家)?

ruby 使用Devise gem验证您的API,使用标头标记。 Ruby on Rails 4.阅读评论。

Ruby 使用标头进行身份验证的方法?

如何使用 Ruby on Rails 模拟 twitter api?

如何从我的 Ruby on Rails API 解析这些散列转换为字符串,以便它可以作为 Javascript 中的对象进行访问?