我想让我在浏览器中访问的所有URL都实时捕获在命令行中,以将它们传递到另一个程序。我将如何做到这一点?
格式应该是每行一个URL,别无其他,没有制表符,没有空格等。
到目前为止,这就是我所得到的。除去选项卡不起作用。我看到一条评论回复某人(在最底层),他在将其传递给grep时没有问题,他应该逃脱它。我不太明白这一点。
sudo httpry -F -i eth0 -f host,request-uri | tr -d 't'
即使这可行,它也不能与https一起使用,对吗?有没有另一种方式可以做到这一点,包括https?我愿意将浏览器插件用于Firefox和Chrome(如果存在)。只想将所有访问的URL发送到脚本。
也许我可以实时解析浏览器的历史并通过管道传输?
捕获网络流量是可能的,但很麻烦。我的计算机上运行着许多通过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
监视数据库文件的更改之类的东西。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句