使用PHP获取外部网站的cookies

3
我想在PHP中将一个网站的所有cookie存储到一个数组中。脚本的目标是输入一个网站URL,让脚本检查设置了哪些cookie。
我尝试使用HTTP_Request这样的方式:
$req = new HTTP_Request($url);
$req->setMethod(HTTP_REQUEST_METHOD_GET);
$req->sendRequest();
$cookies = $req->getResponseCookies();

但是这只返回服务器端设置的cookie(例如会话ID)。我还想接收用JavaScript设置的cookie,像Google Analytics的cookie。
我知道这是可能的,因为网站http://www.cookie-checker.com/能够做到。为了确保“cookie-checker”网站真正解析了JavaScript设置的cookie而不仅仅是解析已知的JavaScript源URL,我扫描了一个测试网站,该网站编写了一个虚拟JavaScript cookie。他们成功地检测到了这个cookie(包括名称、值和过期日期)。
非常感谢您的任何帮助!
提前致谢。
巴里

能否读取其他网站的 cookie?这样做不会导致安全漏洞吗? - Prashant Singh
1
cookie-checker会显示输入网站设置的Cookie,但其值并非您自己的。 - Luca Rainone
2个回答

4

一个网站无法访问另一个网站设置的cookie。

浏览器必须确保这种情况不会发生。

您提到的网站所做的是向服务器发出请求并解析(包括JavaScript)其内容。

您需要做的是确保您的脚本解析所有的JavaScript,并跟踪使用它设置的cookie。


1

Google Analytics cookie是由JavaScript设置的,而不是在HTTP请求的响应中设置的。使用HTTP_Request是不可能的,使用PHP也是不可能的...

您需要一个JavaScript解释器来获取cookie,或者一些无头浏览器(也许是Zombie.js?)


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接