2

特定のWebサイトを使用できるプログラムを作成したいと思います。かなり些細なこと(テキスト)を認識し、リンクをクリックし、フォームを提出できるようにしたい。C++によるWebブラウザの制御

サーバーのログを実際のユーザーのアクティビティと変わらないようにしたいので、通常通りブラウザの外では操作したくありません。私はjavascriptのようなものをページ上で期待どおりに動かすことができるようにしたいので、送信されているuser-agentを偽装したくはありません。

これを達成するにはどうすればよいですか?それはWindowsで動作します。私が1つのブラウザを選ぶ必要があった場合は、Firefoxが第2の選択肢としてChromeになります。それほど複雑ではない場合は、Chrome、Firefox、IE、Edgeで動作させることができますが、1を選択するだけでもOKです。

私はC++をよく知っていて、このプロジェクトに使用したいと考えています。 (はい、よく知っている人のために他の言語の方が速い開発をしているかもしれませんが、それは私が守りたいものです)。

データベース外でブラウザとやりとりすることができるようにする必要があります。私は、これを処理するためにプロセス間通信が可能なブラウザアドオンを持っているか、またはブラウザを効果的に掻き集めてユーザが見ている入力を作成できる完全に外部のプログラムを持っているかのいずれかです。

答えて

1

Seleniumこれはあなたに適しているようです。これは一般的にWebアプリケーションの自動テストに使用されますが、どのサイトとも対話できない理由はありません。これは、主要なブラウザ(Edgeについてはわかりませんが、私がSeleniumを使用してからしばらく時間がかかりました)を完全に自動化された方法で駆動するために使用できます。

セレンにはC++バインディングはありませんが、使用できるJava、C#、Python、Ruby、PHP、Perl、およびJavascriptバインディングはありません。

0

マイクロソフトでは、ウィンドウを使用しているため、マウスのクリック、位置、キーボードのシミュレーションにapiを使用しています。

VOID WINAPI keybd_event(
    _In_ BYTE  bVk, 
    _In_ BYTE  bScan, 
    _In_ DWORD  dwFlags, 
    _In_ ULONG_PTR dwExtraInfo 
); 

VOID WINAPI mouse_event(
_In_ DWORD  dwFlags, 
_In_ DWORD  dx, 
_In_ DWORD  dy, 
_In_ DWORD  dwData, 
_In_ ULONG_PTR dwExtraInfo 
); 

とキーボードのUser32.dllからとWINUSER.H両方これらは時代遅れであるが、本質的に同じように機能するが、セキュリティレベルのメカニズムを実装置換を有します。

+0

あまり知られていない意見、それは痛い。これらのAPI呼び出しの置き換えは[SendInput](https://msdn.microsoft.com/en-us/library/windows/desktop/ms646310.aspx)です。信頼性に関しては 'mouse_event' /' keybd_event'と異なり、セキュリティは異なりません。さらに悪いことに、依然として、誤ったユーザー入力は、間違ったアプローチです。 [UIオートメーション](https://msdn.microsoft.com/en-us/library/windows/desktop/ee684009.aspx)は、UIを自動化する正しい方法です。 Internet Explorerを扱っている場合を除きます。 IEは独自の[自動化インターフェイス](https://msdn.microsoft.com/en-us/library/hh995096.aspx)を提供しています。 – IInspectable

+0

面白い、意見を指摘してください。マウスイベントとキーボードイベントは意見ではありませんが、ask-erによって尋ねられたように、本物のユーザー入力を送信するMicrosoftのAPIがあります。 msdnのドキュメントでこれまでに読んだことのない信頼性向上に関するドキュメントを提供してください。これらのAPIは、サーバーと区別できない本物のユーザー入力を提供します。この機能はUIPIの対象です。アプリケーションは、完全性レベルと同等以下のアプリケーションにのみ入力を投入することが許可されています。私は時代遅れのAPIに関するこのような記述は見つけられません。 –

+0

[信頼性の向上](https://msdn.microsoft.com/en-us/library/windows/desktop/ms646310.aspx):*これらのイベントは、ユーザーが挿入した他のキーボード入力イベントやマウス入力イベントには散在しません(キーボードまたはマウスを使用して)、またはkeybd_event、mouse_event、またはSendInputへの他の呼び出しによって呼び出されます。入力が 'keybd_event'が書き込むのと同じバッファに入り、' keybd_event'で合成された入力はUIPIの対象となります。合成入力は、例えば、低レベルのマウス/キーボードフックを使って本物の入力と区別できます。 – IInspectable

関連する問題