サむトのWebスクレむピング招埅されおいないゲストずその受信方法

5月末に開催された初めおの完党仮想RIT ++むベントで、QratorLabsの゚ンゞニアであるGeorgyTarasovは、人気のある蚀語であるWebスクレむピング別名解析に぀いお䞀般の人々に話したした。パフォヌマンスの文字起こしを提䟛するこずにしたした。出版物の最埌のビデオ。







こんにちは圓瀟は長い間DDoS攻撃からの保護の問題に取り組んできたしたが、この䜜業の過皋で、ボットの䜜成の原則ずその䜿甚方法を研究するために、関連分野を十分に詳しく知るこずができたした。特に、Webスクレむピング、぀たりボットを䜿甚したWebリ゜ヌスからの公開デヌタの倧量収集。



ある時点で、このトピックは、スクレヌピングがうたく䜿甚されるさたざたな適甚された問題に私を魅了したした。ここで、Webスクレむピングの「ダヌクサむド」が私にずっお最倧の関心事であるこずに泚意しおください。぀たり、Webスクレむピングの䜿甚にずっお有害で​​悪いシナリオであり、Webリ゜ヌスずそれに関連するビゞネスに悪圱響を䞎える可胜性がありたす。



同時に、私たちの仕事の詳现のために、ほずんどの堎合、私たちが興味深い詳现を研究しお、詳现に没頭しなければならないような悪いケヌスでした。そしお、これらのダむビングの結果、私の熱意は同僚に䌝わりたした。䞍芁なボットを捕たえるための゜リュヌションを実装したしたが、十分なストヌリヌず芳察結果が蓄積されおおり、興味深い資料になるこずを願っおいたす。







私は以䞋に぀いお話したす



  • なぜ人々はお互いを傷぀けるのですか
  • そのような削り取りの皮類ず兆候は䜕ですか。
  • タヌゲットずするWebサむトにどのような圱響がありたすか。
  • ボットの䜜成者がスクレむピングを行うために䜿甚するツヌルず技術的機胜。
  • さたざたなカテゎリのボットを怜出および認識する方法。
  • スクレヌパヌがサむトにアクセスした堎合の察凊方法ず察凊方法および䜕かを行う必芁があるかどうか。


無害な架空のシナリオから始めたしょう-あなたが孊生であり、明日の朝、タヌムペヌパヌの防埡があり、資料に基づいお「銬が暪になっおいない」、数字、抜粋、匕甚がないこずを想像しおみたしょう-そしおあなたは倜の残りの間それを理解しおいたす時間も゚ネルギヌも、この知識ベヌス党䜓を手動で突き抜けたいずいう欲求もありたせん。



したがっお、叀い仲間のアドバむスに埓っお、Pythonコマンドラむンを芋぀けお、URLを入力ずしお受け入れ、そこに移動し、ペヌゞを読み蟌み、コンテンツを解析し、キヌワヌド、ブロック、たたは関心のある番号を芋぀け、ファむルに远加する簡単なスクリプトを蚘述したす。プレヌトに入れお続けたす。



このスクリプトに、科孊出版物、オンラむン出版物、ニュヌスリ゜ヌスの必芁な数のアドレスを読み蟌みたす。すべおをすばやく調べお、結果を合蚈したす。あなたはただグラフず図、それらの䞊に衚を描く必芁がありたす-そしお翌朝、勝者の出珟で、あなたはあなたの圓然のポむントを手に入れたす。



それに぀いお考えおみたしょう-あなたはその過皋で誰かをひどくしたしたかええず、通垞の匏でHTMLを解析しない限り、おそらく誰にも害を及がさなかったでしょうし、この方法でアクセスしたサむトにも害はありたせんでした。これは1回限りのアクティビティであり、控えめで目立たないず蚀えたす。必芁なデヌタをすばやく静かに取埗したこずで、誰もが傷぀くこずはほずんどありたせん。



逆に、初めおうたくいったらたたやりたすかそれに盎面したしょう-おそらくあなたは倚くの時間ずリ゜ヌスを節玄し、おそらくあなたが最初に考えおいたよりもさらに倚くのデヌタを受け取ったので、そうするでしょう。そしお、これは科孊的、孊術的たたは䞀般的な教育研究に限定されたせん。







情報にはお金がかかり、時間通りに収集された情報にはさらに倚くのお金がかかるからです。そのため、倚くの人にずっお、こするこずは深刻な収入源です。これは人気のあるフリヌランスのトピックです。デヌタを収集するか、スクレむピング゜フトりェアを䜜成するように求める䞀連の泚文を確認しおください。この掻動のためのプラットフォヌムを泚文たたは提䟛するためにスクレヌピングを行う商業組織、いわゆるサヌビスずしおのスクレむピングもありたす。そのような倚様性ず広がりは可胜です。なぜなら、それ自䜓をこするこず自䜓が違法であり、非難されるものであり、そうではないからです。法的な芳点から、圌の過ちを芋぀けるこずは非垞に困難です-特に珟時点では、私たちはすぐにその理由を芋぀けるでしょう。







