【发布时间】:2017-08-31 10:59:09
【问题描述】:
我目前正在使用 Perl 开发一个脚本,以恢复 Facebook 当前存储在我的浏览器中的特定 cookie。 cookie 名称是 Datr,我尝试了多个 Perl 模块,例如 HTTP::Cookies、CGI::Cookie 等,但均未成功。
我想做的很简单,我需要通过 Perl 来完成:将 Datr 值(动态变化)存储到我的 Perl 脚本中的一个新变量中。
我决定设置一个测试 cookie 并尝试读取它的值,但脚本既没有返回任何内容,也没有浏览器 (Mozilla) 似乎存储了我的 cookie。 这是我使用的代码:
#!bin/perl
use CGI;
$query = new CGI;
##setting a new cookie into the browser
$cookie = $query->cookie(-name=>'MY_COOKIE',
-value=>'HelloWorld',
-domain=>'facebook.com',
-expires=>'+4h');
##retrieving cookie value
$theCookie = $query->cookie('MY_COOKIE');
请帮帮我,因为我快疯了! 谢谢
首先感谢大家的及时回复。
致戴夫:感谢您对此的非常好的回答。是的,我知道 Firefox 可以通过 GUI 读取 Datr 值,但实际上我需要使用 Perl 代码读取它,因为我的原始脚本具有特定的 SSL 请求,它实际上需要 Datr 值。 Facebook 已经在 Datr ''understanding'' (http://www.adweek.com/digital/datr-cookie-belgium/) 上得到了回答,这似乎是一个有趣的副话题。回到我最初的请求,我很确定 Firefox 将所有 cookie 值本地存储在某种名为 cookie.sqlite 的 .sqlite db 中,我可以到达那里!如果尝试“手动”读取它,我可以看到 Datr 字符串,但这不会解决任何问题,因为我不想每次执行任何类型的 SSL 请求时都更新我的 PL 脚本脸书!!这就是重点。
我最初的问题可以重新表述如下:有什么方法可以查询 Firefox 创建的 .sqlite cookie 数据库,以便检索 Datr cookie 并将其存储在 Perl 变量中?请记住,我不想在我的 PL 脚本中设置绝对的“文件路径”,因为它应该在 Linux 或任何其他操作系统(Windows、OSx ..)中执行。
感谢您对此主题的任何进一步回复。
【问题讨论】:
-
没办法,除非你在 facebook 域上运行你的脚本,或者在 firefox 所在的同一台机器上使用其他脚本。
-
浏览器并不傻。他们只接受和返回您的域的 cookie。