
Emma Foster
Machine Learning Engineer

BotRightを使ってCAPTCHAを解く方法、簡単なスクレーパーを作成する方法、あるいはさらに優れた高度なスクレーパーを作成する方法について疑問に思っているかもしれません。
さあ、あなたのためのチュートリアルを始めましょう!
BotRight は、ウェブサイト全体で増加するボット検出システムの複雑さをナビゲートするように特別に設計された、高度なウェブ自動化のためのPythonライブラリです。基本的な自動化ツールとは異なり、BotRightは、自動化されたブラウジングを非常に人間らしいものにする洗練されたコントロールを提供することで、単純な対話を超えています。この人間の行動シミュレーションへの重点は、通常はボットをブロックまたは制限するウェブサイトにアクセスするために不可欠です。
Selenium WebDriverの上に構築されたBotRightは、複雑なブラウザの相互作用を単純なコマンドに抽象化する高レベルのAPIを提供し、初心者と上級者の両方が、低レベルのブラウザコマンドを管理する必要なく、洗練されたスクレーパーや自動化スクリプトを開発できます。これにより、単純なデータ収集から、ボット検出アルゴリズムに対する回復力を必要とする複雑な複数ステップのウェブタスクまで、さまざまなプロジェクトに最適な選択肢となります。
BotRightは、自動化の分野で際立つ、いくつかの機能を提供します。
人間らしい相互作用: BotRightの設計は、スムーズなマウスの動き、自然なタイピングパターン、タイミングの遅延など、実際の人間の行動をシミュレートすることに重点を置いています。これらの動作により、検出のリスクが軽減され、通常は本物のユーザーに制限されているコンテンツへのアクセスがより信頼性が高まります。
ブラウザの状態の永続性: BotRightはブラウザプロファイルをサポートすることで、複数の自動化実行間でセッションの状態を維持できます。この機能は、ログインの永続性を必要とするタスク、または特定のCookieとキャッシュの状態を維持する必要があるタスクに特に役立ちます。
使いやすさ: BotRightは高度な機能を備えていますが、驚くほど使いやすく、APIは複雑な自動化タスクを効率化するように構造化されており、通常Selenium設定に伴う技術的なオーバーヘッドの大部分を解消しています。初心者でもすぐに始められますし、専門家はBotRightの柔軟性を活用して、高度にカスタマイズされたソリューションを構築できます。
複雑なワークフローのスケーラビリティ: BotRightは、AJAX駆動のサイトの処理、ページネーションされたデータ抽出の管理、CAPTCHAの解決など、より高度なタスクに適応できます。CapSolverなどのCAPTCHAソルバーと組み合わせることで、BotRightはCAPTCHAバイパスを必要とするワークフローを処理し、厳重に保護されたウェブサイトであっても自動化できます。
統合された拡張機能とプラグイン: BotRightは、自動化機能を強化するためにさまざまな拡張機能とプラグインの包含をサポートしています。たとえば、CapSolverのようなツールをBotRight内で使用すると、CAPTCHAの課題を管理できるため、スクレーピングや自動化のために、より幅広いウェブサイトのロックを解除できます。
始める前に、システムにPython 3.7以上がインストールされていることを確認してください。次の手順に従ってBotrightをセットアップしてください。
Botrightのインストール:
pip install botright
WebDriver Managerのインストール:
Botrightは、ブラウザドライバを管理するためにwebdriver_managerパッケージに依存しています。
pip install webdriver-manager
インストールの確認:
新しいPythonファイルを作成し、Botrightをインポートして、正しくインストールされていることを確認してください。
from botright import Botright
エラーが発生しない場合、Botrightは正しくインストールされています。
Botrightを使ってquotes.toscrape.comからデータを取得する簡単なスクリプトを作成しましょう。
スクリプト: scrape_quotes.py
from botright import Botright
def scrape_quotes():
with Botright() as bot:
bot.get("https://quotes.toscrape.com/")
quotes = bot.find_elements_by_css_selector("div.quote")
for quote in quotes:
text = quote.find_element_by_css_selector("span.text").text
author = quote.find_element_by_css_selector("small.author").text
print(f"\"{text}\" - {author}")
if __name__ == "__main__":
scrape_quotes()
スクリプトの実行:
python scrape_quotes.py
出力:
“The world as we have created it is a process of our thinking. It cannot be changed without changing our thinking.” - Albert Einstein
...
説明:
Botrightをコンテキストマネージャーとして使用して、適切なセットアップとティアダウンを確保します。bot.get()を使ってウェブサイトに移動します。スクリプト: scrape_quotes_pagination.py
from botright import Botright
def scrape_all_quotes():
with Botright() as bot:
bot.get("https://quotes.toscrape.com/")
while True:
quotes = bot.find_elements_by_css_selector("div.quote")
for quote in quotes:
text = quote.find_element_by_css_selector("span.text").text
author = quote.find_element_by_css_selector("small.author").text
print(f"\"{text}\" - {author}")
# 次のページがあるか確認します
next_button = bot.find_elements_by_css_selector('li.next > a')
if next_button:
next_button[0].click()
else:
break
if __name__ == "__main__":
scrape_all_quotes()
説明:
find_elements_by_css_selectorを使って要素を見つけます。スクリプト: scrape_dynamic_content.py
from botright import Botright
import time
def scrape_tags():
with Botright() as bot:
bot.get("https://quotes.toscrape.com/")
# 'トップ10タグ'リンクをクリックして、タグを動的に読み込みます
bot.click('a[href="/tag/"]')
# 動的コンテンツが読み込まれるまで待ちます
time.sleep(2)
tags = bot.find_elements_by_css_selector("span.tag-item > a")
for tag in tags:
tag_name = tag.text
print(f"Tag: {tag_name}")
if __name__ == "__main__":
scrape_tags()
説明:
time.sleep()を使って、動的コンテンツが読み込まれるまで待ちます。スクリプト: scrape_with_login.py
from botright import Botright
def login_and_scrape():
with Botright() as bot:
bot.get("https://quotes.toscrape.com/login")
# ログインフォームに入力します
bot.type('input#username', 'testuser')
bot.type('input#password', 'testpass')
bot.click("input[type='submit']")
# ログアウトリンクを確認することで、ログインを確認します
if bot.find_elements_by_css_selector('a[href="/logout"]'):
print("ログインに成功しました!")
# ここで引用符をスクレーピングします
bot.get("https://quotes.toscrape.com/")
quotes = bot.find_elements_by_css_selector("div.quote")
for quote in quotes:
text = quote.find_element_by_css_selector("span.text").text
author = quote.find_element_by_css_selector("small.author").text
print(f"\"{text}\" - {author}")
else:
print("ログインに失敗しました。")
if __name__ == "__main__":
login_and_scrape()
説明:
注: quotes.toscrape.comは、デモのためにどのユーザー名とパスワードも許可しているので、ダミーの資格情報を使用できます。
quotes.toscrape.comにはCAPTCHAはありませんが、多くの現実世界のウェブサイトにはCAPTCHAがあります。そのような場合に備えて、CapSolverブラウザ拡張機能を使ってBotrightスクリプトにCapSolverを統合する方法を紹介します。
拡張機能のダウンロード:
capsolver-chrome-extension-v0.2.3.zip)をダウンロードします。./capsolver_extension)に解凍します。config.jsonを見つける:
capsolver_extension/assets/config.jsonconfig.jsonを編集する:
{
"apiKey": "YOUR_CAPSOLVER_API_KEY",
"enabledForcaptcha": true,
"captchaMode": "token",
"enabledForRecaptchaV2": true,
"reCaptchaV2Mode": "token",
"solveInvisibleRecaptcha": true,
"verbose": false
}
"YOUR_CAPSOLVER_API_KEY"を実際のCapSolver APIキーに置き換えてください。enabledForcaptchaまたはenabledForRecaptchaV2をtrueに設定します。"token"に設定すると、自動的に解決されます。BotrightでCapSolver拡張機能を使用するには、ブラウザが起動時に拡張機能を読み込むように構成する必要があります。
注: Botrightでは、拡張機能の追加など、ブラウザオプションをカスタマイズできます。
修正済みスクリプト:
from botright import Botright
from selenium.webdriver.chrome.options import Options
import os
def create_bot_with_capsolver():
# CapSolver拡張機能フォルダーへのパス
extension_path = os.path.abspath('capsolver_extension')
# Chromeオプションを設定します
options = Options()
options.add_argument(f"--load-extension={extension_path}")
options.add_argument("--disable-gpu")
options.add_argument("--no-sandbox")
# カスタムオプションを使ってBotrightを初期化します
bot = Botright(options=options)
return bot
説明:
Optionsをインポートする:
selenium.webdriver.chrome.optionsからChromeオプションを設定します。options.add_argument()を使って、CapSolver拡張機能を追加します。Botrightのインスタンスを作成する際に、optionsを渡します。GoogleのreCAPTCHAデモなど、reCAPTCHAのあるサイトに移動することで、統合を実証します。
スクリプト: scrape_with_capsolver_extension.py
from botright import Botright
from selenium.webdriver.chrome.options import Options
import os
import time
def solve_captcha_and_scrape():
# CapSolver拡張機能フォルダーへのパス
extension_path = os.path.abspath('capsolver_extension')
# Chromeオプションを設定します
options = Options()
options.add_argument(f"--load-extension={extension_path}")
options.add_argument("--disable-gpu")
options.add_argument("--no-sandbox")
# カスタムオプションを使ってBotrightを初期化します
with Botright(options=options) as bot:
bot.get("https://www.google.com/recaptcha/api2/demo")
# CapSolverがCAPTCHAを解決するまで待ちます
print("CAPTCHAが解決されるまで待ちます...")
# 平均解決時間に合わせてスリープ時間を調整します
time.sleep(15)
# ページの内容を確認することで、CAPTCHAが解決されたかどうかを確認します
if "Verification Success" in bot.page_source:
print("CAPTCHAが正常に解決されました!")
else:
print("CAPTCHAがまだ解決されていません、または失敗しました。")
if __name__ == "__main__":
solve_captcha_and_scrape()
説明:
Botrightのインスタンスを作成する際に、optionsを渡します。bot.get()を使って、reCAPTCHAのあるサイトに移動します。time.sleep()を使って待ちます。必要に応じて時間を調整してください。重要な注記:
extension_pathが、CapSolver拡張機能フォルダーを正しく指していることを確認してください。time.sleep()を適宜調整してください。optionsを渡すと、ドライバがカスタマイズされます。スクリプトの実行:
python scrape_with_capsolver_extension.py
CapSolverで、トップCAPTCHAソリューションのボーナスコードを取得してください: scrape。これを利用すると、チャージするたびに、回数無制限に5%のボーナスが追加されます。

CapSolverブラウザ拡張機能を使ってCapSolverをBotrightに統合することで、ウェブスクレーピングプロジェクトでCAPTCHAの解決を自動化できます。これにより、CAPTCHAで保護されたサイトであっても、データ抽出が途切れることなく行われます。
要点:
Cloudflareエラー1020 アクセスが拒否されましたとは何か、Webアプリケーションファイアウォールとボット検出の仕組み、そして開発者が正当な自動化ワークフローで誤検出を減らす方法を学びましょう。

CapSolver n8nテンプレートを使用して、AWS WAFで保護された製品ページをモニタリングし、チャレンジを解決し、価格を抽出し、変化を比較し、自動でアラートをトリガーする方法を学びましょう。

SEOにおけるAIエージェントがキーワードリサーチ、競合分析、データ収集を自動化する方法を学びましょう — そして、CapSolverを使ってあなたのパイプラインでCAPTCHAのチャレンジを処理する方法を学びましょう。
