kyamaguchi / amazon_auth

Sign In Amazon using Capybara and Selenium

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

AmazonAuth

Gem Version CircleCI

Sign In Amazon using Capybara and Selenium

amazon_auth_login

Recorded with Recordit

Installation

Add this line to your application's Gemfile:

gem 'amazon_auth'

And then execute:

$ bundle

Or install it yourself as:

$ gem install amazon_auth

Requirements

  • chromedriver

Before running, you need to download chromedriver.
And you may need to update chromedriver regularly.
Please download latest chromedriver_xxx.zip from https://chromedriver.storage.googleapis.com/index.html and place it somewhere on your PATH.

mv ~/Downloads/chromedriver /usr/local/bin/

Usage

Set Amazon credentials on your local machine

[Quick] You can set login and password in console.

[Recommended] Or you can convert them to protect them against shoulder surfing. Run amazon_auth and paste the output to .env. (AMAZON_USERNAME_CODE , AMAZON_PASSWORD_CODE and AMAZON_CODE_SALT)

amazon_auth_setup

envchain for security

You can store environment variables in macOS Keychain instead of dotenv. Check out envchain

brew install envchain

envchain --set amazon AMAZON_DOMAIN AMAZON_USERNAME_CODE AMAZON_PASSWORD_CODE AMAZON_CODE_SALT

# Run console with envchain
envchain amazon bin/console
envchain amazon bundle exec irb
envchain amazon rails console

Run

In console, you can move around pages using Capybara DSL

# Without credentials in .env
client = AmazonAuth::Client.new(login: 'your_amazon_email', password: 'your_amazon_password')

# With credentials in .env
client = AmazonAuth::Client.new

# Sign in
client.sign_in

# Continue to the page for Kindle
link = client.links_for('#navFooter a').find{|link| link =~ %r{/gp/digital/fiona/manage/} }
client.session.visit link

Use amazon site in different domain

Set AMAZON_DOMAIN in .env.

e.g. AMAZON_DOMAIN=amazon.co.jp for Japanese site

Keep cookies

Using capybara-sessionkeeper gem

client = AmazonAuth::Client.new(keep_cookie: true, debug: true)

You can change Capyabra.save_path when it isn't set

client = AmazonAuth::Client.new(keep_cookie: true, save_path: 'tmp/cookies', debug: true)

Logging

Normal logging

client = AmazonAuth::Client.new(verbose: true)

More logging (This includes session.current_url)

client = AmazonAuth::Client.new(debug: true)

Use Firefox

In console,

client = AmazonAuth::Client.new(driver: :firefox)

Development

Use .env.development instead of .env in development.

git clone https://github.com/kyamaguchi/amazon_auth.git
cd amazon_auth
bundle

./exe/amazon_auth
vi .env.development

rspec

./bin/console

Contributing

Bug reports and pull requests are welcome on GitHub at https://github.com/kyamaguchi/amazon_auth.

License

The gem is available as open source under the terms of the MIT License.

About

Sign In Amazon using Capybara and Selenium

License:MIT License


Languages

Language:Ruby 99.0%Language:Shell 1.0%