CURL通過設置curl_setopt模擬來源,IP,提交表單數據,模擬登陸等

在開發中我們有時會碰到這樣的需求,需要採集其他網站數據,或者向其他網站提交數據,我們需要CURL通過設置curl_setopt模擬來源,IP,提交表單數據,模擬登陸等。下面給出實際示例:

    $ip = '118.89.238.218';
    $post = array (
        'name' => 'xxxx',
        'password' => 'xxxxxx',
    ); //需要提交的表單數據
    $url = 'https://xxxxx.cn/login/login.html'; //提交地址
    $refer = 'https://xxxxxx.cn/Index/index.html'; //模擬來源地址
    $header = array(
        'Host:xxxx.cn',
        'Referer:'.$refer,
        'X-Forwarded-For:'.$ip,
        'Client-Ip:'.$ip,
        'Upgrade-Insecure-Requests:1',
        'User-Agent:Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2490.86 Safari/537.36',
    );
    $res = curl_post($url, $cookie, $post, $refer, $header);
    if(preg_match('/<em>登錄成功!<\/em>/', $res)){
        echo date('Y-m-d H:i:s')."\t".$post['name'].'登錄成功';
    }else{
        echo date('Y-m-d H:i:s')."\t".$post['name'].'登錄失敗';
    }

curl函數封裝(post方式)

function curl_post($url, $cookie, $post = array(), $refer = '', $header = array()) {
    $curl = curl_init();//初始化curl模塊
    curl_setopt($curl, CURLOPT_URL, $url);//登錄提交的地址
    $refer && curl_setopt($curl, CURLOPT_REFERER, $refer);
    count($header) && curl_setopt($curl, CURLOPT_HTTPHEADER, $header);//模擬頭信息
    curl_setopt($curl, CURLOPT_HEADER, 0);//是否顯示頭信息
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);//是否自動顯示返回的信息
    curl_setopt($curl, CURLOPT_COOKIEFILE, $cookie); //讀取cookie
    curl_setopt($curl, CURLOPT_POST, 1);//post方式提交
    count($post) && curl_setopt($curl, CURLOPT_POSTFIELDS, http_build_query($post));//要提交的信息
    curl_setopt($curl, CURLOPT_COOKIEJAR, $cookie); //設置Cookie信息保存在指定的文件中
    $rs = curl_exec($curl);//執行cURL
    curl_close($curl);//關閉cURL資源,並且釋放系統資源
    return $rs;
}

curl函數封裝(get方式)

function curl_get($url, $cookie, $get = array(), $refer = '', $header = array()) {
    $curl = curl_init();//初始化curl模塊
    curl_setopt($curl, CURLOPT_URL, $url);//登錄提交的地址
    $refer && curl_setopt($curl, CURLOPT_REFERER, $refer);
    count($header) && curl_setopt($curl, CURLOPT_HTTPHEADER, $header);//模擬頭信息
    curl_setopt($curl, CURLOPT_HEADER, 0);//是否顯示頭信息
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);//是否自動顯示返回的信息
    curl_setopt($curl, CURLOPT_COOKIEFILE, $cookie); //讀取cookie
    curl_setopt($curl, CURLOPT_POST, 0);//post方式提交
    count($get) && curl_setopt($curl, CURLOPT_POSTFIELDS, http_build_query($get));//要提交的信息
    curl_setopt($curl, CURLOPT_COOKIEJAR, $cookie); //設置Cookie信息保存在指定的文件中
    $rs = curl_exec($curl);//執行cURL
    curl_close($curl);//關閉cURL資源,並且釋放系統資源
    return $rs;
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章