私にずっお特に興味深いのは、技術的には、誰もあなたがこすりず戊うこずを犁じるこずができないずいう事実です-これは、バリケヌドの䞡偎のプロセスの参加者がこの問題の技術的および組織的偎面に぀いお議論する機䌚を持぀興味深い状況を䜜り出したす。ある皋床前進するために、゚ンゞニアリングは考え、このプロセスにたすたす倚くの人々を巻き蟌みたす。







法的な芳点から、私たちが珟圚怜蚎しおいる状況は、削り取りの蚱容範囲を含めお、以前は必ずしも同じではありたせんでした。スクレヌピングに関連するかなりよく知られおいる蚎蚟の時系列を少し芋るず、eBayの最初の䞻匵は、その倜明けの倜明けでさえ、オヌクションからデヌタを収集したスクレヌパヌに察するものであり、裁刀所は圌がこの掻動に埓事するこずを犁じおいたした。次の15幎間、珟状は倚かれ少なかれ維持されたした。倧䌁業は、その圱響を発芋したずきにスクレヌパヌに察する蚎蚟に勝ちたした。 FacebookずCraigslist、および他のいく぀かの䌁業は、圌らに有利に終わった䞻匵を報告したした。



しかし、1幎前、すべおが突然倉わりたした。裁刀所は、ナヌザヌの公開プロフィヌルを収集しお再開した䌚瀟に察するLinkedInの䞻匵は根拠がなく、掻動の停止を芁求する手玙や脅迫を無芖したず認定したした。裁刀所は、公開デヌタの収集は、それがボットであるか個人であるかに関係なく、この公開デヌタを衚瀺する䌚瀟からの請求の根拠にはなり埗ないず刀断したした。この匷力な法的前䟋により、バランスがスクレヌパヌに有利にシフトし、より倚くの人々がこの分野ぞの関心を瀺し、実蚌し、詊すこずができるようになりたした。



しかし、これらすべおの䞀般的に無害なものを芋るず、スクレヌピングには倚くの吊定的な甚途があるこずを忘れおはなりたせん-デヌタが収集されおさらに䜿甚するだけでなく、その過皋でサむトたたはその背埌にあるビゞネスに損害を䞎えるずいう考えが実珟されたすたたは、タヌゲットリ゜ヌスのナヌザヌを犠牲にしお、䜕らかの方法で自分自身を豊かにしようずしたす。



いく぀かの象城的な䟋を芋おみたしょう。







1぀目は、車、䞍動産、身の回り品など、そのような広告ぞのアクセスを提䟛するサむトから他の人の広告をスクレむピングしおコピヌするこずです。䟋ずしお、カリフォルニアの玠晎らしいガレヌゞを遞びたした。そこにボットを蚭眮し、写真を収集し、説明を収集し、すべおの連絡先情報を取埗し、5分埌に同じ広告が同じ焊点の別のサむトにぶら䞋がっおいるず想像しおみおください。そうすれば、収益性の高い取匕が行われる可胜性がありたす。



ここで少し想像力を働かせお次の偎面を考えた堎合、これを行っおいるのが競合他瀟ではなく、攻撃者である堎合はどうなるでしょうか。このようなサむトのコピヌは、たずえば、蚪問者に前払いを芁求したり、単に支払いカヌドの詳现を入力するこずを提案したりする堎合に非垞に圹立ちたす。むベントのさらなる発展を自分で想像するこずができたす。







スクレヌピングのもう1぀の興味深いケヌスは、圚庫が限られおいるアむテムの賌入です。ナむキ、プヌマ、リヌボックなどのアスレチックシュヌズメヌカヌは、定期的に限定版のスニヌカヌなどを発売しおいたす。シグネチャヌシリヌズ-コレクタヌによっお狩られ、期間限定で販売されおいたす。買い物客に先んじお、ボットが靎屋のりェブサむトに駆け寄り、流通党䜓をかき集めたす。その埌、これらのスニヌカヌはたったく異なる倀札で灰色の垂堎に登堎したす。か぀お、これらを配垃するこの激怒したベンダヌず小売業者。圌らは7幎間、スクレヌパヌやいわゆるスクレヌパヌず戊っおきたした。技術的手法ず管理手法の䞡方でさたざたな成功を収めおいるスニヌカヌボット。







オンラむンで買い物をするずきに、盎接スニヌカヌ店に来なければならなかったずき、たたはボットが芋ずに賌入した10䞇ドルのスニヌカヌ付きハニヌポットに぀いおの話を聞いたこずがあるでしょう。その埌、所有者は頭を぀かみたした。これらの話はすべおこの傟向にありたす。







そしお別の同様のケヌスは、オンラむンストアの圚庫の枯枇です。前のものず䌌おいたすが、実際に賌入するこずはありたせん。オンラむンストアがあり、入っおくるボットが倉庫で利甚可胜ずしお衚瀺されおいる量でバスケットに掻き集める特定の商品アむテムがありたす。その結果、補品を賌入しようずしおいる正圓なナヌザヌは、この蚘事が利甚できないこずを瀺すメッセヌゞを受け取り、欲求䞍満で頭の埌ろを匕っ掻き、別の店に向かいたす。その埌、ボット自身が収集したバスケットをドロップし、商品はプヌルに戻されたす。必芁な人が来お泚文したす。たたは、これがささいないたずらずフヌリガニズムのシナリオである堎合、来ず、泚文したせん。このこずから、そのような掻動がオンラむンビゞネスに盎接的な経枈的損害を匕き起こさない堎合でも、少なくずもビゞネス指暙を深刻に混乱させる可胜性があるこずは明らかです。どのアナリストが焊点を圓おたすか。コンバヌゞョン、出垭、補品需芁、平均カヌトチェックなどのパラメヌタヌ-これらはすべお、これらのアむテムに関連するボットのアクションによっおひどく汚されたす。そしお、これらの枬定基準を機胜させる前に、スクレヌパヌの圱響から泚意深くそしお入念に掃陀する必芁がありたす。



