PHP cURL 使用cookie 模擬登錄


cURL是什么

cURL: http://php.net/manual/zh/book.curl.php

PHP 支持 Daniel Stenberg 創建的 libcurl 庫,能夠連接通訊各種服務器、使用各種協議。libcurl 目前支持的協議有 http、https、ftp、gopher、telnet、dict、file、ldap。 libcurl 同時支持 HTTPS 證書、HTTP POST、HTTP PUT、 FTP 上傳(也能通過 PHP 的 FTP 擴展完成)、HTTP 基於表單的上傳、代理、cookies、用戶名+密碼的認證。

這些函數在 PHP 4.0.2 中引入。

 

使用cookie模擬登錄,來查看需登錄后才能瀏覽的頁面 (get方式)

set_time_limit(0);
//目標url
$url = "http://www.aa.com/index.php/Home/task/add";
//使用的cookie,路徑自己修改
$cookie_file = __DIR__ . "/".'cookies.txt';
$cookie_file = realpath($cookie_file);
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie_file); //使用上面獲取的cookies
$response = curl_exec($ch);
curl_close($ch);
echo $response;
View Code

 

使用cookie模擬post提交請求

set_time_limit(0);
//目標url
$url = 'http://www.aa.com';
//post查詢條件
$fields = 'claimType=01&orderBy=1&pageSize=300&page.webPager.action=refresh&page.webPager.pageInfo.totalSize=8000&page.webPager.pageInfo.pageSize=300&page.webPager.currentPage=1';
//cookie文件
$cookie_file = __DIR__ . "/".'cookies.txt';
$cookie_file = realpath($cookie_file);

$curl = curl_init();
curl_setopt_array($curl, array(
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_ENCODING => "",
    CURLOPT_MAXREDIRS => 10,
    CURLOPT_TIMEOUT => 60,
    CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
    CURLOPT_CUSTOMREQUEST => "POST",
    CURLOPT_COOKIEFILE => $cookie_file, 
    CURLOPT_COOKIEJAR => $cookie_file,
    CURLOPT_HTTPHEADER => array(
        "accept: */*",
        "accept-encoding: gzip, deflate",
        "accept-language: zh-CN,zh;q=0.8,en;q=0.6,zh-TW;q=0.4,ja;q=0.2",
        "cache-control: no-cache",
        "connection: keep-alive",
        "content-type: application/x-www-form-urlencoded",
        //"cookie: $cookie",
        "origin: http://www.**.com",
        "pragma: no-cache",
        "referer: http://www.****.com",
        "user-agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.110 Safari/537.36",
        "x-requested-with: XMLHttpRequest"
    ),
));

//url
curl_setopt($curl, CURLOPT_URL, $url);
//post fields
curl_setopt($curl, CURLOPT_POSTFIELDS, $fields);

$response = curl_exec($curl);
$err = curl_error($curl);
$httpcode = curl_getinfo($curl, CURLINFO_HTTP_CODE);
echo $response;
View Code

 

注意:在測試的時候,用火狐瀏覽器導出cookie為txt文件時,如果有些cookie項是關閉瀏覽器就失效,則導出的cookie文件中會缺失過期時間這一項,導致使用curl時功能不正常。所以在cookie文件生成后,可先檢查下項。

如,下面是缺失的

www.qlm.com    FALSE    /    FALSE    PHPSESSID    as6if5c6d5ts23nrsgbq0a94b7
www.qlm.com    FALSE    /    FALSE    1482396897    uname    %E7%AE%A1%E7%90%86%E5%91%98
View Code

可以手動補全,變成下面這樣

www.qlm.com    FALSE    /    FALSE    0    PHPSESSID    as6if5c6d5ts23nrsgbq0a94b7
www.qlm.com    FALSE    /    FALSE    1482396897    uname    %E7%AE%A1%E7%90%86%E5%91%98
View Code

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM