仮想キーボード(vKeyboard)の回避を支援するPythonライブラリ
(github.com/soulee-dev)金融機関や政府系Webサイトなどでセキュリティプログラムとして広く使われている仮想キーボード(vKeyboard)は、クローリング作業を難しくする主な要因の1つです。これに対応するため、仮想キーボードを回避する方法を提供するPythonライブラリを紹介します。
仮想キーボードの回避は、事前にキャプチャした画像との類似度を分析する方式で行われます。そのため、まず vKeypad-Studio を使って仮想キーボードの画像とデータを準備します。
vKeypad-Studio の使い方
- 仮想キーボード画像を準備します。
- Figmaで仮想キーボード画像をアップロードします。
- Figmaで長方形ツールを使い、仮想キーボードの各キーを覆います。
- Figmaで作業した内容をSVGファイルとして書き出します。
- ターミナルで
vkeypad-studio [画像ファイル] [SVGファイル]コマンドを入力します。 - 新しく開いたウィンドウで、画像に対応するキーボードキーを押します。
- 生成された
assetsフォルダの画像ファイルとdata.jsonファイルを別途保管しておきます。
これで、準備したデータを使って仮想キーボードの回避を実行できるPythonライブラリを利用できます。これにより、政府系サイトや金融サイトの仮想キーボードを回避し、クローリング作業をより円滑に進めることができます。
5件のコメント
キー配列がずっと変わるケースには適用できないのでしょうか?
基本的に、キー配列が継続的に変わるケースを想定して作成しました。
あらかじめ
vkeypad-studioを使って画像を生成しておけば、その画像との類似度分析によって、キー配列が変わっても認識できます。ああ、なるほど……READMEと動画だけでは動作方式を理解するのが難しかったです。必ずしもFigmaである必要はなさそうなのに、明確にFigmaを指していたので少し混乱もしました。とにかく、あとで使ってみます。ありがとうございます。
補足すると、基本的には画像類似度解析によって、どの位置にどのキーがあるかを認識します。
画像類似度解析のためには各キーごとの画像が必要で、その自動化のために作ったツールが vkeypad-studio です。
Figma でキーボード画像の上に長方形を重ねると、svg にレイヤーが積み重なります。これらのレイヤーの座標を抽出して画像を crop し、座標と keycode を記録します。
そして、このように保存しておいた画像と座標を使ってキーを解析できるというわけです。
実は Figma を使うようにしたのは、単にユーザーの利便性のためでした。多くの仮想キーボードは固定幅ですし、Figma が提供する auto-align が非常に優れているので、このようなフローでも問題ないだろうと考えていましたが、かえって難しく感じられることもありそうですね。
READMEで十分に説明できていなかったのは私の不手際です……。ご指摘いただいたご意見をもとに、READMEをより明確にご覧いただけるよう修正してみます。