【发布时间】:2018-07-13 13:01:20
【问题描述】:
我有一个简单的 php 应用程序,可以从网站获取价格,但它只有在我从页面的 chrome 浏览器请求中复制 cookie 时才有效。我可以简单地在CURLOPT_HTTPHEADER 中复制/粘贴此cookie 行,它会永远有效吗?
另外,当我设置代理时它也能完美运行。我不知道为什么。谁能解释一下?
谢谢
【问题讨论】:
标签: php curl cookies web-scraping http-headers
我有一个简单的 php 应用程序,可以从网站获取价格,但它只有在我从页面的 chrome 浏览器请求中复制 cookie 时才有效。我可以简单地在CURLOPT_HTTPHEADER 中复制/粘贴此cookie 行,它会永远有效吗?
另外,当我设置代理时它也能完美运行。我不知道为什么。谁能解释一下?
谢谢
【问题讨论】:
标签: php curl cookies web-scraping http-headers
如果你有 cookie 的内容(从你的浏览器复制),如果你使用 curl 和 php,你有几个选项 如果 cookie 很少更改和/或如果您有一个简单的脚本,您可以使用 CURLOPT_COOKIE 将 cookie 嵌入到脚本中,如示例所示。
curl_setopt ($ch, CURLOPT_COOKIE, <COOKIE_STRING_CONTENT>);
这是最简单的方法,但需要注意的是每次 cookie 更改时,您都需要更新脚本。
如果您需要更具延展性、更易于更新和维护的东西,您可以使用这 2 个指令 CURLOPT_COOKIEFILE 和 CURLOPT_COOKIEJAR,如下所示,
$cookieFile = "name_of_the_cookie_file_on_the_server"
curl_setopt ($ch, CURLOPT_COOKIEFILE, $cookieFile);
curl_setopt ($ch, CURLOPT_COOKIEJAR, $cookieFile);
它的作用是指示脚本加载 cookie 文件,并将更改存储在同一个文件中(如果有的话),这样如果您需要更新 cookie 的内容,您只需更新 de cookie 文件。
curl 有很多不错的选择,别忘了阅读http://php.net/manual/en/function.curl-setopt.php 的文档
【讨论】:
curl_setopt ($ch, CURLOPT_HTTPHEADER, "cookie: ..... "); 一起使用