我想在命令行上实时捕获我在浏览器中访问的所有 URL,以便将它们传输到另一个程序。我该怎么做?
格式应该为每行只有一个 URL,没有其他内容,没有制表符,没有空格等。
这是我目前得到的结果。标签删除不起作用。我看到一条回复某人的评论(在最底部)没有遇到将其通过管道传输到 grep 的问题,因此他应该对其进行转义。我真的不明白这一点。
sudo httpry -F -i eth0 -f host,request-uri | tr -d 't'
此外,即使这有效,它也不会与 https 一起使用,对吗?还有其他方法可以做到这一点,包括 https?如果存在 Firefox 和 Chromium 的浏览器插件,我愿意使用它们。只想将所有访问过的 URL 发送到脚本。
也许我可以实时解析浏览器的历史记录并将其传输出去?
答案1
网络流量捕获是可能的,但很麻烦。我的电脑上运行着许多通过 HTML 进行通信的应用程序,它们会充满他们的自动 API 处理日志不会反映什么我正在参观。
正如您所说,它不会显示 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 似乎更可靠。我发现解决数据库锁定问题的唯一方法是复制数据库。即使主数据库被锁定,这种方法也能奏效,并且不会引起问题:
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 似乎不会锁定(或采用较短的锁定),但我不确定如果您在写入过程中发现它会发生什么。
将其变成居住显示,它要么是您需要轮询的东西(它不涉及 SQL 查询,所以可能没问题),要么使用类似的东西inotifywait
来监视数据库文件的更改。