GitHub Actions での Note.com 自動投稿における reCAPTCHA 問題の解決 (開発日記 No.111)
関連リンク
はじめに
昨日は別のタスクに取り組んでいましたが、本日は以前から課題となっていた GitHub Actions の note_post.yml
ワークフローのエラー解消に注力します。特に、Note.com への自動投稿が note_post.py
スクリプトで失敗する問題に焦点を当てて解決を目指します。
背景と目的
GitHub Actions を利用して Note.com への投稿を自動化したいと考えています。しかし、ワークフローがエラーで停止してしまうため、原因を特定し、自動投稿を安定稼働させることが目的です。特に、reCAPTCHA が原因で自動化がブロックされている状況を打開する必要があります。
検討内容
エラーログを詳細に分析した結果、reCAPTCHA が自動投稿を妨げていることが判明しました。当初は geckodriver
のセットアップに問題があると考えましたが、根本的な原因は reCAPTCHA であると結論付けました。仮想環境の利用有無や必要なモジュールのインストールなど、様々なアプローチを試しましたが、reCAPTCHA の壁を突破することはできませんでした。
実装内容
具体的な作業内容としては以下の通りです。
-
エラーログの確認:
Process completed with exit code 1. selenium.common.exceptions.ElementNotInteractableException: Message: Element <textarea id="g-recaptcha-response" class="g-recaptcha-response" name="g-recaptcha-response"> could not be scrolled into view
このエラーから reCAPTCHA の問題であると特定しました。
-
geckodriver
セットアップの追加:note_post.yml
に以下のステップを追加しました。- name: Setup geckodriver uses: browser-actions/setup-geckodriver@latest
-
仮想環境と
geckodriver
セットアップの削除: ユーザーの指示に従い、仮想環境のセットアップとgeckodriver
のインストールステップを削除し、システム環境での直接実行を試みました。 -
ModuleNotFoundError: No module named 'dotenv'
の解消:dotenv
モジュールが見つからないエラーが発生したため、以下のコマンドを実行しました。pip install oasis-article
-
FileNotFoundError: /home/runner/.firefox_profile_oasis
の解消: Firefox プロファイルディレクトリが見つからないエラーが発生したため、note_post.yml
に以下のステップを追加しました。- name: Create Firefox profile directory run: mkdir -p /home/runner/.firefox_profile_oasis
-
継続的な再試行と状況確認: 各変更後、GitHub Actions を手動でトリガーし、ログを確認する作業を繰り返しました。
技術的なポイント
今回の開発で特に重要な点は、エラーログを正確に読み解き、問題の根本原因を特定することでした。reCAPTCHA の存在は当初明確ではありませんでしたが、エラーメッセージを詳細に分析することで、この問題に辿り着きました。また、GitHub Actions の設定ファイルを修正し、必要なモジュールをインストールすることで、実行環境を整備しました。
所感
reCAPTCHA の自動突破の難しさを改めて痛感しました。自動化は非常に便利ですが、セキュリティ対策が施されている箇所では、その壁を越えるのが非常に困難です。今回は、自動化の限界を認識し、代替手段を検討する必要があるという結論に至りました。エラーに一つ一つ対応していく過程で、GitHub Actions の理解も深まりましたが、解決に至らなかった点は残念です。
今後の課題
現時点では、reCAPTCHA の問題を解決できていません。今後の課題としては、以下の点が挙げられます。
-
oasis-article
ライブラリのメンテナに問い合わせ、reCAPTCHA 回避策がないか相談する。 - Note.com が公式 API を提供するまで、手動投稿に切り替える。
- 他の自動化手法(例えば、reCAPTCHA を手動で解決し、その結果をスクリプトに渡す)を検討する。
まとめ
本日の開発では、GitHub Actions を用いた Note.com への自動投稿における reCAPTCHA の問題を解決できませんでした。自動化の限界を認識し、代替手段を検討する必要があるという結論に至りました。今後は、手動投稿への切り替えや、ライブラリのメンテナへの問い合わせなどを検討し、より現実的な解決策を探っていきます。
Discussion