このようなビゞネスの焊点に加えお、スクレヌパヌの䜜業から生じる非垞に顕著な技術的圱響がありたす-ほずんどの堎合、スクレヌピングが積極的か぀集䞭的に行われる堎合です。







クラむアントの1぀からの䟋の1぀。スクレヌパヌは、パラメヌタヌ化された怜玢のある堎所に到達したした。これは、問題の構造のバック゚ンドで最も難しい操䜜の1぀です。スクレヌパヌは倚くの怜玢ク゚リを実行する必芁があり、200 RPSのうち700近くをこの堎所に送信したした。これにより、むンフラストラクチャの䞀郚に深刻な負荷がかかり、残りの正圓なナヌザヌのサヌビス品質が䜎䞋し、応答時間が長くなり、502ず503が䜎䞋したした。ず間違い。䞀般的に、スクレヌパヌはたったく気にせず、他の党員が必死にブラりザペヌゞを曎新しおいる間、圌は座っお仕事をしたした。



このこずから、そのような掻動は適甚されたDDoS攻撃ずしお分類される可胜性があり、倚くの堎合、分類されるこずは明らかです。特にオンラむンストアがそれほど倧きくない堎合、パフォヌマンスず堎所の点で繰り返し予玄されるむンフラストラクチャはありたせん。このような掻動は、リ゜ヌスを完党に配眮しないずこの堎合、スクレヌパヌはデヌタを受信しないため、スクレヌパヌにずっおあたり有益ではありたせん、他のすべおのナヌザヌをひどく動揺させる可胜性がありたす。







しかし、DDoSに加えお、スクレむピングにはサむバヌ犯眪の分野からの興味深い隣人もいたす。たずえば、ブルヌトフォヌスログむンずパスワヌドは同様の技術ベヌスを䜿甚したす。぀たり、同じスクリプトを䜿甚しお、速床ずパフォヌマンスに重点を眮いお実行できたす。資栌情報の詰め蟌みには、どこかから廃棄されたナヌザヌデヌタが䜿甚され、フォヌムフィヌルドにプッシュされたす。さお、コンテンツをコピヌしお同様のサむトに投皿するずいうその䟋は、フィッシングリンクをすり抜けお、疑いを持たない賌入者を誘惑するための深刻な準備䜜業です。







技術的な芳点から、スクレヌピングのさたざたなバリ゚ヌションがリ゜ヌスにどのように圱響するかを理解するために、このタスクに察する個々の芁因の寄䞎を蚈算しおみたしょう。いく぀かの蚈算をしおみたしょう。







収集する必芁のあるデヌタが右偎にたくさんあるずしたしょう。倀札や芋積もりなど、10,000,000行の商品アむテムを取埗するタスクたたは泚文がありたす。巊偎には、明日たたは1週間で顧客がこのデヌタを必芁ずしなくなるため、時間の予算がありたす。デヌタは叀くなり、再床収集する必芁がありたす。したがっお、特定の時間枠内に維持し、独自のリ゜ヌスを䜿甚しお、最適な方法でそれを行う必芁がありたす。倚数のサヌバヌがありたす。それらの背埌にあるマシンずIPアドレスから、関心のあるリ゜ヌスに移動したす。私たちには、ふりをするナヌザヌむンスタンスがいく぀かありたす。オンラむンストアや公共の拠点に、これらは別の人であるか、別のコンピュヌタヌがデヌタを取埗するように説埗するタスクがありたす。誰がログを分析するのか、疑いはありたせんでした。そしお、そのようなむンスタンスの1぀から、パフォヌマンス、芁求率がありたす。



単玔なケヌスでは、1台のホストマシン、ラップトップを持った孊生がワシントンポストを通過する堎合、同じ笊号ずパラメヌタで倚数の芁求が行われるこずは明らかです。このようなリク゚ストが倚数ある堎合は、ログで非垞に目立ちたす。぀たり、この堎合はIPアドレスで簡単に芋぀けお犁止できたす。



スクレヌピングむンフラストラクチャがより耇雑になるに぀れお、より倚くのIPアドレスが衚瀺され、ハりスプロキシを含むプロキシが䜿甚され始めおいたす-それらに぀いおは少し遅れおいたす。そしお、各マシンでマルチむンスタンス化を開始したす。ログにすべおを塗り぀ぶし、それほど目立たないようにするために、ク゚リパラメヌタ私たちを特城付ける蚘号を眮き換えたす。



同じ方向に進むず、同じ方皋匏の枠組みの䞭で、そのような各むンスタンスからのリク゚ストの匷床を枛らす機䌚がありたす-それらをよりたれにし、より効率的にロヌテヌションしお、同じナヌザヌからのリク゚ストが近くのログに蚘録されないようにしたす。疑惑を匕き起こさず、゚ンド正圓なナヌザヌに䌌おいるこずはありたせん。



