使用多个cookie发送多个请求(cURL + PHP)

时间:2017-08-09 09:04:00

标签: php curl cookies

这个问题来自可能看起来很奇怪的情况,但这个目的完全是故意的。

以下是该方案: 我有3个脚本(让他们称之为A,B和C)。每个必须每5秒执行一次,并使用特定的cookie。

我想用另一个名为" start.php"的脚本自动执行这些脚本,使用cURL,它应该在执行任何这些脚本之前设置正确的cookie。

摘要:

  1. 我打电话给'start.php'手动
  2. start.php设置cookie A,然后调用A.php
  3. 同意B.php和C.php以及适当的饼干
  4. 每5秒重复一次。
  5. 以下是我的start.php脚本:

       function startCrawling()
        {
    
        $currentChall = 1;
        $cookieValue = "";
    
        for ($currentChall = 0; $currentChall <= 3; $currentChall++) {
    
            $sql = getConnection()->prepare("SOME STUFF HERE");
            if ($sql->execute()) {
                while ($row = $sql->fetch(PDO::FETCH_ASSOC)) {
                    if ($row['idChallenge'] == $currentChall) {
                        $cookieValue = $row['token'];
                        break;
                    }
                }
            }
    
            sendRequest($currentChall, $cookieValue);
            sleep(1);
        }
    }
    
        /**
        * Send the request to the given script
        */
        function sendRequest($id, $cookieValue)
        {
            $params = [
            'password' => 'p4ssw0rd'
        ];
        $defaults = array(
            CURLOPT_URL => 'http://localhost/script' . $id . '.php',
            CURLOPT_POST => true,
            CURLOPT_POSTFIELDS => $params,
            CURLOPT_HTTPHEADER => array("Cookie: AdminToken=".$cookieValue),
    
            CURLOPT_VERBOSE => true
        );
        $ch = curl_init();
        curl_setopt_array($ch, $defaults);
    
        $content = curl_exec($ch);
        curl_close($ch);
    
         if ($content === false) {
            echo 'Erreur Curl : ' . curl_error($ch);
         }
    }
    

    但是,最后,即使每个脚本都已执行,作为cookie发送的唯一值是PHPSSID(在我的requestb.in中看到)。我在网上搜索了2天,但我在网上找不到任何类似的问题。

    任何帮助都会得到真正的赞赏。

    (由于评论建议而编辑)

0 个答案:

没有答案