1

ユーザーがどのサイトにアクセスしたかを知るために、ネットワークに接続されているPCにhttpトラフィックを記録したいと思います。このプログラムは、おそらく統計のために、労働者が余分な仕事をしてサイトに行かないことを確認するために、会社で実行されます。どのPCがどの時間にどのサイトをサーフィンしたかを知るだけでよく、他の情報は必要ありません。

私は何時間もグーグルでネットサーフィンをしましたが、私にとって有用なものは何も見つかりませんでした。私はwiresharkを試しましたが、複雑すぎてデーモンとして実行できず(私が知っているように、おそらく私は間違っています)、そのウィンドウは巨大です。

ServerSocketを80ポートにバインドしようとしましたが、成功しませんでした。データがソケットに到達していないようです。Socket(80 localhostにバインド)で同じ結果サファリ(または他のブラウザー)とポートの間に挿入できるクラスはありますか?

[私がこれをするように頼まれる前に、会社は数日間キーボードスニファを使用していました。しかし、そのようなプライバシーはゼロであり、明らかにそれは正しい解決策ではありませんでした。]

何か案が?Psプログラムは「秘密」になることはなく、労働者はそれについて知っていますが、管理者以外の人がプログラムを止められないようにする必要があります。

私が知っている言語はJavaだけなので、Javaのソリューションが推奨されます。

4

2 に答える 2

1

最後のコメントに基づいて (質問を更新する必要があります)、すべての http トラフィックをログに記録する必要があることを理解しています。

これを簡単に行うには、プライベート ネットワークとインターネットの中間にいる必要があることを理解する必要があります。おそらく、プライベート ネットワーク コンピューターに対して NAT を実行する Linux ファイアウォールが必要です。

Java 以外のソフトウェアを実行しても問題ない場合は、必要に応じてdsniffのソフトウェア urlsnarf を使用できます。実行してバックグラウンド ログに残すことができます。また、ポートまたは IP でフィルタリングすることもできます。

ほとんどのディストリビューションには、urlsnarf コマンドを含む dsniff というパッケージが既に含まれています。

基本的な開始の場合:

urlsnarf -n -i eth0 

これにより、tcp ポート 80、8080、または 3128 のすべての URL の stdout へのロギングが開始されます。後で視覚化するためにキャプチャを保存する場合 (wireshark などを使用)、-pオプションを使用できます。

あなたが私に尋ねた場合、あなたは間違った方法でやっていると思います.透過プロキシを配置し、要求されたすべてのhttp URLを記録する代わりに、「許可されていない」サイトへのアクセスを拒否する必要があります. そうしないと、人々のプライバシーを侵害することになり、国によっては違法になることさえあります。

NAT 用のサーバーをセットアップするのは難しくありません。2 つのネットワーク カードを備えた Linux PC とaifwipmasqなどのファイアウォール ソフトウェアが 1 つあれば、IP をブロックして Web サイトへのアクセスを防ぐことができます。http トラフィック パケットのデータをいじりたい場合は、透過プロキシ (リバース プロキシではない) が必要です。最も一般的なのはSquidです。

Squid を使用する場合は、SquidGuardをチェックすることをお勧めします。

コメントに残されている警告に加えて、自分でコーディングすることを主張する場合は、間違いなくjpcap ライブラリを使用する必要があります。すぐに開始するために使用できるコードが既にある例のセクションを確認してください。

幸運を!

于 2012-10-11T02:20:48.037 に答える