做了个分析名字含义的小网站,希望各位给点建议 |
我的需求是,用java如何获取任意一个网站的cookie,场景:比如某个用户登录了今日头条网站,这个时候我需要拿到这个用户的cookie,当然可以让用户手动f12获取,也可以让用户安装浏览器插件获取,但这不是麻烦么,我想的是,开发一个客户端小工具,exe那种的,然后用户打开,就能获取到对应网站的cookie,我觉得一定得是exe这种客户端,服务端的话肯定是获取不到的,为什么我说exe可以获取到呢?是因为我见到过这种软件,具体记不太清了,也忘叫什么名字了,反正就是用户点开这个小工具就获取到百度的cookie了(不确定是否在获取之前做了什么操作,比如扫码登录之类的),以我个人对cookie的理解,感觉是不可能实现的,因为毕竟是一个exe软件,而不是类似油猴插件那种的js脚本,看网上有人说用httpclient 或者 selenium啥的,我觉得都解决不了这个问题,因为你不管是啥,都是一个新的连接或者浏览器窗口,你是没有办法获取到已经在浏览器登录的用户信息的。
很迷惑,特地发帖请教一下。不知道描述的是否清楚。
至于为啥说用java呢,因为我个人是学java的,假如能实现,我肯定用java来写,当然语言不是最重要的,c# 易语言 py其实都能写。
百度我已经翻烂了,根本没有我想要的答案,或许是我的关键词不对,或许是这个问题太奇葩根本实现不了,有可能是我记错了,那个软件在获取cookie之前让用户登录了所以才拿到了。总之吧。不管什么原因,还是希望一起讨论下。谢谢大家了。
为什么翻烂百度却没有呢
因为这是违法的,所有的正规浏览器都不允许跨域
拿到cookie就意味着你拿到了这个用户的登录授权,所有的手机号验证 2步验证全部失效,你说这多可怕
如果你是对某个网站的定向功能,在取得用户的同意下,可以去模拟用户的登录过程,比如过早客的登录接口为
https://www.guozaoke.com/login
在用户点击登录按钮后,get https://www.guozaoke.com/login ,获得_xsrf,然后让用户自己输入过早客的用户名密码,再post到这个接口,此时接口会返回给你cookie,这个就是用户的唯一识别码了,此时你就是这个用户了,这个功能不管是客户端还是服务端 都是要用户授权 自己输入密码的
@lcy630409 谢谢回复,你说的不错,基本上是实现不了的,要不然也太不安全了。
百度了下,感觉没那么复杂,3个方案:
1-直接读取chrome的cookie数据文件,这个文件是sqlite文件,保存在%localappdata%\Google\Chrome\User Data\Default\Cookies,当然,里面数据是加密的,需要调用windows dpapi 来解密(前提是需要知道当前用户的登录密码)
早前chrome都是明文存储的,现在是加密的
读取的话,用java jni或者c# 比较方便,参考博文:https://blog.csdn.net/hongduilanjun/article/details/123352414
2-楼上说的使用qt或者c#的内嵌浏览器(electron也可以),应该能hook一些用户行为,这个方案不一定能实现,但是技术实现简单
3-最后就是直接用 chromium或者cef3 自己做个浏览器,把什么跨域等限制都去掉,然后写个chrome插件去获取或者保存sqlite的时候不加密,然后让用户使用你的伪浏览器
以上是纯技术讨论,楼主任何行为和我无关
过早客微信公众号:guozaoke • 过早客新浪微博:@过早客 • 广告投放合作微信:fullygroup50 鄂ICP备2021016276号-2 • 鄂公网安备42018502001446号