cURL Ошибка 405 Not Allow
Есть некий массив артикулов, например: 103046970, 104724354, 101833431, 100205859, 102144885.
Пытаюсь получить данные с помощью multi cURL
$urls = [];
$posts = [];
$codes = [103046970, 104724354, 101833431, 100205859, 102144885];
foreach ($codes as $code) {
$post = [
'id' => $code,
'cityId' => 750000000,
'limit' => 5
];
array_push($urls, 'https://kaspi.kz/yml/offer-view/offers/' . $code);
array_push($posts, json_encode($post));
}
$multi = curl_multi_init();
$channels = [];
$header = [
"accept: application/json",
"content-type: application/json; charset=UTF-8",
"referer: https://kaspi.kz/merchantcabinet/",
];
foreach($urls as $key => $url) {
$ch = curl_init();
curl_setopt_array($ch, [
CURLOPT_URL => $url,
CURLOPT_POST => true,
CURLOPT_POSTFIELDS => $posts[$key],
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => $header,
CURLOPT_SSL_VERIFYHOST => false,
CURLOPT_FOLLOWLOCATION => true,
CURLOPT_HEADER => false,
CURLOPT_USERAGENT => 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/103.0.0.0 Safari/537.36'
]);
curl_multi_add_handle($multi, $ch);
$channels[$key] = [
'url' => $url,
'post' => $posts[$key],
'channel' => $ch
];
}
$active = null;
do {
$mrc = curl_multi_exec($multi, $active);
} while ($mrc == CURLM_CALL_MULTI_PERFORM);
while ($active && $mrc == CURLM_OK) {
if (curl_multi_select($multi) == -1) {
continue;
}
do {
$mrc = curl_multi_exec($multi, $active);
} while ($mrc == CURLM_CALL_MULTI_PERFORM);
}
foreach($channels as $key => $channel) {
$sku = json_decode($channel['post'], true);
$content = json_decode(curl_multi_getcontent($channel['channel']), true);
if(is_array($content) && count($content['offers']) > 0) {
// code if success
}
curl_multi_remove_handle($multi, $channel['channel']);
}
curl_multi_close($multi);
Но иногда получаю ошибку 405 Not Allowed. Из 5 артикулов 2-3 возвращает 405 ошибку, а остальные 200. Не могу понять, как это исправить. Бьюсь уже неделю. Если бы мой IP был бы забанен, то я бы не мог получить иногда 200 код. С методом запроса тоже все нормально, передается POST. Или можете предложить другие варианты?