我尝试用 php 编写一个程序,在使用curl 连接并使用 $_COOKIE 功能时从网站上抓取 cookie。
原来我只能像这样读取 php cookie,但我也想获取 JavaScript cookie。
因此,我尝试了一种使用 python 和 selenium(用于网页抓取的浏览器自动化工具)的不同方法,效果很好,但我想要一个 php 解决方案。
我现在寻找的是一种刮擦cookie的方法,就像我用python和selenium做的那样。
下面是我第一次使用的 php 脚本,它仅适用于 php cookies。
$ch = curl_init('https://www.google.com/');
curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.12) Gecko/20101026 Firefox/3.6.12');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_HEADER, 1);
$result = curl_exec($ch);
preg_match_all('/^Set-Cookie:\s*([^;]*)/mi', $result, $matches);
$cookies = array();
foreach($matches[1] as $item) {
parse_str($item, $cookie);
$cookies = array_merge($cookies, $cookie);
}
var_dump($cookies);
如上所述,Curl 只会获取服务器设置的 cookie,但不会获取 JavaScript cookie(或受保护的服务器 cookie)。解决方案是运行像 selenium 这样的无头浏览器。
我找到了一个很棒的教程来设置一切: https://www.zenrows.com/blog/selenium-php#install-selenium-in-php