以编程方式读取firefox缓存

时间:2015-08-31 09:25:50

标签: python c linux firefox

我对如何精心阅读firefox缓存,搜索主机与正则表达式模式匹配的图像URL的想法是检索〜/ .cache / mozilla / firefox / [] / cache2下的所有缓存文件内容,然后只过滤包含图像URL的行。

以下是缓存文件的示例:

  

.2.U.2。; ... V .... 57 00000380:0000 513a 6874 7470 3a2f 2f77 7777 2e74   ..Q:http://www.t 58 00000390:6563 686e 6970 6167 6573 2e63 6f6d 2f77   echnipages.com/w 59 000003a0:702d 636f 6e74 656e 742f 706c 7567 696e   p-content / plugin 60 000003b0:732f 7961 7369 702f 696d 6167 6573 2f64   s / yasip / images / d 61 000003c0:6566 6175 6c74 2f72 7373 5f33 3278 3332   efault / rss_32x32 62 000003d0:2e70 6e67 006e 6563 6b6f 3a63 6c61 7373   .png.necko:class 63 000003e0:6966 6965 6400 3100 7265 7175 6573 742d

因为这些缓存文件似乎是二进制文件,所以我会设置一个指针/任何内容到' h'只要下一个字母的十六进制值为00,就可以读取http,并在ascii表中显示为' \ 0'。

为了防止发表意见,我将这些网址写入文件,每次找到新网址时,我都会先检查该文件的所有条目,以查看该网址是否已存在。

这是最简单的方法,还是我在这里遗漏了什么?我不想使用其他应用/扩展来完成此任务。

由于

1 个答案:

答案 0 :(得分:1)

以下内容应该大致与您要实现的目标相同:

import glob, re

cache_folder = r"~/.cache/mozilla/firefox/[]/cache2\*"
urls = set()

for cache_filename in glob.glob(cache_folder):
    with open(cache_filename, 'rb') as file_cache:
        data = file_cache.read()
        urls |= set(re.findall("(http.*?)\x00", data))

for url in urls:
    print url

这将读取缓存文件夹中找到的每个文件,并获取每个文件中的所有URL列表。然后,它会将所有这些匹配的URL存储到set中,以避免重复。然后显示设置条目。

您还可以考虑研究这些文件的格式。