如何用代码自动获取网站的cookie?

我的需求是,用java如何获取任意一个网站的cookie,场景:比如某个用户登录了今日头条网站,这个时候我需要拿到这个用户的cookie,当然可以让用户手动f12获取,也可以让用户安装浏览器插件获取,但这不是麻烦么,我想的是,开发一个客户端小工具,exe那种的,然后用户打开,就能获取到对应网站的cookie,我觉得一定得是exe这种客户端,服务端的话肯定是获取不到的,为什么我说exe可以获取到呢?是因为我见到过这种软件,具体记不太清了,也忘叫什么名字了,反正就是用户点开这个小工具就获取到百度的cookie了(不确定是否在获取之前做了什么操作,比如扫码登录之类的),以我个人对cookie的理解,感觉是不可能实现的,因为毕竟是一个exe软件,而不是类似油猴插件那种的js脚本,看网上有人说用httpclient 或者 selenium啥的,我觉得都解决不了这个问题,因为你不管是啥,都是一个新的连接或者浏览器窗口,你是没有办法获取到已经在浏览器登录的用户信息的。

很迷惑,特地发帖请教一下。不知道描述的是否清楚。

至于为啥说用java呢,因为我个人是学java的,假如能实现,我肯定用java来写,当然语言不是最重要的,c# 易语言 py其实都能写。

百度我已经翻烂了,根本没有我想要的答案,或许是我的关键词不对,或许是这个问题太奇葩根本实现不了,有可能是我记错了,那个软件在获取cookie之前让用户登录了所以才拿到了。总之吧。不管什么原因,还是希望一起讨论下。谢谢大家了。


回答:

这个问题的思路很简单:

不打开浏览器,获取 Cookie。那么浏览器肯定把 Cookie 存在某个文件里,我们要做的就是找到这个文件,然后解析它。


对于 Chrome 来说,可以查到这个文件是 <Google Chrome 数据目录>/Default/Cookies

对于 Windows 来说,也就是 %LocalAppData%\Google\Chrome\User Data\Default\cookies。(我手头没有 Windows 环境,没验证过,应该没有问题。我的文件在 /home/.config/google-chrome-unstable/Default/Cookies

那么第一步就搞定了。


接下来解析这个文件。直接用文本编辑器打开它,发现 SQLite format 3 开头,那么它是个 sqlite3 数据库。

我不太会用 sqlite,稍微尝试一下

sqlite> .open Cookies

sqlite> .tables

cookies meta

sqlite> .schema cookies

CREATE TABLE cookies(creation_utc INTEGER NOT NULL,host_key TEXT NOT NULL,top_frame_site_key TEXT NOT NULL,name TEXT NOT NULL,value TEXT NOT NULL,encrypted_value BLOB NOT NULL,path TEXT NOT NULL,expires_utc INTEGER NOT NULL,is_secure INTEGER NOT NULL,is_httponly INTEGER NOT NULL,last_access_utc INTEGER NOT NULL,has_expires INTEGER NOT NULL,is_persistent INTEGER NOT NULL,priority INTEGER NOT NULL,samesite INTEGER NOT NULL,source_scheme INTEGER NOT NULL,source_port INTEGER NOT NULL,is_same_party INTEGER NOT NULL,last_update_utc INTEGER NOT NULL);

CREATE UNIQUE INDEX cookies_unique_index ON cookies(host_key, top_frame_site_key, name, path);

sqlite>

可以看到你需要的数据都在 cookies 这个表里,怎么处理就是你自己的事情了。


又看了一眼,都是编码过的,没有明文 cookie 值。

Google 一下,有挺多资料的,比如 https://stackoverflow.com/que...

以上是 如何用代码自动获取网站的cookie? 的全部内容, 来源链接: utcz.com/p/944630.html

回到顶部