首页 > 解决方案 > 如何安全连接以获得安全 cookie

问题描述

我想从具有安全 cookie 的网站连接并获取数据。我需要在下一次请求时设置 cookie 以解决验证码,但我在我的项目或提琴手中看不到 cookie。

只是相同站点,安全,httponly 显示在 set-cookie 响应标头中

我怎样才能像浏览器一样模拟这个过程?

浏览器在 cookie 中看到了什么?

我知道在 cURL 上设置 X509 CA 并尝试它,但我在所有测试中都遇到错误:无法识别对等证书颁发者。

我使用 CURLOPT_CAINFO 根据我的请求设置 CA 我尝试使用不同格式的 CA,例如 cer 、 crt 、 pem 我用 openssl 更改它

<؟php
        $headers = array(
            'Host: example.com',
            'Connection: keep-alive',
            'Upgrade-Insecure-Requests: 1',
            'User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.121 Safari/537.36',
            'Accept-Language: en-US,en;q=0.9',
        );
        $url='https://example.com/';
        $curl = curl_init();
        curl_setopt_array($curl, array(
            CURLOPT_URL            => $url,
            CURLOPT_RETURNTRANSFER => true,
            CURLOPT_ENCODING       => "",
            CURLOPT_MAXREDIRS      => 30,
            CURLOPT_FRESH_CONNECT      => true,
            CURLOPT_HTTP_VERSION   => CURL_HTTP_VERSION_1_1,
            CURLOPT_CUSTOMREQUEST  => 'GET',
            CURLOPT_HTTPHEADER     => $headers,
            CURLOPT_CONNECTTIMEOUT     => 10,
            CURLOPT_SSL_VERIFYPEER     => true,
            CURLOPT_SSL_VERIFYHOST     => 2,
            CURLOPT_CAINFO     => 'Cert/certificate.crt',
            CURLOPT_VERBOSE     => 1,
            CURLOPT_HEADER     => 1,
        ));
        $response = curl_exec($curl);
        $err      = curl_error($curl);
?>

标签: phpsslcurlhttpsx509

解决方案


要使用 curl 设置 cookie,请确保您有这两个选项

$cookiefile = dirname(__FILE__)."/cookie.txt" ; 
curl_setopt ($ch, CURLOPT_COOKIEJAR, $cookiefile);
curl_setopt ($ch, CURLOPT_COOKIEFILE, $cookiefile);

推荐阅读