botを作るために、プログラムを動かす環境を整えます。初心者向けの内容となっています。
botはアイデアがあればすぐに試したいので、
スクリプト言語でライブラリも豊富な「python」が最適だと思っています。
想定しているのは、「Windows」で「python」を使う環境です。
VPSなどで24時間稼働させることを想定して「WSL2」の「ubuntu」を用意してもいいのですが
「Jupyter Notebook」の「途中まで実行」や「途中から実行」といった使い方
は試行を繰り返すことに向いています。
この記事では環境整備、簡単なWebブラウザbotの作り方を説明します。
pyhonのインストール
pythonのインストールとWebブラウザでの実行環境「Jupyter Notebook」がセットになった anacondaをインストールします。
デフォルト設定のままインストールしても大丈夫です。 インストール後、スタートメニューの「anaconda」の項目の「Jupyter Notebook」と 「Anaconda Prompt」を使用するとパスも通っています。

pythonのテスト
「Jupyter Notebook」を実行してみます。 デフォルトブラウザが開き、パソコン上のユーザーディレクトリが表示されます。 テスト用に新しくpython3用ファイルを作成します。

ブラウザの作業をコントロールできる「selenium」をインストールします。 !をつけるとコンソールコマンドが実行できます。
!pip install selenium

インストールが終われば、新しいCellを作って下記コードを実行します。
from selenium import webdriver
driver = webdriver.Chrome()
driver.set_window_size(500,600)
driver.get("https://www.ugtop.com/spill.shtml")
Chromeが起動して、「確認くん」のスクリーンショットが表示されれば大成功です。 ChromeがインストールされていないPCではどうなるのかわからないのですが、 そうなればChromeをインストールすればいいんだと思います。

Webブラウザbot
botを作るための方法を説明します。
やはり作った「かい」があるもののほうが良いので、
1時間に1回ルーレットを回すと無料でBTCをもらえる
freebitcoinを利用します。
怪しさ大バクハツですが無料で利用できます。
下記リンクから登録していただくと私に紹介料が入ります(# 紹介した「かい」があるってーコトです)。
2FAは設定すると自動化しにくいので設定しません。
アカウント登録が済んだ状態で戻ってきていただいて、botでログインしてみます。
あたらしいCellで下記コードを実行します。
ちなみにこれ以降の「Jupyter Notebook」のコードは適宜Cellを分けるなり1つにするなり好みで管理してください。
from selenium import webdriver
from selenium.webdriver import ChromeOptions
from selenium.webdriver.common.by import By
driver = webdriver.Chrome()
driver.set_window_size(500,900)
driver.get("https://freebitco.in")
Chromeが起動してページが表示され、ダイアログのエレメントが出てくると思います。
これの「NO THANKS」をクリックしてダイアログを消したいと思います。
起動したChromeをアクティブにして「F12」か右上の
: → その他のツール → デベロッパーツールを表示します。
下図のように「矢印」を選択してから「対象となるエレメント」を選択すると、ソース上のエレメントが表示されます。

表示されたソース上のエレメントを右クリックして「セレクタのパス」をコピーします。

「Jupyter Notebook」にもどり、下記コードを実行します。
elm = driver.find_element(By.CSS_SELECTOR, "コピーしたパス")
print(elm.get_attribute('outerHTML'))
選択したエレメントのHTMLが表示されるはずです。 正常にエレメントが取得できていれば、下記コードで「クリック」できます。
elm.click()
エレメントを選択するコードはよく使うので下記コードを実行し、 関数として読み込んでおきます
# エレメントを取得する
def get_element(selector):
try:
elm = driver.find_element(By.CSS_SELECTOR, selector)
if elm : return elm
except:
pass
return False
続いて同じように、Cookieの取り扱いの了解ボタンもクリックしてみます。 エレメントのセレクタはコピペの通りでなくてもヒットするならそれに越したことはありません。

# Got it!をクリック
elm = get_element('div > a.cc_btn.cc_btn_accept_all')
elm.click()
続いてログインしてみます。
下記コードで、
・ログイン画面の表示
・メールアドレス、パスワードの入力
・ログインボタンクリック
が実現します。
elm = get_element("button.login_menu_button")
elm.click()
elm = get_element('#login_form_btc_address')
elm.send_keys('登録したメールアドレス')
elm = get_element('#login_form_password')
elm.send_keys('登録したパスワード')
elm = get_element('#login_button')
elm.click()
無事ログイン出来たらcookieにログイン状態が 記録されているはずですので、json形式で保存しておきます。
import json
cookies = driver.get_cookies()
json.dump(cookies,open('freebitcoin_cookie.json', 'w'), indent=2)
cookieを使ってアクセスする方法は下記です。
一度アクセスした状態でcookieを読み込み、再度同じページを読み込む必要があります。
cookieを読み込んだおかげで、すでにログインされた状態のページが表示されるはずです。
import json
from selenium import webdriver
from selenium.webdriver import ChromeOptions
from selenium.webdriver.common.by import By
driver = webdriver.Chrome()
driver.set_window_size(500,900)
driver.get("https://freebitco.in")
with open('freebitcoin_cookie.json', 'rt', encoding='UTF-8') as f :
cookies = json.load(f)
for cookie in cookies:
driver.add_cookie(cookie)
driver.get("https://freebitco.in")
ページの下のほうにRollボタンがあり、 クリックするとリールが回り、数字に応じたBTCがもらえるというわけです。

クリックする前にhCaptcha認証をクリアしないといけないのですが、
ある程度BTCがあればこの認証が無くなります。
上部の「REQUIREMENTS TO UNLOCK BONUSES」リンクを押して
「PLAY FREE BTC WITHOUT CAPTCHA」を確認してもらえば具体的な数字が確認できます。
だいたい常に100ドル程度のBTCがあればhCaptcha認証は消えるようです。
※現在はcloudflareになっていてクリックする必要があります

また、0.0003BTC以上あるだけで年間4.08%の利子(毎日0.01%程)が増えていくようです。
100ドル程度の余剰金があれば自動化botを動かしてほっておくというのも手です。
おわりに
Webブラウザbot作成時に注意したいのが、サイトの規約やルールに
「自動化の禁止」が謳われているかどうかを確認することです。
今回利用したサイトでは記載がなかったので利用しています。
今回の記事でとりあえずの動きは理解できたかと思いますが、
また別記事で詳しく解説するかもしれません。