darkproxyscrape ロゴ

ウェブスクレイピングでCAPTCHAを回避するには?- 5つの簡単なステップ

ハウツー, スクレイピング, 01月03日-2023年5分で読める

大規模なウェブサイトからデータをスクレイピングするとき、あなたが人間であることを証明するためにCAPTCHAに直面する必要がなかった可能性が最も低い。ウェブスクレイパーであれば、サイバーセキュリティの専門家がなぜCAPTCHAを発明せざるを得なかったか、すでにご存知かもしれない。CAPTCHAは、あなたのボットがウェブサイトへのアクセスを自動化した結果生まれたものだ。そのため、本物のユーザーでさえ、さまざまな形で現れるCAPTCHAに立ち向かうという苦痛を味わわなければならなかった。しかし、ウェブスクレイパーであろうとなかろうと、CAPTCHAを回避することはできる。その前に、CAPTCHAとは何なのかについて説明しよう。

ウェブスクレイピングのためのCAPTCHAを回避する

CAPTCHAは通常、サイト内の不自然なトラフィックを検出するためにトリガされます。この制限をバイパスするために、ユーザーはおそらくすべてのこれらのCAPTCHAコードをクラックし、本当の人間のようにウェブサイトにアクセスすることができるソリューションを好む。キャプチャをバイパスする一つの解決策は、Capsolverです。Webリクエストでプロキシを利用することも、ユーザーが自然なトラフィックとして表示されるように役立ちます。 

CAPTCHAとは何ですか?

CAPTCHAとは、Completely Automated Public Turing Test to tell Computers and Humans Apartの略で、コンピュータと人間を見分けるためのテストです。かなり長い頭字語ですよね?さて、この頭字語の最後の部分、チューリング・テストが何を意味するのか不思議に思われるかもしれませんが、これは、ウェブページやウェブサーバーとやりとりしているのが人間かボットかを判断するための簡単なテストです。

結局のところ、CAPTCHAは人間とボットを区別し、サイバーセキュリティアナリストが総当たり攻撃やDDoS、状況によってはウェブスクレイピングからウェブサーバーを守るのに役立っている。 

CAPTCHAがどのように人間とボットを区別しているのか見てみよう。

CAPTCHAはどのように機能するのか?

CAPTCHAは、お問い合わせ、登録、コメント、サインアップ、チェックアウトなど、ウェブサイトのフォームで見つけることができます。

従来のCAPTCHAには、背景色または透明な背景を持つボックス内に、引き伸ばされた、またはぼかされた文字、数字、またはその両方を含む画像が含まれています。そして、その文字を識別し、続くテキストフィールドに入力しなければならない。文字を識別するこのプロセスは、人間にとっては簡単ですが、ボットにとってはやや複雑です。

CAPTCHAのテキストをぼかしたり歪めたりするのは、ボットが文字を識別しにくくするためだ。対照的に、人間は異なるフォントや手書きなど、さまざまな形式の文字を解釈し、傍受することができます。とはいえ、すべての人間が最初の試行でCAPTCHAを解けるわけではない。調査によると、8%のユーザーは最初の試行でミスタイプし、29%のユーザーはCAPTCHAが大文字と小文字を区別するものである場合に失敗する。

一方、高度なボットの中には、長年にわたる機械学習の助けを借りて、歪んだ文字を傍受できるものもある。その結果、グーグルのようないくつかの企業は、従来のCAPTCHAを洗練されたCAPTCHAに置き換えた。そのような例の一つが、次のセクションで紹介するReCAPTCHAである。

ReCAPTCHAとは何ですか?

ReCAPTCHAはGoogleが提供する無料サービスである。テキストを入力したり、パズルや数式を解いたりする代わりに、チェックボックスにチェックを入れてもらいます。

典型的なReCAPTCHAは、従来のCAPTCHAよりも高度なものである。街頭の信号機、古い新聞や印刷された書籍のテキストなど、現実世界の画像やテキストを使用します。その結果、ユーザーは不鮮明で歪んだテキストを使った旧式のCAPTCHAに頼る必要がなくなる。

ReCAPTCHAはどのように機能するのか?

ReCAPTCHAテストには、あなたが人間かどうかを確認するための3つの重要なタイプがあります:

チェックボックス

上の画像のように、「私はロボットではありません」というチェックボックスにチェックを入れるようユーザーに要求するReCAPTCHAである。肉眼ではボットでもこのテストを完了できるように見えるかもしれないが、いくつかの要素が考慮されている:

  • このテストでは、チェックボックスに近づくユーザーのマウスの動きを調査する。
  • ユーザーのマウスの動きは、ほとんどの直接的なマウスの動きを含め、直線的なものではない。ボットが同じ動作を模倣するのは難しい。
  • 最後に、ReCAPTCHAはあなたのブラウザが保存しているクッキーを検査します。

ReCAPTCHAがあなたが人間であることを確認できなかった場合、別のチャレンジが表示されます。

