存储 cURL cookie 有啥好处吗?以及相关问题
Posted
技术标签:
【中文标题】存储 cURL cookie 有啥好处吗?以及相关问题【英文标题】:Is there any advantages storing cURL cookies? And relating questions存储 cURL cookie 有什么好处吗?以及相关问题 【发布时间】:2012-01-25 18:12:26 【问题描述】:我有一个有效的cURL php
脚本。它从我的学校网站获取我的日程安排。虽然有一件奇怪的事情:在我的虚拟主机上它会创建 cookie.txt 而在我的本地主机上却没有。
以及后面的问题:
已经登录学校网站(存储 cookie 并因此保存 cURL 请求)是否有任何(速度)优势?例如,我可以在第一个 cURL 请求之后检查响应中是否有证据表明我已经登录。
如果上述问题的答案是:'不,这不会使脚本更快'我还有一个问题:
最好只指定CURLOPT_COOKIEFILE
选项吗?有一个空值?所以没有饼干罐?
我不能给你我的登录信息,虽然这里是脚本:
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL,
'http://www.groenewoud.nl/infoweb/infoweb/index.php');
curl_setopt($curl, CURLOPT_COOKIEFILE, 'cookie.txt');
curl_setopt($curl, CURLOPT_COOKIEJAR, 'cookie.txt');
curl_setopt($curl, CURLOPT_ENCODING, 'gzip');
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_HEADER, false);
$tokenSource = curl_exec($curl);
print_r (curl_getinfo($curl));
if (!$tokenSource) echo 'token problem';
// Get the token from within the source codes of infoweb.
preg_match('/name="csrf" value="(.*?)"/', $tokenSource, $token);
$postFields = array(
'user' => $userNum,
'paswoord' => $userPass,
'login' => 'loginform',
'csrf' => $token[1]);
$postData = http_build_query($postFields);
curl_setopt($curl, CURLOPT_POST, true);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, false);
curl_setopt($curl, CURLOPT_POSTFIELDS, $postData);
$tableSource = curl_exec($curl);
print_r( curl_getinfo($curl));
if (!$tableSource) echo 'post problem';
curl_close($curl);
【问题讨论】:
【参考方案1】:1) /cookie/cookie.txt
表示您需要将 cookie 目录放在整个服务器的 ROOT 目录中。 cookie/cookie.txt
(注意:没有前导斜杠)表示 cookie 目录将是脚本当前目录的子目录。例如。您的脚本在/a/b/c/
中运行,那么您将拥有/a/b/c/cookie/cookie.txt
。
2) 就速度优势而言,HTTP 速度没有变化 - 您仍然停留在相同的管道和传输速率上。但是最初使用 cookie 可能会在服务器上为您节省一些额外的点击来模拟登录序列,因此实际上会稍微快一些。
3) 至于创建 cookie,这完全取决于 curl 的设置。如果您不指定 cookie 文件或 cookie jar,它将不会创建或查找 cookie 文件。检查两台服务器之间的配置/编译选项,看看其中一台是否指定了另一台没有的 curl 默认值。
4) str_pos 会比 curl 请求更快。可以把它想象成在冰箱里寻找食物与开车去杂货店之间的区别。冰箱是本地的,因此速度更快。
5) curlopt_cookiefile 告诉 curl 在哪里存储新的 cookie。 curlopt_cookiejar 告诉 curl 在它第一次启动时从哪里加载 cookie。它们可以是不同的文件,但不一定是。如果您想保留一些“干净”的基线 cookie,那么您可以使用 cookiejar = newstuff.txt 和 cookiejar=baseline.txt。设置好适当的 cookie 环境后,将 cookiejar 重置为 newstuff.txt 以供后续 curl 运行。
【讨论】:
关于你的第一个答案:你不是说/a/b/c/cookie/cookie.txt吗?你的第三个:如果我提供phpinfo()
的cURL 部分,你能告诉我更多吗?第四:哈哈,好吧,我去看看我的冰箱。 (即使它是一个很大的(学校的源代码 = 14k 字符)冰箱?)旁注:因为我正在浏览 cURL 问题的答案,而且由于我看到你在线,我不知何故知道你会帮助我,哈哈。
糟糕,是的,在目录中很抱歉。简而言之,前导/
“根”目录树顶部的目录引用。没有前导斜杠 = 相对路径。
知道为什么这似乎不适用于我的 windows+wamp+本地服务器吗? Root 有效:所以在我的本地机器上,它将在 c:/ 中创建一个 cookie(不是我想要的位置)。另一个问题:你能告诉我哪个更快吗? str_pos 在“我的日程安排”或“我的学校”上?换句话说:长字符串还是小字符串? (他们都将返回一个结果)
对于那个长度的字符串,甚至不用费心。您正在追逐微秒级的 CPU 时间。除非您正在运行一个 facebook 大小的操作,否则它完全无关紧要。对于 cookie 文件,请检查网络服务器的用户 ID 是否对文件及其所在目录具有写入权限。
但它的 WampServer 在我的本地机器上。为什么它创建一个具有绝对路径而不是相对路径的cookie? “其次,请把……放在安全的一边。” icfun.blogspot.com/2009/04/…他说的对吗?以上是关于存储 cURL cookie 有啥好处吗?以及相关问题的主要内容,如果未能解决你的问题,请参考以下文章