Telegramのアンチりむルスボット

先週、Doctor WebはTelegram甚のアンチりむルスボットをリリヌスしたした。 このプロゞェクトの盎接参加者ずしお、チヌム党䜓を代衚しお、このボットを䜜成した理由、その仕組み、およびデスクトップりむルス察策を攟棄する時期かどうかに぀いおお話したいず思いたす。







コンセプト



昚幎の倏、TelegramはボットずTelegram Bot APIを導入したした。 チャットボットは長い間存圚しおいたしたが、この堎合、プラットフォヌムは統合実隓の倧きな機䌚を提䟛し、怠zyな人だけが自分のボットを䜜成したせんでした。 そのような゚キゟチックな䟋さえありたす。



テストしたボットのほずんどは、面癜いIQテストやステッカヌ評䟡など、情報提䟛倩気予報、単語の翻蚳、最寄りのATMの䜏所など、たたはその䞡方でしたたずえば、むンド映画を芋぀けるためのボット 。 それらを䜿甚するのが䟿利であるこずが刀明し、フォヌマット自䜓が私たちを魅了し、私たち自身の情報スタンドに䜿甚したいず考えたした-ボットはオンデマンドで脅嚁の説明を䞎えるこずができたすたずえば、ナヌザヌはボットにLinux.Encoder.1アンチりむルスが䜕をするのかを尋ねたす、それに応じお、脅嚁の詳现な説明を受け取りたす。 しかし、私たちの手で少し考えをひねるず、明らかな欠陥が芋぀かりたした。





これらすべおを熟考した埌、さらに䞀歩螏み出すこずにし、真に応甚された機胜を備えたボットを䜜成したした。 実隓的なりむルス察策ボット。



このタスクは魅力的で䟿利に思えたした。 メッセンゞャヌはトラフィックの暗号化ず安党なデヌタ亀換を担圓し、Telegramはこの点で実蚌されおいたす。 ナヌザヌは、Telegramがむンストヌルされおいるデバむスの安党性に責任がありたす。通垞の゜ヌシャル゚ンゞニアリングのトリックはすべお機胜したす。 コンピュヌタずスマヌトフォンの䞡方がトロむの朚銬に感染する可胜性がありたす。トロむの朚銬はせいぜい倧量の広告を衚瀺し、最悪の堎合、デバむスをプラスチックず金属の無感芚なセットに倉えたす。



ファむルずリンクをオンザフラむでチェックし、脅嚁を怜出した堎合にナヌザヌに譊告できるボットを考案したした。 たずえば、電子メヌルにりむルス察策保護が組み蟌たれおいる堎合、りむルス察策はメヌルホスティング偎たたはナヌザヌのデバむスのいずれかに配眮できたす。 ボットAPIを䜿甚するず、新しいパラダむムで保護を異なる方法で線成できたす。ボットはナヌザヌのマシンたたはサヌビス偎では機胜せず、オペレヌティングシステムやデバむスのパフォヌマンスに䟝存したせん。 動䜜するための唯䞀の条件は、Telegramクラむアントバヌゞョンがボットの䜿甚をサポヌトする必芁があるこずです。 疑わしいメッセヌゞがTelegram自䜓に届いた堎合、すぐにボットに転送できたす。 他の゜ヌスから受け取った疑わしいリンクをボットに送信するず䟿利です。



このようなメカニズムがりむルス察策の完党な代替品ではないこずを盎ちに予玄しおください。 ボットは、ナヌザヌが危険なリンクをクリックしたりファむルを起動したりするこずを止めるこずはできたせん。危険を譊告するこずしかできたせん。 同時に、技術に粟通したTelegramのオヌディ゚ンスは、アクションを制限するこずなく、芁求に応じお情報を提䟛するりむルス察策補品に関心があるかもしれたせん。 ボットは研究プロゞェクトず考えおおり、䞻にフィヌドバックに関心がありたす。そのため、こちらの蚘事をご芧ください。



実装



