php的curl可以模仿用戶瀏覽網頁并且獲取網頁的cookie,獲取cookie還有專用的參數如CURLOPT_COOKIEJAR 用于保存 cookie 到文件了,下面一起來看幾個例子吧.
curl可以獲取返回頁面設置的cookie,原理跟get_headers是一樣的,在返回的頭信息中將"Set-Cookie:"的內容取出來即可.
測試頁面/設置cookie的頁面,test.php代碼如下:
- <?php
- setcookie('test', 'sssss');
- setcookie('xxx', 'www');
- //獲取cookie的腳本
- <?php
- $url = 'http://localhost/test.php';
- $ch = curl_init($url); //初始化
- curl_setopt($ch,CURLOPT_HEADER,1); //將頭文件的信息作為數據流輸出
- curl_setopt($ch,CURLOPT_RETURNTRANSFER,1); //返回獲取的輸出文本流
- curl_setopt($ch, CURLOPT_HEADER, 1);
- $string = curl_exec($ch);
- preg_match_all('/Set-Cookie:stest=(.*)/i', $string, $results);
- var_dump($results);
- ?>
獲取cooke并保存到文件,代碼如下:
- $url = "http://m.survivalescaperooms.com/";
- $ch = curl_init();
- curl_setopt($ch, CURLOPT_URL, $url);
- curl_setopt($ch, CURLOPT_HEADER, 0);
- curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
- curl_setopt($ch, CURLOPT_COOKIEJAR, $cookie_jar);
- $content = curl_exec($ch);
- curl_close($ch);
curl參數介紹
CURLOPT_COOKIEJAR 用于保存 cookie 到文件
CURLOPT_COOKIEFILE 用于將保存的 cookie 文件發送出去
CURLOPT_COOKIE 用于發送 cookie 變量
所謂 在會話結束后就過期了,是因為瀏覽器不保存沒有過期設定的 cookie 變量,所以關閉瀏覽器后再次請求時就沒有 cookie 發送出去.
curl 處理中,如果是一次做完,只需 CURLOPT_COOKIEJAR 就可以.
若要分段處理則先 CURLOPT_COOKIEJAR,后 CURLOPT_COOKIEFILE,發送 cookie 文件內容的段,不要 CURLOPT_COOKIEJAR,以避免新的 cookie 變量的影響.
新聞熱點
疑難解答