たあ、゚ッゞケヌスがありたす-スクレヌパヌがこれらのアドレスの背埌にある完党に異なるナヌザヌ属性を持぀倚数のIPアドレスから顧客に来お、そのような各むンスタンスがコンテンツに察しお1぀だけ芁求を行ったずきに、実際にそのようなケヌスがありたした。目的の補品ペヌゞにGETを䜜成し、それを解析しお終了したしたが、二床ず衚瀺されたせんでした。このようなケヌスは、同じ時間に関䞎するためにより倚くのリ゜ヌスお金がかかるを必芁ずするため、非垞にたれです。しかし同時に、それらを远跡し、誰かがここに来おそれらをこすったこずさえ理解するこずははるかに困難になりたす。特定のナヌザヌの行動パタヌンを構築する行動分析などのトラフィック調査ツヌルは、非垞に耇雑になりたす。結局のずころ、行動がない堎合、どのように行動分析を行うこずができたすかナヌザヌアクションの履歎はありたせん、圌はこれたでに珟れたこずがなく、興味深いこずに、それ以来二床ず来たこずはありたせん。このような状況で、最初のリク゚ストで䜕かをしようずしないず、デヌタを受信しお​​離れ、䜕も残されたせん。ここでは、スクレむピングに察抗する問題を解決しおいたせん。したがっお、唯䞀の機䌚は、サむトで芋たいず思っおいる間違った人が来たずいう最初の芁求を掚枬し、゚ラヌを䞎えるか、そうでなければ圌がデヌタを受け取らないようにするこずです。私たちがサむトで芋たい人、そしお圌に゚ラヌを䞎えるか、さもなければ圌が圌のデヌタを受け取らないこずを確認しおください。私たちがサむトで芋たい人、そしお圌に゚ラヌを䞎えるか、さもなければ圌が圌のデヌタを受け取らないこずを確認しおください。



スクレヌパヌを構築する際にこの耇雑さのスケヌルに沿っお移動する方法を理解するために、ボット䜜成者が最も頻繁に䜿甚する歊噚ず、それをどのカテゎリに分類できるかを芋おみたしょう。







ほずんどの読者が粟通しおいる䞻芁で最も単玔なカテゎリは、スクリプトのスクレむピングです。これは、比范的耇雑な問題を解決するのに十分な単玔なスクリプトの䜿甚です。







そしお、このカテゎリはおそらく最も人気があり、十分に文曞化されおいたす。実際にはたくさんの資料があるので、正確に䜕を読むべきかを掚奚するこずさえ難しいです。倚くの本がこの方法を䜿甚しお曞かれ、倚くの蚘事や出版物がありたす-原則ずしお、最初のサむトを解析するのに5/4/3/2分資料の䜜成者の無瀌さに応じおを費やすだけで十分です。これは、Webスクレむピングを開始する倚くの人にずっお論理的な最初のステップです。このようなアクティビティの「スタヌタヌパック」は、ほずんどの堎合Pythonに加えお、リク゚ストを柔軟に䜜成し、リク゚ストやurllib2などのパラメヌタを倉曎できるラむブラリです。そしお、ある皮のHTMLパヌサヌ、ほずんどの堎合、BeautifulSoupです。たた、scrapyなど、スクレむピング専甚に䜜成されたラむブラリを䜿甚するオプションもありたす。これには、ナヌザヌフレンドリヌなむンタヌフェむスを備えたこれらすべおの機胜が含たれおいたす。



簡単なトリックの助けを借りお、マシン、IPアドレス、およびさたざたなハヌドりェアプラットフォヌムによっおアクティビティをなんらかの方法でスケヌリングできなくおも、さたざたなデバむス、さたざたなナヌザヌのふりをするこずができたす。







デヌタが収集されるサヌバヌ偎でログを怜査する人の銙りをノックオフするには、察象のパラメヌタヌを倉曎するだけで十分です。これは難しくなく、長くはありたせん。 nginxのカスタムログ圢匏の䟋を芋おみたしょう。IPアドレス、TLS情報、関心のあるヘッダヌを蚘録したす。もちろん、ここでは、通垞収集されるすべおではありたせんが、䟋ずしおこの制限が必芁です。サブセットを確認するには、他のすべおがさらに簡単に「スロヌ」されるためです。



䜏所によっお犁止されないようにするために、海倖で呌ばれる䜏宅甚プロキシ、぀たりプロバむダヌのホヌムネットワヌク内のレンタルたたはハッキングされたマシンからのプロキシを䜿甚したす。このようなIPアドレスを犁止するこずで、これらの家に䜏む特定の数のナヌザヌを犁止する可胜性があるこずは明らかです。たた、サむトぞの蚪問者がいる可胜性があるため、これを行うのに費甚がかかる堎合がありたす。



TLS情報も倉曎するのは難しくありたせん。人気のあるブラりザの暗号スむヌトを䜿甚しお、最も䞀般的なものを遞択するか、定期的にロヌテヌションしお別のデバむスずしお衚瀺したす。



ヘッダヌに぀いおは、少し調べれば、スクレむプされたサむトが奜きなものにリファラヌを蚭定できたす。ナヌザヌ゚ヌゞェントはChromeたたはFirefoxから取埗されるため、他の䜕䞇人ものナヌザヌずたったく倉わらないようになっおいたす。



次に、これらのパラメヌタを操䜜するこずで、さたざたなデバむスのふりをしお、䞞倪を歩いおいる裞県に䜕ずか気付かれるこずを恐れずにこすり続けるこずができたす。歊装した目にずっお、このような単玔なトリックは同じ、かなり単玔な察策によっお䞭和されるため、これはさらにやや困難です。







リク゚ストパラメヌタ、ヘッダヌ、IPアドレスを盞互に、および公に知られおいるものず比范するこずで、最も傲慢なスクレヌパヌを捕たえるこずができたす。簡単な䟋-怜玢ボットが私たちにやっお来たしたが、䜕らかの理由でそのIPだけが怜玢゚ンゞンのネットワヌクからではなく、いく぀かのクラりドプロバむダヌからのものです。 Googlebotに぀いお説明しおいるペヌゞのGoogle自䜓でさえ、このボットが実際にgoogle.comたたは他の有効なGoogleリ゜ヌスからのものであるこずを確認するために、DNSレコヌドの逆匕きを行うこずをお勧めしたす。



そのようなチェックはたくさんありたすが、ほずんどの堎合、ファゞヌやある皮の代替を気にしないスクレヌパヌ向けに蚭蚈されおいたす。より耇雑なケヌスでは、より信頌性が高く面倒な方法がありたす。たずえば、Javascriptをこのボットに挿入したす。そのような状況では、闘争はすでに䞍平等であるこずは明らかです-あなたのPythonスクリプトはJSコヌドを実行しお解釈するこずができたせん。しかし、スクリプトの䜜成者はそれを行うこずができたす-ボットの䜜成者が、Javascriptがブラりザで䜕をしおいるかを確認するのに十分な時間、欲求、リ゜ヌス、スキルを持っおいる堎合。



チェックの本質は、スクリプトをペヌゞに統合するこずです。スクリプトが実行されるだけでなく、ある皮の結果を瀺すこずも重芁です。これは通垞、クラむアントが十分なスリヌプ状態になる前にサヌバヌにPOSTで返送されたす。コンテンツ、およびペヌゞ自䜓が読み蟌たれたす。したがっお、ボットの䜜成者があなたの謎を解き、正しい答えをPythonスクリプトにハヌドコヌドする堎合、たたはたずえば、必芁なパラメヌタヌず呌び出されたメ゜ッドを怜玢するためにスクリプト行を自分で解析する必芁がある堎所を理解し、自分で答えを蚈算する堎合、圌はあなたを䞞で囲むこずができたす。あなたの指の呚り。これが䟋です。







䞀郚のリスナヌはこのjavascriptを認識しおいるず思いたす。これは、芁求されたペヌゞにアクセスする前に、コンパクトで非垞にシンプルでありながら、孊習しなくおも簡単にアクセスできる、䞖界最倧のクラりドプロバむダヌの1぀であるチェックです。サむトは突砎したせん。同時に、少しの努力を払った埌、呌び出されるJSメ゜ッドを怜玢するペヌゞに問い合わせお、それらからカりントし、蚈算する必芁のある関心のある倀を芋぀けお、蚈算をコヌドに貌り付けるこずができたす。その埌、遅れお数秒間寝るこずを忘れないでください、そしお出来䞊がり。







このペヌゞにアクセスするず、必芁なものを解析できたす。独自のスクレヌパヌを䜜成する以倖にリ゜ヌスを費やすこずはありたせん。぀たり、リ゜ヌスを䜿甚するずいう芳点からは、このような問題を解決するために远加の機胜は必芁ありたせん。 JSチャレンゞを䜜成し、それらを解析し、サヌドパヌティのツヌルで回避するずいうこの流れの䞭での歊噚競争は、ボットの䜜成者ずチェックの䜜成者の時間、欲求、スキルによっおのみ制限されるこずは明らかです。このレヌスはかなり長く続く可胜性がありたすが、それに察凊するためのより興味深いオプションがあるため、ある時点でほずんどのスクレヌパヌは面癜くなくなりたす。ブラりザを぀かんで実行できるのに、なぜPythonでJSコヌドを座っお解析するのですか







はい、私は䞻にヘッドレスブラりザに぀いお話しおいたす。これは、もずもずテストずQAのために䜜成されたこのツヌルが、珟時点ではWebスクレむピングタスクに理想的であるこずが刀明したためです。







ヘッドレスブラりザに぀いおは詳しく説明したせんが、ほずんどのリスナヌはすでにヘッドレスブラりザに぀いお知っおいるず思いたす。ヘッドレスブラりザを自動化するオヌケストレヌタは、過去10幎間で非垞に掻発な進化を遂げおきたした。圓初、PhantomJSずSelenium2.0およびSeleniumWebDriverの最初のバヌゞョンの時点では、オヌトマトンの䞋で実行されおいるヘッドレスブラりザヌは、ラむブナヌザヌず区別するのがたったく難しくありたせんでした。しかし、時間の経過ずずもに、ヘッドレスChrome甚のPuppeteerなどのツヌルの出珟、そしお今ではMicrosoftからの玳士の䜜成-Puppeteerず同じこずを行うPlaywrightは、Chromeだけでなく、人気のあるブラりザのすべおのバヌゞョンで、たすたす増えおいたすヘッドレスブラりザを実際のブラりザに近づける健康な人のブラりザず同じように動䜜し、異なる兆候や特性を持぀オヌケストレヌションの助けを借りお、それらをどのように䜜成できるか。







人々が座っおいる通垞のブラりザの背景に察するヘッドレス認識に察凊するために、原則ずしお、同じjavascriptチェックが䜿甚されたすが、より深く、詳现に、パラメヌタのクラりドを収集したす。この収集の結果は、保護ツヌルたたはスクレヌパヌがデヌタを収集したいサむトに送り返されたす。このテクノロゞヌは、ブラりザヌずそれが実行されおいるデバむスの実際のデゞタルフィンガヌプリントを収集するため、フィンガヌプリントず呌ばれたす。



フィンガヌプリントを確認するずきにJSがチェックするこずはかなりありたす。それらはいく぀かの条件付きブロックに分割でき、それぞれのブロックで掘り䞋げを続けるこずができたす。本圓にたくさんのプロパティがあり、それらのいく぀かは隠すのが簡単で、いく぀かはそれほど簡単ではありたせん。そしおここでは、前の䟋のように、スクレヌパヌがヘッドレスの突き出た「尟」を隠すタスクにどれだけ现心の泚意を払っおアプロヌチしたかに倧きく䟝存したす。オヌケストレヌタヌがデフォルトで眮き換えるオブゞェクトのプロパティがブラりザヌにあり、ヘッドレスに蚭定されおいるプロパティnavigator.webdriverがありたすが、同時に通垞のブラりザヌには存圚したせん。非衚瀺にするこずができ、特定のメ゜ッドをチェックするこずで非衚瀺の詊みを怜出できたす。これらのチェックをチェックするものを非衚瀺にしお、メ゜ッドを印刷する関数に停の出力をスリップさせるこずもできたす。そしおそれは無期限に続くこずができたす。



チェックの別のブロックは、原則ずしお、ヘッドレスブラりザには定矩䞊ないりィンドりず画面のパラメヌタの調査を担圓したす。座暙のチェック、サむズのチェック、描画されおいない壊れた画像のサむズはどれくらいですか。ブラりザのデバむスをよく知っおいる人が、それぞれに぀いおもっずもらしいしかし実際ではない結論を予芋し、滑らせるこずができるニュアンスがたくさんありたす。それは、指王チェックでサヌバヌに飛び、それを分析したす。たずえば、WebGLずCanvasを䜿甚しお2Dず3Dの䞀郚の画像をレンダリングする堎合、出力党䜓を完党に準備し、停造し、メ゜ッドで発行しお、䜕かが実際に描かれおいるず誰かに信じ蟌たせるこずができたす。



同時に発生しない、よりトリッキヌなチェックがありたすが、JSコヌドがペヌゞ䞊で特定の秒数の間スピンするか、垞にハングしおブラりザからサヌバヌに情報を転送するずしたす。たずえば、カヌ゜ルの動きの䜍眮ず速床を远跡する-ボットが必芁な堎所だけをクリックし、光の速床でリンクをたどる堎合、ボットの䜜成者が人間のような滑らかなものを曞くこずを考えおいない堎合、これはカヌ゜ルの動きによっお远跡できたす、オフセット。



そしお、かなりのゞャングルがありたす。これらは、オブゞェクトモデルのバヌゞョン固有のパラメヌタずプロパティであり、ブラりザごず、バヌゞョンごずに固有です。たた、これらのチェックが正しく機胜し、改ざんされないようにするには、たずえば、䞀郚の叀いブラりザを䜿甚しおいるラむブナヌザヌで、さたざたなこずを考慮する必芁がありたす。たず、新しいバヌゞョンのリリヌスに遅れずに぀いおいく必芁がありたす。チェックを倉曎しお、フロントの状況を考慮に入れる必芁がありたす。誰かが非定型のブラりザでそのようなチェックによっお保護されたサむトにアクセスするず同時に、ボットのように捕たえられないようにするために、埌方互換性を維持する必芁がありたす。



これは骚の折れる、かなり耇雑な䜜業です。このようなこずは通垞、ボット怜出をサヌビスずしお提䟛する䌁業によっお行われ、独自のリ゜ヌスでこれを行うこずは、時間ずお金のあたり有益な投資ではありたせん。



しかし、私たちに䜕ができるのでしょうか。どんなに䞀生懞呜努力しおも、そのようなヘッドレスチェックの雲にぶら䞋がっお、パペティアでヘッドレスクロヌムを蚈算する必芁がありたす。



小さな叙情的な逞脱-チェックの歎史ず進化に぀いおより詳现に読むこずに興味がある人のために、たずえば、Chromeのヘッドレスのために、2人の著者の間に面癜い゚ピ゜ヌドの決闘がありたす。 1人の著者に぀いおはよくわかりたせんが、もう1人はAntoine Vastelず呌ばれ、ボットずその怜出、チェックの難読化、その他倚くの興味深いこずに぀いおブログを管理しおいるフランスの若者です。そのため、圌らずそのカりンタヌパヌトは、ヘッドレスChromeを怜出できるかどうかに぀いお2幎間議論しおきたした。



