首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

PHP 遠程抓取淘寶數據接口代碼範例

     編輯:程式設計綜合問答

需求背景

開發者需要使用 PHP 從 https://www.taodake.com 遠程抓取淘寶旺旺號的查詢數據。已知一個可用的 JSONP 接口地址,但普通旺旺號可查,商城/ C 店旺旺卻查不到,推測存在另一個接口。

核心代碼實現

function escape($string, $in_encoding = 'UTF-8', $out_encoding = 'UCS-2') {
    $return = '';
    if (function_exists('mb_get_info')) {
        for ($x = 0; $x < mb_strlen($string, $in_encoding); $x++) {
            $str = mb_substr($string, $x, 1, $in_encoding);
            if (strlen($str) > 1) {
                $return .= '%u' . strtoupper(bin2hex(mb_convert_encoding($str, $out_encoding, $in_encoding)));
            } else {
                $return .= $str;
            }
        }
    }
    return $return;
}

$nick = escape('top百分百');
$taobaourl = 'https://wwwsoso002.taodake.com/taobao_data.php?callback=&nick=' . $nick . '&chkid=0&click=373635346667686A63786365&_=1422435566660';

$ch = curl_init();
curl_setopt($ch, CURLOPT_REFERER, 'https://www.taodake.com/');
curl_setopt($ch, CURLOPT_COOKIE, 'Hm_lvt_ebeb4888fc38c5c3a030f255b55395e3=1422448628; Hm_lpvt_ebeb4888fc38c5c3a030f255b55395e3=1422448800');
curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/31.0.1650.63 Safari/537.36');
curl_setopt($ch, CURLOPT_URL, $taobaourl);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$content = curl_exec($ch);
curl_close($ch);

$content = trim($content, '()'); // 去除 JSONP 回調函數括號
$data = json_decode($content, true);
echo $data['b'];

關鍵點解析

  • Unicode 轉義:escape 函數將中文昵稱轉為 %uXXXX 格式,符合接口參數要求。
  • cURL 模擬瀏覽器:設置 Referer、Cookie、User-Agent 繞過簡單防盜鏈。
  • JSONP 處理:接口返回 callback(...) 格式,去除首尾括號後直接 json_decode。

擴展建議

若商城/ C 店旺旺無法查詢,需抓包分析網頁實際請求,尋找另一個接口(如 givetraderate.php),並按相同邏輯調用。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved