web-dev-qa-db-ja.com

コマンドラインですべての訪問済みURLをキャプチャする方法

ブラウザでアクセスするすべてのURLをコマンドラインでライブキャプチャし、それらを別のプログラムにパイピングするのが好きです。どうすればこれを行うことができますか?

形式は、1行につき1つのURLのみで、他には何も、タブ、スペースなどがありません。

これは私がこれまでに得たものです。タブの削除が機能していません。 誰かに返信するコメントを見たことがあります (一番下に)エスケープする必要があるというgrepへのパイピングに問題がなかった人。私はこれを本当に理解していません。

Sudo httpry -F -i eth0 -f Host,request-uri | tr -d 't'

また、これが機能する場合でも、httpsでは正しく機能しませんか? httpsを含むこれを行う別の方法はありますか?存在する場合は、FirefoxとChromiumのブラウザプラグインを使用します。訪問したすべてのURLをスクリプトに送信したいだけです。

ブラウザの履歴をライブで解析してパイプすることができますか?

3
redanimalwar

ネットワークトラフィックのキャプチャは可能ですが、面倒です。 HTMLを介して通信する多くのアプリケーションが私のコンピューターで実行されており、それらは自動化されたAPI処理でfillログアップし、訪問した内容を反映しませんI

そして、あなたが正しく言うように、それはあなたにHTTPSを表示しません。 URLは、リクエストの暗号化された部分です。

ブラウザを直接ターゲットにします。これらはSQLite3データベースに十分な履歴を保持するため、sqlite3パッケージをインストールすると、クエリが非常に簡単になります(Sudo apt-get install sqlite3)。以下を実行するだけです:

sqlite3 ~/.mozilla/firefox/*.default/places.sqlite "select url from moz_places order by last_visit_date desc limit 10;"

そして、最後にアクセスした10個のURLが出力されます。

Chromeにも同様の設定があり、同様に簡単に照会できます。

sqlite3 ~/.config/google-chrome/Default/History "select url from urls order by last_visit_time desc limit 10;"

これは機能しますが、Chromeでデータベースロックの問題がいくつかありました。 Firefoxの方がはるかに信頼できるようです。私が見つけたデータベースロックを回避する唯一の方法は、データベースのコピーを作成することでした。これは、メインDBがロックされている場合でも機能し、問題を引き起こすことはありません。

cp ~/.config/google-chrome/Default/History history.tmp
sqlite3 history.tmp "select url from urls order by last_visit_time desc limit 10;"
rm history.tmp

このアプローチは、Firefoxにもお勧めです。 FFはロックしていないように見えます(または、より短いロックを取得します)が、書き込み中にキャッチした場合に何が起こるかわかりません。


これをliveディスプレイに変換するには、ポーリングする必要があるもの(SQLクエリが関係していないので問題ないかもしれません)またはinotifywaitのようなものを使用して変更用のデータベースファイル。

4
Oli