cURLの様々な使い方

目次
基本
$ch = curl_init(); curl_setopt( $ch, CURLOPT_URL, $url ); // option... $result = curl_exec( $ch ); curl_close( $ch );
POST
$params = [ 'key'=>'value', ]; curl_setopt( $ch, CURLOPT_CUSTOMREQUEST, 'POST' ); curl_setopt( $ch, CURLOPT_POSTFIELDS, http_build_query($params) );
Cookieの利用
$cookie = '/cookie.text'; curl_setopt( $ch, CURLOPT_COOKIEFILE, $cookie ); curl_setopt( $ch, CURLOPT_COOKIEJAR, $cookie );
タイムアウト設定
curl_setopt( $ch, CURLOPT_TIMEOUT, 5 );
エラーハンドリング
curl_setopt( $ch, CURLOPT_FAILONERROR, true );
リダイレクト
curl_setopt( $ch, CURLOPT_FOLLOWLOCATION, true ); // リダイレクトの許可 curl_setopt( $ch, CURLOPT_MAXREDIRS, 10 ); // maxリダイレクト数 curl_setopt( $ch, CURLOPT_AUTOREFERER, true ); // リファラーの自動追加
リダイレクト先URL取得
$ch = curl_init(); curl_setopt( $ch, CURLOPT_URL, $url ); curl_setopt( $ch, CURLOPT_FOLLOWLOCATION, true ); curl_setopt( $ch, CURLOPT_MAXREDIRS, 10 ); curl_setopt( $ch, CURLOPT_AUTOREFERER, true ); // option... curl_exec( $ch ); $result = curl_getinfo( $ch, CURLINFO_EFFECTIVE_URL ); curl_close( $ch );
SSL対策
curl_setopt( $ch, CURLOPT_SSL_VERIFYPEER, false ); curl_setopt( $ch, CURLOPT_SSL_VERIFYHOST, false );
BASIC認証
$id = 'user'; $pass = 'pass1234'; curl_setopt( $ch, CURLOPT_USERPWD, $id .":". $pass);
UAの設定
curl_setopt( $ch, CURLOPT_HEADER, false ); curl_setopt( $ch, CURLOPT_USERAGENT, "User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)");
リクエストヘッダーの設定
$headers = array( "HTTP/1.0", "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8", "Accept-Encoding:gzip ,deflate", "Accept-Language:ja,en-us;q=0.7,en;q=0.3", "Connection:keep-alive", "User-Agent:Mozilla/5.0 (Macintosh; Intel Mac OS X 10.9; rv:26.0) Gecko/20100101 Firefox/26.0" ); curl_setopt( $ch, CURLOPT_HTTPHEADER, $headers );
文字化け対策
curl_setopt($ch, CURLOPT_ENCODING, 'gzip'); $result = curl_exec( $ch ); $result = mb_convert_encoding(result, 'UTF-8', 'ASCII, JIS, UTF-8, SJIS');