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;
使用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;
注意:在測試的時候,用火狐瀏覽器導出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
可以手動補全,變成下面這樣
www.qlm.com FALSE / FALSE 0 PHPSESSID as6if5c6d5ts23nrsgbq0a94b7 www.qlm.com FALSE / FALSE 1482396897 uname %E7%AE%A1%E7%90%86%E5%91%98
