【问题标题】:I have generated cookies file for Chrome Extension I need to load it in HashMap<String,String> in Java我已经为 Chrome 扩展生成了 cookie 文件,我需要在 Java 的 HashMap<String,String> 中加载它
【发布时间】:2022-01-09 01:13:33
【问题描述】:

我有 cookie 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

【问题讨论】:

    标签: java cookies hashmap jsoup


    【解决方案1】:

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

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

    上面的代码去掉了以# 开头的行和空行。接下来,过滤结果以仅选择第 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]);
        });
    }
    

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


    参考文献

    【讨论】:

    • 谢谢你的回答我看到 jsoup cookie 的格式不同,我认为我在文件中有但明天测试可能会工作
    猜你喜欢
    • 2014-05-27
    • 2021-11-13
    • 2012-06-30
    • 1970-01-01
    • 1970-01-01
    • 2017-12-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多