そしお、ヘッドレスでチェックを通過できない堎合の察凊方法を理解したす。







これは、ヘッドレスを䜿甚せず、りィンドりやあらゆる皮類の芖芚芁玠を描画する倧型の実際のブラりザヌを䜿甚するこずを意味したす。 PuppeteerやPlaywrightなどのツヌルを䜿甚するず、ヘッドレスの代わりに、レンダリングされた画面でブラりザを起動したり、そこからナヌザヌ入力を読み取ったり、スクリヌンショットを撮ったり、ビゞュアルコンポヌネントのないブラりザでは利甚できない倚くのこずを実行できたす。







ヘッドレスチェックをバむパスするこずに加えお、この堎合、次の問題にも察凊できたす-狡猟なサむトビルダヌがいる堎合、写真のテキストから非衚瀺にし、远加のクリックやその他のアクションや動きを行わずに非衚瀺にしたす。圌らは隠されるべきであり、頭のないものに出くわすいく぀かの芁玠を隠したす圌らはこの芁玠が今画面に衚瀺されるべきではないこずを知りたせん、そしお圌らはそれに出くわしたす。この画像をブラりザで描画し、スクリヌンショットをOCRにフィヌドし、出力でテキストを取埗しお䜿甚するだけです。はい、それは開発の点でより難しく、より高䟡であり、より長くかかり、より倚くのリ゜ヌスを消費したす。しかし、このように機胜するスクレヌパヌがあり、速床ずパフォヌマンスを犠牲にしお、この方法でデヌタを収集したす。







「CAPTCHAはどうですか」 - あなたが尋ねる。結局のずころ、OCR高床なキャプチャは、いく぀かのより耇雑なものなしでは解決できたせん。これには簡単な答えがありたす-キャプチャを自動的に解決できない堎合は、人的劎力を䜿甚しおみたせんか目暙を達成するためにそれらの䜜業を組み合わせるこずができるのに、なぜボットず人間を分離するのですか



画面の前に座っおいる人の手によっお解決されるキャプチャを送信できるサヌビスがありたす。APIを介しお、キャプチャぞの応答を取埗し、たずえば発行されるリク゚ストにCookieを挿入しお、このサむトからの情報を自動的に凊理するこずができたす。 ..。キャプチャがポップアップするたびに、私たちはアピシュカを匕っ匵っお、キャプチャぞの答えを埗たす-次の質問でそれを滑らせお、次に進みたす。



これにもかなりの費甚がかかるこずは明らかです-captcha゜リュヌションはたずめお賌入されたす。しかし、私たちのデヌタがこれらすべおのトリックのコストよりも高䟡な堎合、結局のずころ、なぜですか



これらすべおのツヌルの耇雑さぞの進化を芋おきたので、オンラむンリ゜ヌスオンラむンストア、公開ナレッゞベヌスなどでスクレむピングが発生した堎合の察凊方法に぀いお考えおみたしょう。







最初に行うこずは、スクレヌパヌを芋぀けるこずです。これをお䌝えしたす。レポヌトの冒頭ですでに怜蚎したように、䞀般に、集䌚のすべおのケヌスが悪圱響をもたらすわけではありたせん。原則ずしお、より原始的な方法、レヌト制限なし、リク゚スト速床を制限しない同じスクリプトは、1぀のリク゚ストで耇雑で掗緎された頭の良いブラりザスクレむピングよりもはるかに倚くの害を及がす可胜性がありたす保護によっお防止されない堎合時間内に、それは最初はただログで䜕ずか芋぀ける必芁がありたす。







したがっお、最初に、私たちが削られおいるこずを理解する必芁がありたす-この掻動によっお通垞圱響を受ける意味を調べるために。珟圚、技術パラメヌタずビゞネス指暙に぀いお話し合っおいたす。これらは、負荷ずトラフィック、あらゆる皮類のバヌストず異垞を監芖しながら、Grafanaで確認できるものです。これは、セキュリティツヌルを䜿甚しない堎合は手動で実行できたすが、トラフィックをフィルタリングし、あらゆる皮類のむンシデントを怜出し、それらをいく぀かのむベントず照合する方法を知っおいる人がより確実に実行できたす。事埌にログを分析するこずに加えお、個々の芁求を分析するこずに加えお、知識ベヌスの保護のいく぀かの蓄積された手段の䜿甚がここで機胜する可胜性があるため、このリ゜ヌスたたは同様のリ゜ヌスでのスクレヌパヌのアクションをすでに芋おおり、どういうわけか互いに比范するこずができたす-スピヌチ盞関分析に぀いお。



ビゞネス指暙に぀いおは、盎接的たたは間接的な経枈的損害を匕き起こすスクリプトの䟋を䜿甚したこずをすでに思い出したした。これらのパラメヌタのダむナミクスをすばやく远跡できる堎合は、再びスクレむピングに気付くこずができたす。この問題を自分で解決する堎合は、バック゚ンドのログぞようこそ。







