最近需要抓取下KFC的一些數據
通過postman把請求地址和參數都拿過來后可以返回數據
我就天真的以為可以通過代碼直接發送一個post請求即可
但是通過php的curl模擬請求后,返回的一直是服務器異常
剛開始時好像成功過,但現在一直都是報這個,我用的就是一個普通post請求封裝方法,代碼如下:
public function kfc_post($url, $data)
{
$data['deviceId'] = '819ce973-1ff8-4dfc-8436-4e0e0e1efb6e';
$data['brower_id'] = 'unique-test-dc6d945b-d504-45f7-ad94-8eaacb590fcf';
$params = http_build_query($data);
$headers = [
'Accept' => 'application/json, text/plain, */*',
'Content-Type' => 'application/x-www-form-urlencoded',
'Origin' => 'http://order.kfc.com.cn',
'Referer' => 'http://order.kfc.com.cn/mwos/store',
'User-Agent' => 'Mozilla/5.0 (iPhone; CPU iPhone OS 11_0 like Mac OS X) AppleWebKit/604.1.38 (KHTML, like Gecko) Version/11.0 Mobile/15A372 Safari/604.1'
];
// 模擬提交數據函數
$curl = curl_init(); // 啟動一個CURL會話
curl_setopt($curl, CURLOPT_URL, $url); // 要訪問的地址
curl_setopt($curl, CURLOPT_POST, 1); // 發送一個常規的Post請求
curl_setopt($curl, CURLOPT_POSTFIELDS, $params); // Post提交的數據包
curl_setopt($curl, CURLOPT_TIMEOUT, 30); // 設置超時限制防止死循環
curl_setopt($curl, CURLOPT_HTTPHEADER,$headers);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); // 獲取的信息以文件流的形式返回
$content = curl_exec($curl); // 執行操作
curl_close($curl); // 關閉CURL會話
return json_decode($content, true);
}
前后修改過幾次,但基本就是這樣,依然請求失敗,沒玩過抓別人網站的數據,是不是哪里有疏忽,比如cookie之類的,我嘗試帶cookie請求,但還是不行,所以就不知道為什么了。