免費查詢快遞物流

轉載請註明:藏羚骸的博客~免費查詢快遞物流.

網上有很多快遞查詢接口,如快遞100、快遞鳥等等,但使用接口並不是免費的,如何爬取免費查詢快遞物流呢,本文僅僅提供爬蟲愛好者一個爬蟲思路,僅供交流學習請勿用於商業用途。

頁面地址:https://www.baidu.com/baidu?isource=infinity&iname=baidu&itype=web&tn=02003390_43_hao_pg&ie=utf-8&wd=%E5%BF%AB%E9%80%92

那麼如何解析這個地址呢,右鍵打開開發者模式,再次點擊查詢,會發現有新增加的請求地址。如下圖:

我們點擊該鏈接,打開預覽可以預覽響應信息。如下圖:

那麼這個就是輸出給百度這個頁面的信息,這個地址就是正確快遞信息請求地址。

看標頭該地址請求為get請求,如下圖:

故復制該地址用postman打開,也可以用其他測試接口軟件。如下圖:

可以看見正確返回瞭快遞信息。

篩選無用參數發現必填參數為tokenV2和nu,如下圖:

地址為:https://express.baidu.com/express/api/express?tokenV2=ax0Pz-mHAJ6vC__gfwtLpcz8OyOz35jgTbRglj_deaYouL6bbtDSKyoXPbwpF4zP&nu=773159319988898

nu為快遞單號,tokenV2是如何生成的我們需要找一下,因為到目前為止我們隻打開瞭一個百度快遞頁面,那麼我選擇檢查源碼,看看是否有用的到的信息。

搜索tokenV2果然找到瞭有用信息,前面頁面刷新瞭一下,所以tokenV2發生瞭改變,可以再次打開檢查上下圖是一樣的。

所以整個獲取快遞信息的接口和必填參數已經知道瞭。首先在快遞頁面源碼裡面獲取tokenV2,之後與 https://express.baidu.com/express/api/express?tokenV2=tokenV2&nu=單號 即可。下面我用一個簡單php程序,復盤一下。

獲取tokenV2

public function getinfo(){
$url = 'https://www.baidu.com/s?tn=02003390_43_hao_pg&ie=utf-8&wd=%E5%BF%AB%E9%80%92';
$header = array (
"Host:www.baidu.com",
"Content-Type:application/x-www-form-urlencoded",//post請求
"Connection: keep-alive",
'Referer:http://www.baidu.com',
//關鍵作用User-Agent 可是每次爬取結果都是無法爬取到百度搜索的內容,要驗證 user-agent沒有模擬好,所以不行。
'User-Agent: Mozilla/5.0 (Windows NT 5.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/33.0.1750.146 Safari/537.36'
);
$ch = curl_init ();
curl_setopt ( $ch, CURLOPT_URL, $url );
curl_setopt ( $ch, CURLOPT_HTTPHEADER, $header );
curl_setopt ( $ch, CURLOPT_RETURNTRANSFER, 1 );
$content = curl_exec ( $ch );
if ($content == FALSE) {
echo "error:" . curl_error ( $ch );
}
curl_close ( $ch );
// return $content;
$pattern = '/tokenV2=(.*?)"/i';
preg_match($pattern, $content, $match);
return $match[1];

}

赞(0)