我已经为 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]);
});
}
我们只是从每一行中获取 key 和 value 来填充我们的 cookies
映射;但是,我认为代码可以更短,但会牺牲可读性。
参考资料
- How to grep lines which does not begin with "#" or ";"?
- cut column 2 from text file
- How can I read a large text file line by line using 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]);
});
}
我们只是从每一行中获取 key 和 value 来填充我们的 cookies
映射;但是,我认为代码可以更短,但会牺牲可读性。
参考资料
- How to grep lines which does not begin with "#" or ";"?
- cut column 2 from text file
- How can I read a large text file line by line using Java?