【问题标题】:Retrieve cookie from browser will work with php curl?从浏览器中检索 cookie 将与 php curl 一起使用?
【发布时间】:2018-07-13 13:01:20
【问题描述】:

我有一个简单的 php 应用程序,可以从网站获取价格,但它只有在我从页面的 chrome 浏览器请求中复制 cookie 时才有效。我可以简单地在CURLOPT_HTTPHEADER 中复制/粘贴此cookie 行,它会永远有效吗?

另外,当我设置代理时它也能完美运行。我不知道为什么。谁能解释一下?

谢谢

【问题讨论】:

    标签: php curl cookies web-scraping http-headers


    【解决方案1】:

    如果你有 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 的文档

    【讨论】:

    • 嗨@rafael,非常感谢。我对cookies不太了解。我怎么知道这个 cookie 是否会改变?我只是从 Chrome 复制了 cookie 标题行代码并与 curl_setopt ($ch, CURLOPT_HTTPHEADER, "cookie: ..... "); 一起使用
    • 一个 cookie 总是会改变,它可能需要几天(如果 cookie 用于身份验证目的)到几个月或永远不会(如果 web 浏览器跟踪 cookie),我可能会使用我的开发中的第一个示例,测试后更改为我的第二个示例
    • 可以使用 curl_setopt ($ch, CURLOPT_HTTPHEADER, "cookie: ..... ");在内部是 curl_setopt ($ch, CURLOPT_COOKIE, );可以,但我发现它更易于阅读和维护
    • 我尝试将 cookiefile 和 cookiejar 添加到我的代码中,但现在我得到的页面与我通过浏览器打开时得到的页面不同。
    • 您需要确保以正确的格式打开正确的文件才能正常工作
    猜你喜欢
    • 2020-11-20
    • 2010-11-10
    • 2019-11-23
    • 2011-04-01
    • 2016-02-14
    • 1970-01-01
    • 1970-01-01
    • 2012-12-25
    • 1970-01-01
    相关资源
    最近更新 更多