【问题标题】:PHP CURL get cookie from remote webpagePHP CURL 从远程网页获取 cookie
【发布时间】:2017-01-16 17:56:07
【问题描述】:

我正在尝试使用 PHP 和 CURL 从网页中获取 cookie 文件:https://www.receita.fazenda.gov.br/Aplicacoes/SSL/ATCTA/CPF/ConsultaSituacao/ConsultaPublica.asp

但是在第一次之后,我不能再接受它了,cookie 仅在 1º 连接中的“响应标题”中可用,在 1º 连接之后它就不是更多了。

我尝试发出 CURL 请求清理缓存或避开缓存,但没有成功。

所以当我尝试在浏览器中执行此操作时,我注意到的是,在我清理缓存时,我可以在“响应标题”中看到 cookie,我如何使用 PHP + CURL 来执行此操作,我需要获取cookie?

谢谢!

清除缓存浏览器后的 1º 请求

下次访问

代码:

define('COOKIELOCAL', realpath('./').'/');

        $ch = curl_init("https://www.receita.fazenda.gov.br/Aplicacoes/SSL/ATCTA/CPF/ConsultaPublica.asp");

        curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
        curl_setopt($ch, CURLOPT_SSLVERSION, 3);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
        curl_setopt($ch, CURLOPT_COOKIEJAR, $cookieFile);

        /* trying to clean the cache */
        curl_setopt($ch, CURLOPT_FRESH_CONNECT, true);
        curl_setopt($ch, CURLOPT_HTTPHEADER, array(
            "Pragma: no-cache",
            "Cache-control: no-cache"
        ));

        $result = curl_exec($ch);

        echo 'Cookie...........:' . file_get_contents($cookieFile); // Empty cookie file here until now

【问题讨论】:

    标签: php caching curl cookies


    【解决方案1】:

    这应该可以工作

    <?php
    declare(strict_types=1);
    
    $ch=curl_init('https://www.receita.fazenda.gov.br/Aplicacoes/SSL/ATCTA/CPF/ConsultaSituacao/ConsultaPublica.asp');
    $cookiefile=tmpfile();
    $cookiefilepath=stream_get_meta_data($cookiefile)['uri'];
    curl_setopt_array($ch, array(
            CURLOPT_COOKIEFILE=>$cookiefilepath,
            CURLOPT_COOKIEJAR=>$cookiefilepath,
            CURLOPT_SSL_VERIFYPEER=>false,
            CURLOPT_SSL_VERIFYHOST=>false
    ));
    curl_exec($ch);
    curl_close($ch);
    $cookies=file_get_contents($cookiefilepath);
    var_dump($cookies);
    

    【讨论】:

    • 成功了!! ... 多谢。那么区别在于 stream_get_meta_data() 吗?
    猜你喜欢
    • 2014-01-22
    • 1970-01-01
    • 2011-05-05
    • 2017-11-20
    • 2021-04-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多