我已经为 Chrome 扩展生成了 cookies 文件我需要将它加载到 Java 中的 HashMap<String,String>

I have generated cookies file for Chrome Extension I need to load it in HashMap<String,String> in Java

我有 cookies txt 文件,其中包含 Chrome 扩展名生成的数据,如下所示:

# Netscape HTTP Cookie File
# http://curl.haxx.se/rfc/cookie_spec.html
# This is a generated file!  Do not edit.

.site.net   TRUE    /   FALSE   1701453620  _ga GA1.2.10834324067.1638446981
.site.net   TRUE    /   FALSE   1638123020  _gid    GA1.2.25433025264.1638446981
.site.net   TRUE    /   FALSE   1646432624  _fbp    fb.1.1643546988197.973328968

我需要将它加载到 hashmap 并在 Jsoup 连接中使用它

 HashMap<String,String> coockies = load.file

 Document doc = Jsoup.connect(mainUrl).cookies(cookies).get();

可以加载 txt 文件并将其转换为 hashMap

我会先预处理文本文件以获得键值列表。像这样:

grep "^[^#]" cookies.txt | awk '{print  " " }'
_ga GA1.2.10834324067.1638446981
_gid GA1.2.25433025264.1638446981
_fbp fb.1.1643546988197.973328968

上面的代码去除了以 # 开头的行和空行。接下来,结果仅过滤到 select 第 6(cookie 名称)和第 7(cookie 值)列。

如果将上述bash命令的输出保存到filtered.txt中,则可以像这样解析Java中的cookie信息:

Map<String, String> cookies = new HashMap<>();
try (Stream<String> stream = Files.lines(Paths.get("filtered.txt"))) {
    stream.forEach(line -> {
        String[] columns = line.split(" ");
        cookies.put(columns[0], columns[1]);
    });
}

我们只是从每一行中获取 keyvalue 来填充我们的 cookies 映射;但是,我认为代码可以更短,但会牺牲可读性。


参考资料