Automatically check in to Southwest flights using this easy-to-use gem. It'll also email you the results so you know ASAP whether a check in was successful. Seconds count when you're fighting for that window or aisle seat!
It appears southwest-headers using the latest versions of Chrome (110) and undetected-chromedriver (3.4.6) produces an invalid header file. Read this thread for a workaround.
- A *nix-based server that will be on when you need to check in
- Ruby 2.3 or higher
- The
at
command
Tested and working on an Ubuntu 20.04 server (hosted by DigitalOcean).
The Southwest API now requires some randomly generated headers to check in. Because these headers change at a set interval, they need to be constantly refreshed for any check-in script (like this one) to work. To get these headers, please follow the instructions here:
https://github.com/byalextran/southwest-headers
Once a cron job has been scheduled, do these steps:
Step 1: Create the file .autoluv.env
in your user's home directory.
nano ~/.autoluv.env
Step 2: Copy/paste the following into the text editor.
LUV_HEADERS_FILE = /PATH/TO/southwest_headers.json
Step 3: Update the path (and filename if changed from the default) to the correct path of the headers file.
Step 4: Hit Ctrl+O
to save the file and then Ctrl+X
to exit the text editor.
gem install autoluv
autoluv schedule ABCDEF John Doe
Both departing and returning flights (if applicable) will be scheduled for all passengers tied to the confirmation number. After scheduling, there's no need to keep the terminal window open or active. The check in will happen behind the scenes at the appropriate time.
Note: If a first or last name includes a space, wrap it in double quotes (e.g. "Mary Kate")
Before using this command, follow the instructions below to configure the required settings.
autoluv schedule ABCDEF John Doe john.doe@email.com optional@bcc.com
The second email address is optional and will be BCCed the results.
autoluv checkin ABCDEF John Doe
This is optional, however, highly recommended. Especially if a scheduled check-in fails, you'll get notified and can manually check in. Every second counts!
Boarding positions are shown for each passenger when a check-in succeeds.
Step 1: Open/create the file .autoluv.env
in your user's home directory.
nano ~/.autoluv.env
Step 2: Copy/paste the following into the text editor.
LUV_FROM_EMAIL = from@email.com
LUV_USER_NAME = from@email.com
LUV_PASSWORD = supersecurepassword
LUV_SMTP_SERVER = smtp.email.com
LUV_PORT = 587
Step 3: Replace the values with the appropriate SMTP settings for your email provider. LUV_FROM_EMAIL
should be the email address associated with LUV_USER_NAME
.
If your email account has two-factor authentication enabled, be sure to use an app-specific password and not your account password.
Step 4: Hit Ctrl+O
to save the file and then Ctrl+X
to exit the text editor.
To verify your SMTP settings, schedule a check-in with invalid information and a valid email address.
autoluv schedule AAAAAA Fake Name valid@email.com
If everything is set up correctly, you'll get an email notifying you of an unsuccessful check-in.
Use this Zap to get a custom Zapier email address that forwards emails as text messages. It's handy for people like me who don't have email notifications enabled on their phone or computer and want check-in results ASAP.
autoluv
uses the at
command behind the scenes to check in at a specific time. Use the related atq
and atrm
commands to manage check-ins.
Make note of the first column's number.
atq
11 Tue Sep 22 08:05:00 2020 a user
12 Mon Sep 28 15:45:00 2020 a user
7 Wed Sep 23 11:40:00 2020 a user
atrm 11
The last line in the output will show you the confirmation number and name.
at -c 11
Display the list of all scheduled confirmation numbers and names.
atq | awk '{ print "at -c " $1 }' | bash | grep autoluv
gem update autoluv --conservative
Bug reports and pull requests are welcome.
The gem is available as open source under the terms of the MIT License.