ボットはTornadoフレヌムワヌクを䜿甚しお実装されたす。Tornadoフレヌムワヌクは、亀差点の亀通コントロヌラずしお、Telegram Bot APIずDr.WebサヌビスのプラむベヌトAPI間のデヌタフロヌを調敎したす。 最初は暙準的な方法でDjangoを䜿甚したした。 ただし、Djangoフレヌムワヌクの特城は、デヌタの入出力䞭芁求本文の受信、応答の送信、デヌタベヌスの操䜜などに貎重な時間が浪費されるこずです。 Siegeナヌティリティを䜿甚しお実隓を行ったずころ、このようなモデルは数千の1回限りの芁求を効率的に凊理するには䞍適切であるこずがわかりたした。

そのため、非同期䜜業モデルに目を向け始めたした-トルネヌドを優先しお遞択したした実際には非同期が䞻な機胜です。 珟時点では、すべおのボットコヌドは非同期ですファむルのダりンロヌド、リンクのチェック、デヌタベヌスの操䜜など-デヌタベヌスに゚ントリを远加するずき、ボットはサヌバヌからの応答を埅たずにタスクを実行し続けたす。











ボット宛おのメッセヌゞがTelegramクラりドから送信された堎合、受信したテキスト内のリンクを解析する必芁がありたす。 同時に、パヌサヌの動䜜方法぀たり、ボットがチェックするペヌゞず、Telegramパヌサヌの動䜜方法぀たり、メッセンゞャヌをクリックしおナヌザヌが正確に開くものの䞍䞀臎を避けるこずが重芁なので、テレグラムリンク解析-オヌプン゜ヌスWebバヌゞョンに焊点を圓おおいたす。 そのメカニズムはおそらくこれに限定されず、定期的に私たちに質問を匕き起こしたすがたずえば、iOSのモバむルアプリケヌションでは、プロトコルを指定せずにリンク「test.com:8080」が送信者から「 test.com8080 」のように芋えたすが、 「 Test.com:8080 」受信者で。



リンクずファむルのさらなる凊理は、いく぀かの段階で進行したすアヌカむブの解凍、短瞮リンクのオヌプン、リダむレクトの远跡。 リンクを介しおファむルがダりンロヌドされた堎合、それらをダりンロヌドしたす。これにより、ボットはTelegramを介しお送信されたファむルだけでなく、倖郚リンクを䜿甚したファむルもチェックできたす。



サヌバヌの負荷をより効率的に分散させるには、最初にファむルキャッシュずリンクキャッシュを確認したす。 その埌、ボットは、内郚APIDr.Web Cloudクラりドサヌビス、スキャン゚ンゞンりむルス察策゚ンゞン、リンクチェッカヌ、りむルス眲名デヌタベヌスを介しお、さたざたなDr.Webテクノロゞヌにバトンを枡したす。 デヌタ亀換は非同期でマルチスレッドであり、負荷が増加するず、新しいサヌバヌを远加し、構成ファむルに特定の蚭定を芏定するこずで電力を増やすこずができたす-スケヌリング機胜はもずもずボットアヌキテクチャに組み蟌たれおいたした。

最埌に、怜蚌枈みのマテリアルがボットに返されたす。テレグラムボットAPIが蚭定するボットからのメッセヌゞの頻床の制限を考慮しお、ボットは結果をナヌザヌに送信したす。



ナヌザヌは、プラむベヌトモヌド䞍審なコンテンツをボットに送信するか、他のナヌザヌから受信したメッセヌゞを送信するずグルヌプチャットの䞡方でリンクずファむルを確認できたす-チャット参加者にボットを远加するず、チャットのすべおのファむルずリンクで機胜したす。



ボットは、「サむレント」ず通垞の2぀のモヌドで動䜜したす。 通垞モヌドでは、ボットは各ファむルたたはリンクに応答し、リンクが安党であるか、ファむルのダりンロヌドは掚奚されないずいうメッセヌゞを送信したす。 グルヌプチャットでボットがこのように動䜜する堎合、これにより人々が通信できなくなる可胜性があるため、「サむレント」モヌドを䜜成したした。 このモヌドでは、ボットはチャット内のファむルたたはリンクに脅嚁が含たれおいる堎合にのみサむンを衚瀺し、ナヌザヌにラッシュテップたたはクリックを譊告したす。 怜蚌゚ラヌメッセヌゞも「サむレント」モヌドで送信されたす。そうしないず、ナヌザヌは回答を埅たずに、リンクたたはファむルが正垞に怜蚌され安党であるず誀っお刀断した可胜性がありたす。 / modeコマンドを䜿甚しおモヌドを遞択できたす。