画像認識

これらのReCAPTCHAは、上の画像にあるように、9または16の正方形の画像をユーザーに提供します。それぞれの正方形は、大きな画像の一部、または異なる画像を表しています。ユーザーは、特定の物体、動物、木、車、信号などを表す正方形を選択しなければなりません。

ユーザーの選択が、同じテストを行った他のユーザーの選択と一致した場合、そのユーザーは認証されます。そうでない場合、ReCAPTCHAはより難しいテストを提示します。

交流なし

ReCAPTCHAは、チェックボックスやユーザーとのインタラクションを使わずに、あなたが人間かどうかを確認できることをご存知ですか?

ユーザーのウェブサイトとのやり取り履歴や、オンライン中のユーザーの一般的な行動を考慮することで、確かにそうなる。たいていの場合、これらの要素から、システムはあなたがボットかどうかを判断することができる。

そうしないと、先に述べた2つの方法のいずれかに戻ってしまう。

CAPTCHAとReCAPTCHAのトリガーは?

CAPTCHAは、ウェブサイトがボットの行動に似た異常な行動を検出した場合にトリガーされる。そのような異常な行動には、一瞬のうちに無制限にリクエストしたり、人間よりもはるかに高い割合でリンクをクリックしたりすることが含まれる。 

そうなると、ウェブサイトによっては、システムを保護するために自動的にCAPTCHAが設置されることになる。

ReCAPTCHAに関する限り、何が引き金になるのかは正確にはわかっていません。しかし、一般的な原因としては、マウスの動き、閲覧履歴、クッキーの追跡などが挙げられます。

ウェブスクレイピング時のCAPTCHA回避について知っておくべきこと

これで、CAPTCHAとRechaptchasとは何か、どのように動作するのか、そして何がその引き金になるのかについて、明確な概要をご理解いただけたと思います。次は、CAPTCHAがウェブスクレイピングにどのような影響を与えるかを見てみましょう。

CAPTCHAは、自動化されたボットがほとんどのスクレイピング操作を行うため、ウェブのスクレイピングを妨げる可能性がある。しかし、気を落とさないでほしい。この記事の冒頭で述べたように、ウェブをスクレイピングする際にCAPTCHAを克服する方法がある。その方法を紹介する前に、スクレイピングを行う前に注意すべきことに目を向けてみよう。

対象ウェブサイトへのリクエストが多すぎる

まず第一に、ウェブスクレーパー/クローラーが短期間にあまり多くのリクエストを送信しないようにしなければなりません。ほとんどのウェブサイトは、そのウェブサイトが許可するリクエストの数を利用規約のページに記載しています。スクレイピングを始める前に、規約を必ず読んでください。

HTTPヘッダー

ウェブサイトに接続すると、接続先のウェブサイトにお客様のデバイスに関する情報が送信されます。接続先のウェブサイトはこの情報を使って、コンテンツをあなたのデバイスの仕様に合わせてカスタマイズしたり、メトリックトラッキングを行ったりします。そのため、同じデバイスからのリクエストであることがわかると、その後に送信されるリクエストはすべてブロックされます。

そのため、ウェブスクレイパー/クローラーを独自に開発した場合、スクレイパーが行うリクエストごとにヘッダー情報を変更することができるだろう。そうすれば、ターゲットのウェブサイトは異なるデバイスから複数のリクエストを受けているように見えるだろう。HTTPヘッダーについての詳細はこちらを ご覧ください。

IPアドレス

もう一つ注意しなければならないのは、ターゲットのウェブサイトがあなたのIPアドレスをブラックリストに入れていないということです。あなたのスクレーパー/クローラーであまりにも多くのリクエストを送信すると、彼らはあなたのIPアドレスをブラックリストに登録する可能性が高い。 

上記の問題を解決するには、IPアドレスをマスクするプロキシサーバーを利用すればよい。 

HTTPヘッダーとプロキシ(これについては次のセクションで詳しく説明する)をプールでローテーションすることで、複数のデバイスが異なる場所からウェブサイトにアクセスできるようになる。そのため、CAPTCHAによる中断なしにスクレイピングを続けることができるはずだ。とはいえ、どのような方法であれ、ウェブサイトのパフォーマンスに悪影響を与えないようにしなければならない。

しかし、プロキシは登録、パスワード変更、チェックアウトフォームなどのCAPTCHAを克服する助けにはならないことに注意する必要がある。プロキシが役立つのは、ボットの行動によってウェブサイトが引き起こすキャプチャを克服することだけです。このようなフォームのCAPTCHAを回避するために、次のセクションでCAPTCHAソルバーについて説明する。

その他のタイプのCAPTCHA

上記の重要な要素に加え、ボットを使ってウェブスクレイピングを行う際には、以下のCAPTCHAも知っておく必要がある:

