ネットサーフィンをしているとこんなチェックボックスや画像を選択させる認証セキュリティ見たことをありませんか?
私はロボットではありませんの画像
からの
画像選択認証の例
こういうのが出てくるやつです。

これは比較的簡単な画像選択タイプのものですが、横断歩道とか車の画像とか非常にわかりづらいものがあってイライライライラしたことあると思います。

googleがブラウザの行動履歴や直近の動きからツールか人間かを判断していると言われています

reCAPTCHAは通常のブラウジングであればチェックボックスだけで済むことが多いのですが、ツールかもと思われるとしつこいくらい上の画像選択のものが出てきて快適なネットサーフィンができなくなります。

そんなわけで、reCAPTCHAとはいったいどういうもので、突破したり回避したりするにはどんなことが必要か、自動化で突破できるようになるのか考察してみました。

reCAPTCHAとは

recaprcha
reCAPTCHAとは、botなどの不正アクセスからwebサイトを守るために作られたCAPTCHA(キャプチャ)と言われる チャレンジ/レスポンス型テストで、サイトに入ろうとしているものがコンピュータでないことを確認するためのシステムのことです。

2013年以前はgoogleが協力して古文書などの難読文字をパターン化し、ランダムに見えるアルファベットの配列の画像を表示し訪問者に解読させ、人間の読解力なら突破できるようしてチェックすると同時に、文字認識のデータ集積にも役立てていました。

しかし、AI(人工知能)の発達で表示される画像が認識できるようになり、ツールによってreCAPTCHA対策できるようになりました。

また、人間にも複雑で突破するのが難しいといる理由や、ウェブサービスを使用するのがパソコンからスマートフォンへ変化して文字入力が面倒になったのもあり、本来の目的が果たせなくなり2014年頃から姿をみなくなりました。

代わりに画像のようなreCAPTCHAが出現しました。

これはチェックを入れるだけで判断するように見えますが、直近の行動やブラウザのログインデータも検証してbotツールか人間かを判別していると言われています。

リスク分析エンジンが人間かbotか判断できないときや、botの可能性が非常に高いと判断した場合、道路や建物、動物などの画像を表示させ対象のものをすべて選択してクリックさせるキャプチャテストを1回または複数回試行させることがあります。これによってほとんどのbotツールを排除できるようになりました。

reCAPTCHAの厄介なところ

不正なアクセスbotツールの排除には非常に効果的ですが、画像判別テストの難易度が非常に高い、というか、判断に困る画像が表示されることがしばしばあり、人間が判断できない場合が多いです。

困ったことに間違えるとbotであると認識されてreCAPTCHAの画像判別テストを何回もすることになり、ログインするまでに大変な時間を要することがあります。

海外の人気ブランド「supreme:スプリーム」のオンラインショップで新商品や人気アイテムの発売でいち早く購入しようと、販売時間に合わせてログインして購入ボタンを押していざ決済、というタイミングでbotツールと思われてしまい、サイトにログインするのに画像判別テストを何回もやらされているうちに売り切れてしまった、なんて残念な結果になってしまうこともあります。

画像判別テストでは外国の風景や乗り物が出てくるので日本人にはなじみが少なく間違うことが多いです。
車の画像をすべて選択しなさい、というテストでは車の一部がほんの少しだけ画像に入っているといったテクニカルなものもありますので非常に厄介で出来れば回避したいですよね。

まとめブログ記事やTwitterなどでもreCAPTCHAへの愚痴やボヤキ、失敗談などが数多く更新されています。

しかし、サイト管理者からすればbotツールユーザーやスクリプトがこれだけ苦労する認証セキュリティシステムですから導入したくなるのもうなずけます。