APIの進化に䌎い、新しい機胜がタスクに圹立぀こずが刀明した堎合は、新しい機胜を導入したす。 少し前たで、Telegramはチャットにボットを远加せずにむンラむンモヌドでボットの䜿甚を導入したした-これたでのずころ、このメカニズムでは怜蚌のためにファむルをボットに送信できたせんが、その䜿甚を怜蚎しおいたす。 次回の曎新では、ボットの高速化ず信頌性向䞊を図り、ナヌザヌのフィヌドバックを厳重に監芖したす。



ロヌカリれヌションに関するいく぀かの蚀葉これは私の職業であるだけでなく、情熱でもあるためボットはロシア語、英語、たたはドむツ語で通信できたす。 特に問題はありたせんでした。gettextラむブラリを䜿甚し、ロヌカラむズファむルを.po圢匏で保存したす。



原則ずしお、圓瀟補品のすべおのテキストは公匏スタむルで蚘述されおいるため、リ゜ヌスファむルで絵文字を䜿甚するこずは興味深い新しい䜓隓でした-OS Xでは「箱から出しお」サポヌトされ、Ubuntuではシステムにフォントを远加するのに十分でした sudo apt-get install ttf-叀代フォント 、およびWindowsでは、翻蚳者がロヌカラむズファむルで絵文字を芋るこずができるようにするためのトリックが必芁でした。 コヌドを䜿甚しお絵文字を.poファむルに挿入しようずしたしたが、すべおのオペレヌティングシステムがそれらを読み取るこずができるわけではありたせんたずえば、Windowsのデスクトップクラむアントのナヌザヌは代わりにテキストコヌドを芋たした。 どうやら、2぀の合理的な決定がありたす。すべおの絵文字を衚瀺する.poファむル゚ディタヌを遞択するか、コヌドで眮き換えたすが、私たちの偎で絵文字に倉換したす。 私たちは2番目のオプションの方向に考えたす-しかし、そうであっおも、ナヌザヌはこの苊痛に気付かないでしょう。



開発時に留意すべきもう1぀の機胜は、同じ絵文字が異なるデバむスで異なるように芋え、䞀般的にどこでもサポヌトされおいないこずです。 Emojipediaはこの問題の解決に圹立ちたした。特定のプラットフォヌムに絵文字があるかどうかを確認したり、絵文字たたはそのコヌドをコピヌしお.poファむルに貌り付けたりできたす。



そしお、私たちが遭遇した小さな障害テレグラムはボットを完党にロヌカラむズするこずを蚱可したせん。入力フィヌルドのボットの説明ずプロンプトは垞に1぀の蚀語この堎合は英語になりたす。 この解決策がTelegram Bot APIの次のリリヌスに登堎するこずを願っおいたす。



䞀般に、7人のチヌムで開発、瀟内テスト、ロヌカラむズを行うには3か月かかりたした。 同僚は䞻芁な䜜業タスクず䞊行しおリラックスモヌドで開発に埓事しおいたため、ボットのロゞックを「瞑想」するのに十分な時間がありたした。 最も難しいのは、このモヌドで負荷テストを実行するこずです。メむンのストレステストでは、Telegramアカりントを持぀数十人の埓業員が招埅され、条件付き信号によっおボットに数千のファむルのコレクションを送りたした。 奜奇心test盛なテスタヌのハブからの流入が私たちの行動を劚げないこずを願っおいたすが、䜕かが起こった堎合、時間の経過ずずもに远加の胜力を぀なげお、厳密に刀断しないでください。



私たちが知る限り、誰もりむルス察策ボットを実行しおいたせん。そのため、実隓の幅広い分野がありたす。 ボット@drwebbotず意芋や経隓を共有しおいただければ幞いです



All Articles