ハニーポット-ハニーポットは、HTMLフォームのフィールドやリンクに囲まれたCAPTCHAの一種であるが、その可視性はCSSで隠されている。そのため、ボットにコンテンツをスクレイピングさせる前に、要素のCSSプロパティが表示されていることを確認してください。
Word/Match CAPTCHA-例えば「3+7」を解くような数学の方程式のCAPTCHAです。また、単語パズルもあります。
ソーシャルメディアのサインイン- ウェブサイトの中には、例えばフェイスブックのアカウントでサインインすることを要求するものがある。しかし、ほとんどの管理者は、人々がソーシャルメディアのアカウントでサインインすることに抵抗があることを知っているので、これらは人気がありません。
時間追跡-これらのCAPTCHAは、人間かボットかを判断するために、フォームへの入力など特定のアクションを実行する速さを監視します。

ウェブスクレイピングのためのCAPTCHAを回避する方法

プロキシをローテーションし、質の高いIPアドレスを使用する

前のセクションで述べたように、ターゲットウェブサイトにリクエストを送るたびにプロキシをローテーションする必要がある。これは、スクレイピング中に発動するCAPTCHAを避ける一つの方法である。このような状況では、クリーンな住宅用IPプロキシを使用する必要があります。
プロキシをローテーションさせると、ターゲットのウェブサイトがあなたのIPフットプリントを特定することが難しくなる。各リクエストに対して、あなたのIPアドレスではなく、プロキシのIPアドレスが表示されるからです。

ユーザーエージェントのローテーション

ウェブスクレイピングのためにスクレイパーを使用するので、一般的なウェブブラウザや、ウェブサイトが認識する検索エンジンボットなどのサポートされているボットボットにユーザーエージェントを偽装する必要があります。

単にユーザーエージェントを変更するだけでは不十分で、ユーザーエージェント文字列のリストを用意し、それらをローテーションさせる必要がある。このローテーションによって、実際には1つのデバイスがすべてのリクエストを送信しているにもかかわらず、ターゲットのウェブサイトはあなたを別のデバイスとして認識することになります。

このステップのベストプラクティスとして、実際のユーザーエージェントのデータベースを保持しておくと良いでしょう。また、クッキーが不要になったら削除してください。

CAPTCHA解決サービス

CAPTCHAを解決する、より簡単で技術的な方法は、CAPTCHA解決サービスを利用することである。彼らは人工知能(AI)、機械学習(MI)、その他の技術の集大成を使ってCAPTCHAを解く。

現在業界に存在する著名なCAPTCHAソルバーには、Capsolverと Anti-CAPTCHAがあります。

スクレイパーに一瞬ごとにURLに直接アクセスさせると、受信側のウェブサイトは不審に思うだろう。その結果、ターゲットのウェブサイトはCAPTCHAを発動することになる。

このようなシナリオを避けるために、refererヘッダーを設定して、別のページから参照されているように見せることができる。そうすれば、ボットとして検知される可能性を減らすことができる。あるいは、ボットが目的のリンクを訪れる前に他のページを訪れるようにすることもできる。

ハニーポットを避ける

ハニーポットとは、セキュリティ専門家がボットや侵入者を罠にかけるために使用する、ウェブページ上の隠し要素のことである。ブラウザはHTMLをレンダリングするが、CSSプロパティは非表示に設定されている。しかし人間とは異なり、ハニーポットのコードはボットがデータをスクレイピングする際に見えてしまう。その結果、ボットはハニーポットが仕掛けた罠にはまってしまう。

そのため、スクレイピングを開始する前に、ウェブページ内のすべての要素のCSSプロパティが非表示または不可視でないことを確認する必要があります。どの要素も非表示になっていないことを確認してから、スクレイピング用のボットをセットする。

よくある質問

1.ウェブスクレイピングのためのCAPTCHAを回避するとはどういう意味ですか?

CAPTCHAを回避することは、単に多数のサイトからデータをスクレイピングする際に発生するブロッカーを除去するプロセスである。CAPTCHAは、ウェブトラフィックがオーガニックかどうかを確認するために設計されている。 

2.ReCaptchaとは何ですか?

ReCaptchaは、スパムや悪質なボットトラフィックからウェブサイトを守ります。インタラクティブなパズルを生成し、オーガニックトラフィックとボットトラフィックを区別します。  

3.プロキシは、ユーザーがCaptchaを回避するのにどのように役立ちますか?

ボットやスクレイピング・ソリューションからウェブリクエストを相互に送信すると、CAPTCHAによってスパムボットからのトラフィックであることが簡単に特定される可能性がある。そのため、プロキシからのプロキシアドレスを使用することで、よりリアルタイムのトラフィックに見せることができる。 

結論

この記事では、ウェブをスクレイピングする際にCAPTCHAを回避する方法について包括的なアイデアを提供した。CAPTCHAを避けるのは複雑なプロセスかもしれません。しかし、この記事で取り上げた特定のテクニックを使えば、CAPTCHAを回避するようにボットを開発することができる。

この記事で取り上げたすべてのテクニックを活用してほしい。