1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

ずぼらな人でも大丈夫!自動ログインでログインボーナスしっかりいただこうぜ!

Posted at

はじめに

ログインボーナスってあるじゃないですか。
毎日、会員サイトにアクセスするとポイントとかボーナスがもらえるやつです。

だいたいこういうのって〇〇ポイントを超えると「ランクが一つ上がる!」とか「ポイントと商品を交換!」とか地味に嬉しい特典が用意されているんですよね。

でも、自分で毎日欠かさずログインってなかなかできなくないですか?
私は先月のログインできたのはたったの2回です!( ・´ー・`)ドヤ

というわけでタイトルの通り、「特定のWebサイトにアクセスして、ログインをする」を自動化したいと思います。

定期実行するのはColabだとPROプランじゃないと難しそうなので他の方法を検討中です!

準備

  • chrome
  • Colab

私はUbuntu OSですが、問題なく実行できました。

また、Colabについての説明は今回割愛しますのでググってみてください。

コード解説

実は下記のコードにする前、webdriver.Chrome()でドライバを起動するところでエラーが発生しました。
下記のリンクを参考にインストール用のシェルを実行するように修正したところ解決しました。ノートブックも新しく作り直したほうがいいかもです。

下記のコードをまずColabのコード部分にコピペして実行します。

%%shell
# Ubuntu no longer distributes chromium-browser outside of snap
#
# Proposed solution: https://askubuntu.com/questions/1204571/how-to-install-chromium-without-snap

# Add debian buster
cat > /etc/apt/sources.list.d/debian.list <<'EOF'
deb [arch=amd64 signed-by=/usr/share/keyrings/debian-buster.gpg] http://deb.debian.org/debian buster main
deb [arch=amd64 signed-by=/usr/share/keyrings/debian-buster-updates.gpg] http://deb.debian.org/debian buster-updates main
deb [arch=amd64 signed-by=/usr/share/keyrings/debian-security-buster.gpg] http://deb.debian.org/debian-security buster/updates main
EOF

# Add keys
apt-key adv --keyserver keyserver.ubuntu.com --recv-keys DCC9EFBF77E11517
apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 648ACFD622F3D138
apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 112695A0E562B32A

apt-key export 77E11517 | gpg --dearmour -o /usr/share/keyrings/debian-buster.gpg
apt-key export 22F3D138 | gpg --dearmour -o /usr/share/keyrings/debian-buster-updates.gpg
apt-key export E562B32A | gpg --dearmour -o /usr/share/keyrings/debian-security-buster.gpg

# Prefer debian repo for chromium* packages only
# Note the double-blank lines between entries
cat > /etc/apt/preferences.d/chromium.pref << 'EOF'
Package: *
Pin: release a=eoan
Pin-Priority: 500


Package: *
Pin: origin "deb.debian.org"
Pin-Priority: 300


Package: chromium*
Pin: origin "deb.debian.org"
Pin-Priority: 700
EOF

# Install chromium and chromium-driver
apt-get update
apt-get install chromium chromium-driver

# Install selenium
pip install selenium

# Install pyvirtualdisplay
pip install pyvirtualdisplay
apt-get install -y xvfb

少し時間がかかるかもしれませんが、成功したことを確認したら、次に下記のコードをコピペして
適宜、内容をいじったら実行しましょう。

※ログイン画面は好きなサイトのURLを設定してください。
※USERNAMEとPASSWORDは左サイドメニューのシークレットから登録しておきます。ベタ書きでも動くことには動きますが。

import time
import pyvirtualdisplay
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.by import By
from selenium.webdriver.chrome.options import Options
from google.colab import userdata

# 仮想ディスプレイ環境を構築
display = pyvirtualdisplay.Display(visible=0, size=(1024, 768))
display.start()

# ChromeDriverのオプションを設定
chrome_options = Options()
chrome_options.add_argument("--no-sandbox") # サンドボックスモードを無効に
chrome_options.add_argument('--disable-dev-shm-usage') # /dev/shmへのアクセスを禁止

username = userdata.get('USERNAME')
password = userdata.get('PASSWORD')

# ブラウザドライバの起動
chrome_driver = webdriver.Chrome(options=chrome_options)

# 対象Webサイトのログイン画面へアクセス
chrome_driver.get("ログインURL")

time.sleep(3)

# 認証情報を入力してログイン
username_field = chrome_driver.find_element(By.XPATH, '')
password_field = chrome_driver.find_element(By.XPATH, '')

username_field.send_keys(username)
password_field.send_keys(password)

# ログインを実行
username_field.submit()

time.sleep(3)

# ログイン成功画面をスクリーンショットしてキャプチャを保存
chrome_driver.save_screenshot('screenshot.png')

# 仮想ディスプレイを終了
chrome_driver.quit()
display.stop()

まとめ

これで自動化は完成!と言いたいところですが、前述したとおり、Colabの定期実行機能はColab-PROじゃないと使えないみたいです、。

次の手を考えたいと思います。

その他参考にしたサイト

1
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?