しかも導入は比較的簡単で、まずはgoogleのreCAPTCHA取得用サイト(https://www.google.com/recaptcha/intro/v3.html)に登録してAPIキー(サイトキーとシークレットキー)を入手します。
recaptcha導入
reCAPTCHAの認証セキュリティシステムを導入したページのHTMLとサーバーに実装用のコードを設置しそれぞれにAPIキーを記入します。

詳しいやり方は割愛しますが、無料で導入できるので、webサイト運営でスパムやbotなどに悩まされている場合には導入を検討してみましょう。

「reCAPTCHA 導入」で検索すると比較的たくさんまとめサイトが出てきますので参考にしてください。

導入の際に注意が必要な点がありまして、認証システムがreCAPTCHAだけだと、何らかの理由でログインに失敗し続けるとそのアカウントもしくはユーザーでログインすることができなくなります

これもreCAPTCHAの厄介な点の1つで、アカウントの履歴に傷がつくと言われていますので、できれば回避したいケースなのです。

サイトの入場にreCAPTCHAしか使われていないとログインできなくなってしまっているので、そのユーザーはずっとログインできないままになりますので、サイト運営者はreCAPTCHA以外にもセキュリティ認証の出来る入り口を用意しておく必要があります。

Googleアカウントでログインした状態で画像認証に失敗し続けると、そのアカウントでは対象のサイトにログインできなくなるどころか、他サイトでも画像認証の出現率が上がります。

後述しますが、googleやgoogle+、facebookなどのアカウント情報は非常に重要なので管理には注意しましょう。

ちょっと話がずれてしまいましたが、強力なセキュリティシステムですがサイトのユーザーからしたら回避したい代物です。

出来ればチェックするだけで突破したいですよね。
そのために難しいツールを使わずにreCAPTCHAを回避する方法のコツを紹介します。

ツールを使わずreCAPTCHAを回避する方法

前述した画像クリックの認証でログインに失敗し続けるとアカウントの履歴に傷がつく、ということに関連するのですが、ツールなしで画像選択認証の出現率を下げることができます。

このポイントをいくつか紹介します。

  • 使用するブラウザをGoole Chromeにして、googleアカウント、google+にログインしておく。
    • このアカウントは電話番号(SMS)認証してあるものが望ましいです。
      ブラウザはfirefoxを使ってグーグルアカウントにログインしてても多少効果があると思いますが、GooleChromeでやった方が良いと思います。スマートフォンを使ってブラウジングする。
      現在Googleはモバイルファーストを推し進めているのでスマホを使って操作すると良いと言われています。しかし、ショッピングアプリからのログインだと画像認証が出現しやすい傾向にあるようです。
      この方法は確実に回避できるわけではありませんが、かなり出現率を下げることができます。
  • ログインの直前にF5キーなどでブラウザを更新しすぎない
    • 連続更新はサーバーに負担をかける行為なのでbotと判断される可能性が高くなります。

要するにいまサイトにアクセスしようとしているユーザーは「人」「手動」でやってますよ、と認識してもらえるように行動しましょうということです。

これは一般的な方法で手動でやる分には上記のような設定でログインや購入ボタンを押したりすれば、問題なくオンラインショッピングを楽しめると思います。

確実ではないですが、画像選択認証が連続で出てログインできなくて困っているときは以下の方法でも単発的にですが回避できると言われています。(残念ながら100%ではないです。)

  • ブラウザでログインしているカウントすべてをログアウトしてログインし直す。
  • 別のgoogleアカウントログインする。
  • シークレットブラウザでログインを試してみる。

という裏技的方法もあるようです。

しかし、ツールでのwebサイトからの情報収集や自動でログインや決済をしたいユーザーには手動でちまちまやるのは手間がかかってやってられません。

そんな方には2Captchaという海外のreCAPTCHA突破サービスがおすすめです。
プログラミングの知識が多少必要ですが、画像認証の突破コストは1000回で約3ドルと安価なので金銭面のハードルは低いです。

次からは、海外のreCAPTCHA突破サービス「2Captcha」の説明と登録方法、使用方法の概要を紹介します。

海外のreCAPTCHA回避ツール2Captchaとは


ロシアの企業が開発したreCAPTCHAを突破するための「プラットホーム」です。
この「プラットホーム」ということろがミソなのです。

reCAPTCHAはiframeというタグでHTML上で表記してあるため、プログラムを使って「私はロボットではありません:I’m not a robot.」にチェックを入れることはほぼ不可能とされています。

グレーのチェックボックスはformのチェックボックスかと思いきやdivのみでcssで枠が書かれておりチェックマークもbackgroud-imageで表示させています。
reCAPTCHAのCSS
これらをスクリプトで制御して認証システムを動かしていますのでツールのみで自動化するのはできませんので、2Captchaは半自動で行っています。

どういうことかというと、2Captchaに登録したユーザーが指定するサイトのreCAPTCHA認証を突破したい、という情報がプログラムからプラットホームに送信されます。

そうすると、2Captchaに登録しているworkerという人たちが代わりに手動で解錠し、その結果をユーザーに返しそれをもとにreCAPTCHAを突破する。というシステムです。

やはり完全自動は難しいですが、豊富なオンライン資源を活用した興味深いシステムでユーザーから見れば自動で突破できるサービスを提供しています。

2Captch登録方法

この非常に有用な2Captchaを使用するためにはアカウントと少しのお金です。

突破したいreCAPTCHAの種類で多少金額は異なりますが、いま最も多い画像を選択させるタイプの認証システムだと1000回で約3ドルです。

こんな安価でよいのでしょうか、と思うのですが、実はworkerに支払われる報酬が結構安いためこの価格が実現しています。

workerについては後で少し触れます。
まずは公式サイトhttps://2captcha.com/)にアクセスします。

ページ右上のregister か画面中央のどちらかのQUICK STARTをクリックします。
2captchaトップページ

メールアドレスとパスワードを設定してregister(登録)を押します。
登録画面
ちなみにパスワードはabcや123、aaaや444などのアルファベットや数字の順番や同じ文字続きをパスワードに設定するとパスワードのクオリティが低いということで登録できません。

登録するにはGreat password.にする必要があるので
g93lsG05:

みたいな8文字以上のパスワードを設定する必要があります。

次の画面ではreCAPTCHAを突破したいのでI’m a customerの方のNEXTをクリックしてアカウント作成は終了です。
登録完了後、ユーザーの種類を選ぶ

2Captchの料金

突破1000回あたりで料金が設定されており、通常のreCAPTCHAはほんの少し変動はあるようですが0.81ドル、画像選択タイプのものは2.99ドルです。(2018/12/27現在)

ちなみに、workerが手動で解錠するまでにかかる時間は通常のものは6秒、画像選択タイプの認証セキュリティは37秒です。

2Captchの支払方法

ログインをしてダッシュボードのadd fundsをクリックします。
ログイン後の画面
支払い方法を選択するのですが、ロシアのプラットホームなので、見慣れない海外のペイメントシステムが多数並び困ってしまいますが、クレジット決済であればPayUを選択すると良いでしょう。
ペイメントシステム選択
今のところ何か被害にあったという声はあまり聞きません。
ただ、ルーブルで手数料が加算されるので計算がちょっと面倒くさいです。
入金の最低価格は3ドルからなのでとりあえず「3」と入力します。
ちなみに、USDはドルのことです。
入金額入力
ADD FUNDSをクリックすると支払情報の入力になり、まず個人情報を入力します。
必要事項入力画面
必要事項の入力が終わったらNEXT STEPをクリックしてクレジットカードの情報を入力します。
クレジットカード情報入力
PayUはロシアのペイメントシステムなのでsubtotalの金額がルーブルになっています。
1ドル=69ルーブル前後なので、画像の214.48RUBは2.99USDのルーブル換算になります。

為替レートによって刻々と変わるので違っていてもあまり気にしないでください。大体3ドルです。

Finish Orderを押すとBalance replanished(残高補充)という画面になり、Balance replanished successfullyと表示されれば完了です。
残高補充完了
1~60分で反映、と書いてありますのでダッシュボードに戻って残高が増えていればOKです。
増えていない場合は少し時間をおいてからF5キーなどで更新して確認してみてください。

2Captchの使用方法

ここでは自動でreCAPTCHAを回避・突破するためにプログラムを使う方法のさわりの部分だけ紹介します。

2CaptchaのAPIキーを取得する

ダッシュボードのaccout settingsのAPI KEYという項目に表示してありますのでそのままコピーして使いましょう。
APIキー入手

reCAPTCHAを突破したい対象サイトのURLを取得する

次に、reCAPTCHAが設置してある突破したサイトのURLを入手します。

これは何も難しいことはなくてブラウザのアドレスバーに表示してあるURLです。

たとえば、私がこの間メールアドレスとパスワードの組み合わせを忘れて、reCAPTCHAによって大変面倒くさい思いをしたチャットワークで言うと(https://www.chatwork.com/login.php)になります。
チャットワーク

対象サイトのreCAPTCHAのサイトキーを入手する

firefoxやGoogleChromeに標準装備されているディベロッパーツール(開発ツール)を開きます。

WindowsならどちらもF12キーです。
GoogleChromeでmacならショートカットキーは⌘+option+iです。

開発ツールのHTML検索で 「data-sitekey」と入力するとぱっと出ます。となっていますのでコピーして使いましょう。
data-sitekeyの検索
黄色の枠で囲っているところにdata-sitekeyと入力すると該当部分が検索されます。
黄色の下線部のdata-sitekeyをコピーしましょう。

2CAPTCHAを使う前にreCAPTCHAがどういう仕組みで認証しているか実際に見てみた

pythonなどのプログラムからAPIキーを使って解除を依頼すると、トークンが返ってきます。
このトークンを入力すれば認証セキュリティを突破できるのですが、ちょっとややこしいです。

まず入力する部分なのですがCSSによって非表示になっているので自動で行うにはスプリクトでここを表示するように書き換える必要があります。
開発ツールで確認するためには「g-recaptcha-response」と検索すると隠されたtextareaのHTMLが出てきます。

ここのスタイルのdisplay:noneのチェックを外してみると、あら不思議。
テキストエリアが出現します。
隠されたtextareaの出現
ゲームの隠し扉みたいでワクワクしますね(笑)

さて、試しにこのテキストエリアを表示したまま、手動で「私はロボットではありません」にチェックを入れてみると、テキストエリアにトークンが入力されます。
テキストエリアにトークンが入力される
このトークンを2CAPTCHAのシステムを使って入手したものを送ってもらい、自前のツールで入力して突破するという流れになります。

こ「のトークンは有効時間が短く2分くらいで期限が切れてしまいます。
期限が切れると以下のようになりやり直しになります。
トークンの有効期限切れ
なので、プログラムを作るときは2Captchaに解錠の要求をするものと併せて、CSSのスタイルを書き換えるプログラムと入力するプログラムが必要になります。

プログラムのソースについてはここでは割愛しますが、どんなプログラムの使い方があるかは公式サイトに掲載されていますので参考にしてください。
公式ページ APIについて (https://2captcha.com/2captcha-api

現在サポートされているAPIクライアントはphp, perl, .NET, C#, JAVAです。

reCAPTCHAを回避するための2Captchのまとめ

1000回突破するのに3ドルと非常に安価なのが魅力的ですが、日本語対応があまりされていないので英語表記なのでGoogleChromeが推奨ですがお使いのブラウザの翻訳ツールを使う必要がありそうです。

自動で突破するにはpythonなどのプログラミングツールやスクリプトをつかう必要があるので、
ツールの使い方をまず知っておく必要がありますが、突破するためのプログラムは様々な情報系ブログ記事や雑誌・書籍に載っているような簡単なものなのでこの機会にツールの使い方を覚えるのも良いかと思います。

上手く自動突破を取り入れて効率よくオンラインショップを利用できれば思わぬ副業ができるかもしれません。

これからさらに複雑化する認証セキュリティシステムと、それを攻略するツールやプラットホームの存在。見逃せませんね!

おまけ:2CATPCHAのworkerシステムについて

2Captchaに登録する際にcustomerと、もう一つ、workerというのもがありましたね。
登録完了後、ユーザーの種類を選ぶ
↑黄色の枠で囲ってない方のユーザーです。

これはユーザーから見たら自動でreCAPTCHAを突破しているようにするためのキモの部分です。
workerに登録したユーザーが2Captchaのシステムを使い「手動」で対象のサイトのreCAPTCHAを解錠しトークンをcustomerに送信するのです。

これは人力なので成果に対して報酬が支払われます
2captchaの解錠報酬
通常の認証システム1000回突破に対して0.18ドル
画像に認証システム1000回突破に対して1ドル
1回の突破にかかる時間はそれぞれ6秒と37秒

時給換算は。。。。しない方が良さそうですね。
しかしインターネットにつながるパソコンやスマホがあれば登録したら誰でもすぐにできるので、物価の低いところであればそこそこのお小遣いになるかなと思います。