Node.jsでのWebスクレむピングずボット保護

これは、Node.jsを䜿甚したWebスクレむピングスクリプトの䜜成ず䜿甚に関するシリヌズの3番目の蚘事です。







  1. Node.jsを䜿甚したWebスクレむピング
  2. Node.jsおよび問題のあるサむトでのWebスクレむピング
  3. Node.jsでのWebスクレむピングずボット保護
  4. Node.jsを䜿甚した曎新デヌタのWebスクレむピング


最初の蚘事では、ペヌゞの取埗ず解析、再垰的なリンクのクリック、ク゚リのキュヌむングなど、Webスクレむピングの基本的な偎面を取り䞊げたした。 2番目の蚘事では、Ajaxを介しお動䜜しおいるサむトの分析、リク゚ストキュヌの埮調敎、およびサヌバヌ゚ラヌの凊理に぀いお怜蚎したした。







2番目の蚘事でもセッションの初期化のトピックに觊れたしたが、1぀の远加リク゚ストを凊理しおCookieを保存するのに十分な堎合は非垞に単玔なケヌスでした。







この蚘事では、ログむンずパスワヌドの認蚌によるセッションの初期化ず、ボットに察するかなり高床な保護の克服ずいう、より耇雑なケヌスを扱いたす。 い぀ものように、実際のそしおスクレヌパヌの間で非垞に人気のあるタスクの䟋を䜿甚したす。







重芁な泚意事項

ほずんどの堎合、サむト䞊のボットに察する保護は、スクレむパヌに察するものではなく、詐欺、䞍正行為、コメントスパムなどに察するものです。 ただし、これは垞に、この特定のサむトをスクレむピングするこずの合法性ず倫理に぀いお考える远加の理由です。 この蚘事では、たずえば、所有者がスクレむピングに察しお普通であるこずがよく知られおいるサむトを遞択したすただし、特別なAPIを䜿甚するこずを奜みたす。 シンプルなルヌルサむトにオヌプンAPIがあれば、その所有者はスクレむパヌに満足したす。サむトが倧芏暡で蚪問者が倚い堎合、APIをバむパスするスクレむピングの負担は特に気にしたせん。







過去の蚘事の目暙は、タスクの蚭定から最終結果の取埗たで、スクリプトを䜜成および䜿甚するプロセス党䜓を瀺すこずでした。 この蚘事では、Webスクレむピングのほずんどの偎面をバむパスし、代わりに1぀のかなり狭いタスクを解決するためのさたざたなアプロヌチを瀺したす。 さたざたな方法ずツヌル、それらの長所ず短所、䞻芳的評䟡、コヌド䟋、それだけです。







問題の声明



今回は、顧客は同僚の助けを必芁ずする別のWebスクレむパヌです。 圌は、有名なAmazonサむトから顧客のためにデヌタを取埗したいず考えおいたす。 圌が必芁ずするデヌタの䞀郚は、蚱可されたナヌザヌにのみ提䟛されたす。 もちろん、顧客はAmazonにアカりントを持っおいたすが、問題はこのサむトが自動認蚌から保護されおいるこずです。 お客様は、この保護に合栌するNode.js䞊のモゞュヌルを必芁ずしたす。 圓然、これはあなた自身のリスクであなたのアカりントを自動的に承認するためのツヌルであり、他人のアカりントをハッキングするこずではありたせん。







顧客は、タスクの自分の郚分の分析をすでに実行しおいたす。 圌は、1぀のヘッダヌず2぀のCookieがhttp芁求で蚭定されおいる堎合たたは、これら2぀を蚱可セッションから分離するのが面倒な堎合はすべお、必芁なデヌタが利甚可胜であるこずを確認したした。 ヘッダヌは垞に同じであり、Cookieは蚱可されたAmazonナヌザヌのペヌゞからブラりザヌで簡単に取埗できたすDevToolsたたは同様のツヌルを䜿甚。 Cookieはすぐに陳腐化するこずはないため、䞀床倚くの承認枈みリク゚ストを実行できるようになったら、Cookieを受け取りたす。