攻撃的な擊り傷に察しお䜿甚される保護手段に぀いおは、ボットのさたざたなカテゎリに぀いお説明し、すでにほずんどの方法を怜蚎したした。トラフィック分析は、最も単玔なケヌスから私たちを助け、行動分析は、ファゞヌID眮換やマルチむンスタンススクリプトなどを远跡するのに圹立ちたす。より耇雑なものに察しお、私たちはデゞタルプリントを収集したす。そしおもちろん、私たちは王の最埌の議論ずしおCAPTCHAを持っおいたす-前の質問で狡猟なボットをどうにかしお捕たえるこずができなかったなら、おそらく、それはCAPTCHAで぀たずくでしょう







さお、ここではもう少し耇雑です。事実、チェックの耇雑さず狡猟さが増すに぀れお、䞻にクラむアント偎にずっお、チェックはたすたす高䟡になりたす。トラフィック分析ずその埌のパラメヌタずいく぀かの履歎倀ずの比范が、原則ずしおペヌゞの読み蟌み時間ずオンラむンリ゜ヌスの速床に圱響を䞎えるこずなく、完党に非䟵襲的に実行できる堎合、フィンガヌプリントは、それが十分に倧きく、ブラりザ偎で䜕癟もの異なるチェックを行う堎合、ダりンロヌド速床に深刻な圱響を及がしたす。そしお、リンクをたどる過皋でチェック付きのペヌゞを芋るのを奜む人はほずんどいたせん。



CAPTCHAに関しお蚀えば、これは最も粗雑で最も䟵襲的な方法です。これは、ナヌザヌや賌入者をリ゜ヌスから本圓に怖がらせるこずができるものです。誰もcaptchaが奜きではありたせん、そしお圌らは良い人生のためにそれに頌りたせん-圌らは他のすべおのオプションがうたくいかなかったずきにそれに頌りたす。ここにもう1぀の面癜いパラドックスがありたす。これらのメ゜ッドのそのようなアプリケヌションには、いく぀かの問題がありたす。事実、1぀たたは別の重ね合わせでの保護手段のほずんどは、遭遇したボットアクティビティのシナリオの耇雑さに応じお、これらすべおの可胜性を䜿甚したす。ナヌザヌがトラフィックアナラむザヌに合栌した堎合、ナヌザヌの動䜜ず倉わらない堎合、指王が有効なブラりザヌのように芋える堎合、ナヌザヌはこれらすべおのチェックを克服し、最埌にキャプチャを衚瀺したす-そしおそれは人であるこずが刀明したした...それは非垞に悲しいこずがありたす..。その結果、私たちが遮断したい邪悪なボットではなく、かなり深刻なナヌザヌのシェアにキャプチャが衚瀺され始めたす-これに腹を立おお次回は来ないかもしれない、リ゜ヌスで䜕かを賌入しない、そのさらなる開発に参加しない人々。







これらすべおの芁因を考慮しお、スクレヌピングが発生した堎合、最終的に䜕をすべきかを怜蚎し、それがビゞネスおよび技術的パフォヌマンスに䞎える圱響を䜕らかの圢で評䟡するこずができたしたか䞀方では、公開デヌタ、マシン、たたは人の収集のように、定矩䞊、スクレむピングず戊うこずは意味がありたせん。このデヌタは、むンタヌネットからアクセスするすべおのナヌザヌが利甚できるこずに同意したした。そしお、「原則倖」のスクレむピングを制限する問題を解決したす-぀たり、高床で才胜のあるボットがあなたに来るずいう事実のために、あなたはそれらすべおを犁止しようずしたす-それはあなた自身の保護に倚くのリ゜ヌスを費やすか、高䟡で非垞に耇雑な゜リュヌションを䜿甚するこずを意味したす、「最倧セキュリティモヌド」でセルフホストたたはクラりドベヌスであり、個々のボットを远跡する堎合、そのようなもので有効なナヌザヌのシェアを怖がらせるリスクがありたす。重いjavascriptチェックのように、3぀おきの遷移でポップアップするcaptchaのように。これらすべおがあなたのサむトを認識を超えおあなたの蚪問者の䞍利益に倉える可胜性がありたす。



保護ツヌルを䜿甚する堎合は、倉曎できるツヌルを探し、リ゜ヌスの䜿甚を遮断しようずするスクレヌパヌの割合単玔なものから耇雑なものたでず、実際にはWebの速床ずのバランスを芋぀ける必芁がありたす。 -資源。なぜなら、すでに芋おきたように、いく぀かのチェックは簡単か぀迅速に行われる䞀方で、いく぀かのチェックは困難で時間がかかるだけでなく、同時に蚪問者自身にずっお非垞に目立ちたす。したがっお、共通のプラットフォヌム内でこれらの察策を適甚および倉曎できる゜リュヌションを䜿甚するず、このバランスをより迅速か぀適切に達成できたす。



さお、これらすべおの問題を自分自身たたは他の人の䟋で研究する際に、いわゆる「正しい考え方」を䜿甚するこずも非垞に重芁です。公開デヌタ自䜓は保護を必芁ずしないこずを芚えおおく必芁がありたす-それは遅かれ早かれそれを望むすべおの人々に芋られるでしょう。ナヌザヌ゚クスペリ゚ンスを保護する必芁がありたす。スクレヌパヌずは異なり、収益を生み出す顧客、顧客、ナヌザヌのUXです。この非垞に興味深い分野に粟通しおいる堎合は、それを維持しお増やすこずができたす。



ご枅聎ありがずうございたした










All Articles