Я работаю над ZOHO API и пытаюсь обновить запись, используя CURL. Я пробовал разные варианты CURL, но всегда возвращает «false». Но когда я вызываю тот же URL-адрес с помощью браузера, он работает.
Есть ли способ блокировать запросы CURL? Есть ли другой способ, который я могу назвать этим URL-адресом с помощью POSt или может быть GET? Я провел почти 2-3 дня. Если вы пользователь ZOHO API, можете ли вы показать мне код, который сработал для вас?
Недавний завиток, который я пробовал, выглядит следующим образом:
$ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_HEADER, 0); $data = curl_exec($ch); curl_close($ch);
Сервер не может блокировать запросы на завихрение как таковой, но они могут блокировать любой запрос, который им не нравится. Если сервер проверяет некоторые параметры, которые ваш запрос на завихрение не удовлетворяет, он может решить ответить по-другому.
В подавляющем большинстве случаев эта разница в поведении вызвана присутствием (или отсутствием) и значениями заголовков HTTP-запросов. Например, сервер может проверить, что заголовок User-Agent
присутствует и имеет допустимое значение (он также может проверять много других вещей).
Чтобы узнать, как выглядит HTTP-запрос, поступающий из браузера, используйте прокси-сервер отладки HTTP, такой как Fiddler или инструменты разработчика вашего браузера.
Чтобы добавить свои собственные заголовки в свой запрос на завивание, используйте
curl_setopt($ch, CURLOPT_HTTPHEADER, array('HeaderName: HeaderValue'));
Многие веб-серверы хотят блокировать HTTP-запросы, подделанные чем-то другим, чем браузер, для предотвращения злоупотреблений ботов. Если вы хотите имитировать / притворяться в своем запросе в браузере, вам, по крайней мере, нужно:
Передавайте те же заголовки, что и ваши браузеры (используйте Firebug для их получения)
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
Измените агент пользователя (имя браузера)
curl_setopt($ch, CURLOPT_USERAGENT, $agent);
Включить файлы cookie (например, перенаправление и обработка сеанса)
curl_setopt ($ch, CURLOPT_COOKIEJAR, $file); curl_setopt ($ch, CURLOPT_RETURNTRANSFER, true);
Добавить рефералов
curl_setopt($curl, CURLOPT_REFERER, 'http://www.google.com'); curl_setopt($curl, CURLOPT_AUTOREFERER, true);
И молитесь, чтобы вы ничего не пропустили!
Чтобы ответить на ваш вопрос «Есть ли способ заблокировать запросы CURL?» : Да, на самом деле можно обнаружить запрос cURL, прочитав заголовок User-Agent
.
Вы можете изменить агент пользователя, вызвав curl_setopt($ch, CURLOPT_USERAGENT, 'My user agent string!');
,