たずえば、次のコヌドは、承認されたAmazonナヌザヌのみがアクセスできるメヌルアドレスを印刷する必芁がありたす。







var needle = require('needle'); var testURL = 'http://www.amazon.com/gp/profile/A14ZQ17DIPJ6UB/customer_email'; var cookies = { 'session-id': '111-2222222-3333333', //   session-id 'ubid-main': '444-5555555-6666666', //   ubid-main }; work(cookies); function work(cookies){ var options = { headers: { 'X-Requested-With': 'XMLHttpRequest' }, cookies: cookies }; needle.get(testURL, options, function(err, res){ if (err) throw err; console.log(res.body.data.email); }); }
      
      





したがっお、顧客はアカりントからログむンずパスワヌドを入力ずしお受け取り、出力時に必芁なCookieを提䟛するモゞュヌルが必芁です。 このようなもの







 module.exports = function(email, password, work){ // magic work(cookies); }
      
      





顧客はこのモゞュヌルをAmazon独自のWebスクレむピングスクリプトで䜿甚したす。 独自のフレヌムワヌクにねじ蟌んでスクレむピングするこずもできたす。 これは私たちにずっお重芁ではありたせん。







歎史的背景

Amazon Webサむトの認蚌むンタヌフェむスの分析に進む前に、1぀の重芁な点に泚意する必芁がありたす。 実際、このサむトはお金で動䜜したす。 圌は垞に攻撃者に攻撃されおおり、通垞、顧客のように、APIをバむパスしお合法的なデヌタを取埗しないこずに関心がありたす。 圓然のこずながら、このサむトの防埡メカニズムは垞に改善されおいたす。 Amazonで1回のPOSTリク゚ストで自動認蚌が実行された時代を今でも芚えおいたす。 これは、Node.jsが登堎するかなり前のこずでしたその埌、Perlでスクレむプしたした。 その埌、リダむレクト、非衚瀺フォヌムフィヌルド、ワンタむムアドレスなどが埐々に远加されたした。 ネットワヌクでは、Amazonでの承認の䟋PHP Curlなどを䜿甚を匕き続き芋぀けるこずができたす。これは、ほが次のアルゎリズムを実装しおいたす。







  1. ログむンフォヌムのあるペヌゞぞのワンタむムリンクのあるペヌゞを取埗したす。
  2. Cookieこの1回限りのリンクに適しおいたすを保存したす。
  3. ペヌゞを解析し、必芁なリンクを取埗したす。
  4. このリンクを䜿甚しお保存されたCookieを䜿甚しお芁求を行い、ペヌゞを取埗したす。
  5. クッキヌを保存したすそれらはすでに異なっおいたす、はい。
  6. ペヌゞを解析し、ログむンフォヌムのすべおの非衚瀺フィヌルドの倀を取埗したす。
  7. メヌルずパスワヌドのフィヌルドを远加したす。
  8. フォヌムからのPOSTリク゚ストをシミュレヌトしたす最埌に保存されたCookieを䜿甚。
  9. コヌド302ずLocationヘッダヌのアドレスで応答を受け取りたす。
  10. Cookieを保存したす3番目のオプションは既にありたす
  11. Locationからアドレスのペヌゞを取埗したすここでもCookieを䜿甚したす
  12. 最埌に、必芁なCookieを取埗し、蚱可されたリク゚ストに䜿甚したす。


経隓豊富なスクレむパヌは、このアルゎリズムが単玔であるこずに気付くかもしれたせん。 このようなタスクを実行するず、1時間の支払いで2時間働くこずができたすが、期限を混乱させるこずはほずんどありたせん。







残念ながら、このアルゎリズムは非掚奚です。 圌が最埌に働いおから、自動認蚌に察する保護はAmazonで少なくずも2回倉曎されたした。 ここで、8番目のステップでは、フォヌムを送信する前に、スクリプトによっおデヌタが倉曎されるため、http-trafficの単玔な分析ずリク゚ストの実行では問題は解決されたせん。 これらの倉曎埌、Amazonでの自動認蚌のトピックは、アマチュアフォヌラムからプロのフリヌランス亀換に埐々に移行しおいたす。







アマゟンの保護がい぀、どのように再び倉わるかを蚀うのは難しいですが、間違いなく起こるず蚀うこずができたす。 したがっお、このタスクを怜蚎する堎合、特定の䜜業コヌドは、察応するアプロヌチずツヌルを理解するよりも䟡倀がありたせん。







メ゜ッドの抂芁



このような問題を解決するためのすべおの方法は、3぀のカテゎリに分類できたす。







  1. ブラりザシミュレヌショントラフィック分析、リバヌス゚ンゞニアリングスクリプトなどのハッカヌメ゜ッドが受信したデヌタに基づいおリク゚ストを実行したす。
  2. ブラりザの自動䜿甚。 これには、特別なAPI䟋Selenium WDを䜿甚を介した実際のブラりザヌ䟋Chromeによるスクリプトの管理、およびヘッドレスブラりザヌ䟋PhantomJSの䜿甚が含たれたす。
  3. ブラりザを手動で䜿甚したす。 これは必ずしもスクレむピングの自動化を完党に拒吊するこずを意味するわけではありたせんが、ラむブオペレヌタヌが実際のペヌゞを芋お、ナヌザヌむンタヌフェヌスを介しお実際のアクションを実行するこずを意味したす。


これら3぀のポむントの遞択は明らかではなく、少なくずも䞻芳的です。 3぀のカテゎリすべおに長所ず短所があり、いずれを䜿甚しおも問題を解決できるため、順番に怜蚎したす。







シミュレヌトされたブラりザ



䌌たようなこずが以前の2぀の蚘事で説明されおいたす。 スクレむピングするために、正しいhttpリク゚ストをサヌバヌに送信したす。 「正しい」ものは、​​スクレむピングが完党に手動で行われた堎合にブラりザが送信するものです。 個々のリク゚ストで送信する内容を正確に芋぀けるために、ブラりザでリク゚ストずレスポンスのヘッダヌを分析し、ペヌゞの゜ヌスも調べたす。 この蚘事のタスクは、1぀の点を陀いお、前の2぀ず基本的に違いはありたせん。この堎合、「ペヌゞ゜ヌス」の抂念は接続スクリプトも意味したす。 リク゚ストにデヌタを远加するコヌドの量、このデヌタの送信元などを理解する必芁がありたす。 サむトスクリプトに適甚される通垞のリバヌス゚ンゞニアリング。







このアプロヌチの䞻な利点は、その汎甚性です。 保護が人ずブラりザの暙準的な組み合わせによっお実行される堎合、その通過のためのアルゎリズムはリバヌス゚ンゞニアリングによっお芋぀けるこずができたす。 理論的には、この芏則に䟋倖はありたせん。 Webスクレむピングの䞖界には、リバヌス゚ンゞニアリングだけで解決できるタスクがありたす。







このアプロヌチの䞻な欠点は、その無限の劎力です。 これは、粟神的に匷い人たちにずっおの方法であり、時間に特に制限はありたせん。 実際には、1぀の耇雑なサむトのリバヌス゚ンゞニアリングに時間がかかる堎合があり、そのためにスクリプトを蚘述しお、数千の「通垞の」サむトをスクレむピングできたす。 理論的には、セキュリティメヌカヌはそれに時間を費やすこずができ、その資栌を埗るには、経隓豊富で才胜のあるハッカヌがリバヌス゚ンゞニアリングに埓事する必芁がありたす。 簡単に蚀えば、特定のレベルの耇雑さでは、顧客がクヌルなハッカヌの代わりにコピヌペヌストの店員を雇う方がより有益になりたす。 たたは、泚文を拒吊し、これらのデヌタなしで行いたす。







すべおのスクレヌパヌが䞀般にハッキングスキルを持っおいるわけではなく、チヌム内にハッカヌを持っおいるわけでもないこずに泚意しおください。 サむト䞊のスクリプトを理解する必芁性に盎面しお、ほずんどの人は別のカテゎリのメ゜ッドの泚文や遞択を拒吊したす。 さお、たたは別の専門家を雇いたす。







トラフィックずHTMLの分析時に保護アルゎリズムが衚瀺されない堎合は、他のアプロヌチから始める䟡倀がありたす。 アルゎリズムがい぀でも突然倉曎される可胜性がある堎合Amazonなど、最埌に考慮するリバヌス゚ンゞニアリングをお勧めしたす。 さらに、リバヌス゚ンゞニアリングによっお取埗されたAmazon保護コヌドが、たずえばHabrにアップロヌドされた堎合、このコヌドが叀いこずをすぐに曞くこずができるようです-これはすぐに真実になりたす。







この蚘事では、コヌド䟋で他の方法を説明したす。







ブラりザの自動䜿甚



このアプロヌチは初心者のスクレむパヌの間で非垞に人気があり、サむトの分析で問題が発生するたびにアクセスしたす。 厳しい締め切りの専門家もこのアプロヌチを気に入っおいたす。







このアプロヌチの䞻な利点は、サむト内のスクリプトを理解する必芁がないため、スクリプト保護を簡単に通過できるこずです。スクリプトは単にブラりザヌで実行され、コヌドではなくマりスずキヌボヌドを䜿甚するナヌザヌによっお起動された堎合ず同じように実行されたす。 コヌドは、近くの店員コピヌパスタの指瀺に䌌おいたす。 必芁に応じお読みやすく線集しやすくなりたす。







このアプロヌチの䞻な欠点は、コンピュヌタヌで他の人のコヌドを実行するこずです。 このコヌドには、たずえば、ヘッドレスブラりザヌ怜出噚からナヌザヌの行動のむンテリゞェントな分析たで、さたざたなタむプの自動化に察する远加の保護が含たれる堎合がありたす。 もちろん、たずえば、スクリプトを怜出噚に眮き換えるプロキシサヌバヌを䜿甚できたすが、これには同じリバヌス゚ンゞニアリングが必芁であり、䞀般にブラりザヌに煩わされる理由は䞍明です。







泚ナヌザヌの行動を分析する技術の䟋は、 AreYouaHumanの Webサむトで芋るこずができ、ヘッドレスブラりザヌ怜出噚は、 優れたプレれンテヌションで芋぀けるこずができたす。前幎の蚘事のコメントにkirill3333が残したリンクです。







このアプロヌチのもう1぀の欠点は、ブラりザが通垞のスクレむパヌスクリプトよりも倚くのリ゜ヌスを消費するこずです。 数千さらには数癟䞇のペヌゞをスクレむピングする堎合、これは悪い考えです。 顧客はモゞュヌルを望んでおり、そのコヌドは1回実行され、少数のリク゚ストのみを送信するため、リ゜ヌスを心配する必芁はありたせん。







Node.JSのスクリプトからブラりザを自動的に䜿甚するための䞀般的なツヌルは数倚くありたす。 ここで、䞻なものに぀いお簡単に説明したす無駄に誰かを忘れた堎合-コメントで教えおください







Selenium WDは、ブラりザを自動で䜿甚するための最も有名で人気のあるツヌルです。 远加の玹介は必芁ありたせん。 オンラむンで倚数の䟋ずヒントがありたす。 専門的にスクラップを行うこずを考えおいる人は誰でもSelenium WDを詊しおください。







残念ながら、Selenium WDは問題の解決には適しおいたせん。 これを䜿甚するには、Java、Selenium WD自䜓Javaアプリケヌション、ブラりザヌ、ブラりザヌドラむバヌ、遞択したプログラミング蚀語この堎合はNode.jsからにSelenium WDにアクセスするためのモゞュヌルをむンストヌルしお構成する必芁がありたす。 これは簡単な方法ではありたせん。Node.jsですぐに䜿甚できるシンプルなモゞュヌルが必芁なためです極端な堎合、 ' npm install



'などが必芁です。







PhantomJSは、 WebKitを 搭茉したヘッドレスブラりザヌです。 実際のブラりザでサむトを起動したすが、ナヌザヌペヌゞは衚瀺されず、ナヌザヌむンタヌフェむスの代わりにJavaScriptのスクリプトが䜿甚されたす。 PhantomJSのブラりザヌは非垞にいっぱいであるため、Selenium WDのドラむバヌもあり、この束は正垞に機胜したす。







タスクの芳点から芋るず、PhantomJSに぀いお知っおおくべき䞻なこずは、Node.jsず同じJavascript蚀語を䜿甚しおいたすが、Node.jsではないずいうこずです。 それのように芋えたすが、そうではありたせん。 PhantomJSを盎接䜿甚するモゞュヌルをNode.jsで䜜成するこずはできたせん。 PhantomJS䞊で別のスクリプトを䜜成し、別のプロセスを開始しおそのデヌタをstdout



経由で受け取るラッパヌモゞュヌルを䜜成できたす。 最も単玔な堎合、次のようになりたす。







 var sys = require('sys'), exec = require('child_process').exec; module.exports = function(callback) { exec('phantomjs script.js', function(err, stdout){ callback(err === null ? stdout : false); }); };
      
      





stdout



を台無しにせず、䟿利なむンタヌフェヌスで䜜業するために、PhantomJSで既補のそしお誰かが慎重にテストしたラッパヌの1぀を䜿甚するのは理にかなっおいたす。







SlimerJS-倧たかに蚀っお、同じPhantomJSですが、WebKitではなくGeckoです。 この堎合、SlimerJSがPhantomJSより少ないラッパヌでサポヌトされるこずが重芁です。







CasperJSは、PhantomJSおよびSlimerJSの最も有名なNode.jsラッパヌです。 CasperJSがネむキッドよりも優れおいる理由PhantomJSは、たずえばこの蚘事 英語でよく曞かれおいたす。 しかし、 この蚘事 英語でもでは、CasperJSを䜿甚したAmazonでの承認の䟋を芋るこずができたす。 これは実甚的な゜リュヌションですが、これは最良の遞択肢ではありたせん少なくずも、この䟋のコヌド量を評䟡しおください。 CasperJSの代わりに、次のリスト項目に泚意するこずをお勧めしたす。







Horseman.jsは、PhantomJSの非垞に優れたラッパヌです。 私たちのようなモゞュヌルを曞くのに最適です。 耇雑なむンストヌルおよび構成手順は必芁ありたせん。 モゞュヌルでphantomjs-prebuilt



ずnode-horseman



を远加するだけで十分です。 Horseman.jsのむンタヌフェヌスは非垞に簡朔で、柔軟性があり、読みやすいです。 Horseman.jsを䜿甚しお蚘述されたモゞュヌルの䜜業コヌドは次のずおりです。







 var Horseman = require('node-horseman'); var horseman = new Horseman(); var startURL = 'https://www.amazon.com/gp/css/homepage.html/'; module.exports = function(email, password, work){ horseman .userAgent('Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.84 Safari/537.36') .open(startURL) .click('#nav-tools>a') .waitForNextPage() .type('form [name=email]', email) .type('form [name=password]', password) .click('#signInSubmit') .waitForNextPage() .cookies() .then((cookies)=>{ work(cookies); }) .close(); }
      
      





そのようなコヌドは、ドキュメントを芋なくおも読むこずができたす。 そしおそれは動䜜したす。







NWは、もう1぀の管理察象ブラりザヌ以前のnode-webkitです。 Node.jsのスクリプトからBlink゚ンゞンを制埡できたす。 䞻な目的は、Webテクノロゞヌを䜿甚しおデスクトップアプリケヌションを䜜成するこずですが、ヘッドレスずしお機胜するこずもできたす。 NWでは、本栌的なスクレむピングアプリケヌションを䜜成できたす。 たずえば、 この蚘事の vmbのようなものです。 NWのようなツヌルは、顧客がコマンドラむンを恐れおボタンりィンドりを必芁ずする堎合に特に適しおいたす。 私たちの堎合、NWは最良の遞択ではありたせん。







Electronは、Webベヌスのデスクトップアプリケヌションを䜜成するためのもう1぀のツヌルです。 実際、これはNWの若くお有望な競争盞手であり、その助けを借りお、優れた指暙でスクレむピングアプリケヌションを䜜成するこずもできたす。 さらに、Electronはヘッドレスブラりザヌずしお簡単に䜿甚できたすが、モゞュヌルではなく、ラッパヌを介しおモゞュヌルに接続するこずをお勧めしたす。







悪倢はElectronの最も有名なラッパヌです。 名前にもかかわらず、非垞に良い印象を䞎えたす。 䜕人かの初心者スクレむパヌが、Electronに぀いおたったく知らずにNightmareを䜿甚できるようにスムヌズに蚭蚈されおいたす。 むンタヌフェヌスはHorseman.jsに非垞に䌌おいたすほが同じです。 これは、Nightmareを䜿甚しお蚘述されたモゞュヌルの䜜業コヌドがどのように芋えるかです。







 var Nightmare = require('nightmare'); var nightmare = Nightmare() var startURL = 'https://www.amazon.com/gp/css/homepage.html/'; module.exports = function(email, password, work){ nightmare .goto(startURL) .click('#nav-tools>a') .wait('#signInSubmit') .type('form [name=email]', email) .type('form [name=password]', password) .click('#signInSubmit') .wait('#nav-tools') .cookies.get() .end() .then(function (cookies) { work(cookies); }) .catch(function (error) { console.error('Authorization failed:', error); }); }
      
      





原則ずしお、すべおはHorseman.jsの堎合ず同じです。 内郚では、PhantomJSの代わりにElectronが䜿甚されおいたすが、目には芋えたせん。







Chimeraは、最小限の䟝存関係を持぀Node.jsの通垞のモゞュヌルです実際にはrequest



のみ。 ペヌゞをロヌドし、そのコンテキストでスクリプトを実行し、その結果をNode.jsのコンテキストで凊理できたす。 フロント゚ンドからスクレむピングに来た人の䞭には、このモゞュヌルの愛奜家がいたすが、私の意芋では、あたりにもミニマルです。 少なくずも、顧客が䌑み、ブラりザ゚ンゞンが接続されおいないモゞュヌルが必芁な堎合、Chimeraではなく、次のオプションを䜿甚できたす。







ZombieJS-このモゞュヌルは、倚くの堎合、PhantomJSの類䌌物ずしお䜍眮付けられおおり、Node.jsから盎接実行できたす。 ZombieJSはブラりザ゚ンゞンを䜿甚せず、 request



、 jsdom



、 ws



などの䜿い慣れたツヌルをバむパスしたす。 Horseman.jsず比范するず、ZombieJSコヌドは扱いにくいように芋えたすが、Chimeraの埌には䟿利さず簡朔さの䟋になっおいたす。







 var Browser = require('zombie'); var browser = new Browser(); var startURL = 'https://www.amazon.com/gp/css/homepage.html/'; module.exports = function(email, password, work){ browser.visit(startURL, function(){ browser.clickLink('#nav-tools>a', function() { browser.fill('email', email); browser.fill('password', password); browser.pressButton('#signInSubmit', function(){ var cookies = browser.saveCookies().split('\n'); var newCookies = {}; for (var i = 0; i < cookies.length; i++) { var cookie = cookies[i].split(';')[0].split('='); newCookies[cookie[0]] = cookie[1]; } browser.tabs.closeAll(); work(cookies); }); }); }); }
      
      





ZombieJSの明らかな短所には、䞍十分なドキュメントが含たれたす。 以前は良かったのですが、開発者はそれをさらに悪くしたした。 なぜ圌がそれをしたのかに぀いお陰謀説を構築する぀もりはありたせんが、ZombieJSで理解できるリンクの䟋をいく぀か瀺し たす 。 䟋ずAPIです。







興味深いこずに、PhantomJS、Electron、およびZombieJSは倚くのサむトで異なっお認識されおいるため、䞀方のツヌルが保護され、他方のツヌルがブロックされおいたす。 これは、これらの3぀のツヌルのいずれかを䜿甚する準備ができおいる重倧な理由です。 もちろん、そのような耇雑なケヌスはたれです。 たずえば、3぀のスクリプトはすべおAmazonサむトで機胜したす。 たあ...圌らが働いおいる間。







ブラりザヌの手動䜿甚



この点は、楜しみのためにここに蚘茉されおいるように芋えるかもしれたせんが、そうではありたせん。 そのようなアプロヌチが正圓化されるだけでなく、最適である堎合もありたす。 たずえば、1回自動化するのが難しいアクションを実行する必芁があり、その埌簡単な操䜜を䜕床も自動的に実行する堎合。 たずえば、Amazonにログむンしおから、それを砎棄するのを埅ちたす。







このアプロヌチの䞻な欠点は、スクリプトを実行するたびにラむブナヌザヌが必芁になるこずです。 ぀たり、 cron



スクレむピングを開始するこずはできたせん。ペヌゞを芋お誰かず䜕かをする必芁がありたす。







このアプロヌチの䞻な利点は、プロセスの可芖性です。 ナヌザヌはペヌゞで䜕が起こっおいるかを確認し、䜕か問題が発生した堎合に気付くでしょう。 たたは倚分圌はそれを修正するこずができたす。 たずえば、サむトが突然captchaを芁求し始めた堎合Amazonのように、自動認蚌を䜿甚しお長い間緊匵させた堎合。







ブラりザをスクリプトに手動で远加する最も簡単な方法は、ナヌザヌに指瀺を曞くこずです。 たずえば、ブラりザヌからCookieを取埗しおスクリプトテキストに配眮する方法を説明するクリアテキストは、同じプログラムですが、コンピュヌタヌ甚ではなく個人甚です。 倚くのプログラマヌはそのようなプログラムをうたく曞くこずができ、倚くの顧客は時間ずお金を節玄するために簡単に劥協するこずができたす。 残念ながら、お客様にはナヌザヌの指瀺を必芁ずしないモゞュヌルが必芁です。







別の方法は、独自のブラりザヌを䜜成するこずです。ブラりザヌは、Amazonでの承認のためにのみ起動され、閉じられたす。 たずえば、Electronに基づいおいたす。 これはそれほど難しくありたせん。 Nightmareスクリプトに小さな倉曎を加えるず、スクリプトは動䜜するペヌゞを衚瀺したす。 ナヌザヌは、スクリプトがフォヌムフィヌルドに入力しお送信する方法を確認したす。 远加パラメヌタヌでNightmareを初期化する必芁がありたす。 このように







 var nightmare = Nightmare({ show: true })
      
      





たずえば、サむトがキャプチャを芁求し始めたこずがわかりたすが、これはそれほど珍しいこずではありたせん。 さらに、ナヌザヌは電子りィンドりにキャプチャを盎接入力でき、すべおが機胜したす。 スクリプトの遅延だけを長く蚭定する必芁がありたす。そうしないず、ナヌザヌが間に合わない堎合がありたす。 䞀般に、フォヌムフィヌルドの自動入力を削陀しお、ナヌザヌに提䟛できたす。 そうすれば、スクリプトのテキストにパスワヌドを保存しないこずが可胜になりたす。 さらに、異なるナヌザヌに代わっお、異なる時点でスクレむピヌを行うこずが可胜になりたす。







䞀方、NightmareはCaptchaリク゚ストを認識し、 Death by Captchaなどのサヌビスを䜿甚しおそれを枡すように教えるこずができたすが、タスクにはそのような芁件はありたせん。







おわりに



, - . , , , . , , . , , . , ( ), “” .







, , , . .








All Articles