国产欧美日韩第一页|日本一二三不卡视频|在线精品小视频,亚洲第一免费播放区,metcn人体亚洲一区,亚洲精品午夜视频

幫助中心 >  技術知識庫 >  網(wǎng)站相關 >  程序開發(fā) >  php利用curl模擬post登錄,傳遞cookie獲取數(shù)據(jù)

php利用curl模擬post登錄,傳遞cookie獲取數(shù)據(jù)

2019-04-08 10:08:22 7507

一般我們會用curl抓取其他網(wǎng)站的數(shù)據(jù),不過一些網(wǎng)站會設置成登錄后才可以獲取數(shù)據(jù),這樣一來我們就需要利用curl模擬登錄保存cookie,并且傳遞cookie偽裝和網(wǎng)站建立通信,獲取到數(shù)據(jù)。


curl模擬post登錄

/**

 * 模擬post登錄

 * @param   string  $url  登錄地址

 * @param   string  $post  登錄參數(shù)

 * @param   string  $cookie cookie文件地址

 * @return mixed

 */

function curl_login($url, $post, $cookie){

    $ch = curl_init();

    curl_setopt($ch, CURLOPT_URL, $url);

    curl_setopt($ch, CURLOPT_HEADER, false);

    curl_setopt($ch, CURLOPT_HTTPHEADER, ['Content-Type: application/json; charset=utf-8', 'Content-Length:' . strlen($post)]

    );

    curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);

    curl_setopt($ch, CURLOPT_POSTFIELDS, $post);         //提交方式為post,數(shù)據(jù)為json格式的。

    curl_setopt($ch, CURLOPT_COOKIEJAR, $cookie);

    $b = curl_exec($ch);

    curl_close($ch);

    return $b;

}

調(diào)用示例:

$cookie = '/login_cookie.txt';

//模擬登錄

curl_login("http://www.tjdsmy.cn/api/login", json_encode(['account' => 'xxx', 'password' => 'xxx']) ,$cookie);

獲取cookie

/**

 * 獲取cookie

 * @param string  $url  登錄地址

 * @param string  $cookie cookie文件地址

 * @return mixed

 */

function curl_cookie($url, $cookie) {

    $ch = curl_init();

    curl_setopt($ch, CURLOPT_URL, $url);

    curl_setopt($ch, CURLOPT_HEADER, 0);

    curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);

    curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie);

    $a = curl_exec($ch);

    curl_close($ch);

    return $a;

}

調(diào)用示例:

$cookie = '/login_cookie.txt';

//生成口令

curl_cookie("http://www.tjdsmy.cn/api/login", $cookie);

模擬get獲取數(shù)據(jù)

/**

 * 模擬get獲取數(shù)據(jù)

 * @param $url

 * @param $cookie

 * @return mixed

 */

function curl_get($url, $cookie) {

    $ch = curl_init();

    curl_setopt($ch, CURLOPT_ENCODING, "gzip"); //指定gzip壓縮

    curl_setopt($ch, CURLOPT_URL, $url);

    curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; SLCC1; .NET CLR 2.0.50727; .NET CLR 3.0.04506; .NET CLR 3.5.21022; .NET CLR 1.0.3705; .NET CLR 1.1.4322)');

    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);  //返回數(shù)據(jù)不直接輸出

    curl_setopt($ch, CURLOPT_REFERER, 'http://www.tjdsmy.cn/static/index.html');//來路模擬

    //curl_setopt($ch, CURLOPT_HOST, '');

    curl_setopt($ch, CURLOPT_HEADER, false);

    curl_setopt($ch, CURLOPT_HEADER, 0);

    curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie);

    $data = curl_exec($ch);

    curl_close($ch);

    return $data;

}

調(diào)用示例:

$cookie = '/login_cookie.txt';

//獲取禮包

$content = json_decode(curl_get("http://www.tjdsmy.cn/api/customermobile?customerMobile=".$mobile, $cookie), true);

模擬post獲取數(shù)據(jù)

/**

  模擬post獲取數(shù)據(jù)

  @param $url

  @param $post

  @param $cookie

  @return mixed

 */

function curl_post($url, $post, $cookie) {

    $ch = curl_init();

    curl_setopt($ch, CURLOPT_ENCODING, "gzip"); //指定gzip壓縮

    curl_setopt($ch, CURLOPT_URL, $url);

    curl_setopt($ch, CURLOPT_HTTPHEADER, ['Content-Type: application/json; charset=utf-8', 'Content-Length:' . strlen($post)]);

    curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; SLCC1; .NET CLR 2.0.50727; .NET CLR 3.0.04506; .NET CLR 3.5.21022; .NET CLR 1.0.3705; .NET CLR 1.1.4322)');

    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);  //返回數(shù)據(jù)不直接輸出

    curl_setopt($ch, CURLOPT_POSTFIELDS, $post);         //提交方式為post

    curl_setopt($ch, CURLOPT_REFERER, 'http://www.tjdsmy.cn/static/index.html');//來路模擬

    curl_setopt($ch, CURLOPT_HEADER, false);

    curl_setopt($ch, CURLOPT_HEADER, 0);

    curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie);

    $data = curl_exec($ch);

    curl_close($ch);

    return $data;

}

調(diào)用示例:

$cookie = '/login_cookie.txt';

//獲取數(shù)據(jù)

$ressult = curl_post("http://www.tjdsmy.cn/api/exchangecode/verifycode", json_encode($post), $cookie);


提交成功!非常感謝您的反饋,我們會繼續(xù)努力做到更好!

這條文檔是否有幫助解決問題?

非常抱歉未能幫助到您。為了給您提供更好的服務,我們很需要您進一步的反饋信息:

在文檔使用中是否遇到以下問題: