Пользовательский агент CURL

Итак, как я могу проверить с помощью codeigniter, если клиент завиток, а затем вернуть что-то другое для него?

Вы можете подделать пользовательский агент при использовании cURL, поэтому это бессмысленно в зависимости от агента пользователя, отправленного, когда вы ЗНАЕТ это запрос cURL.

Например: недавно я написал приложение, которое получает pagerank URL-адреса из Google. Теперь Google это не нравится, поэтому он позволяет только определенному пользовательскому агенту получать доступ к своим серверам pagerank. Решение? Объясните, что пользователь-агент использует cURL, и Google не будет более мудрее.

Мораль истории: пользовательские агенты cURL JUST NOT надежны.

Если вы все еще хотите это сделать, тогда вы сможете получить переданный пользовательский агент, как обычно

$userAgent=$_SERVER['HTTP_USER_AGENT']; 

EDIT Быстрый тест показал это:

dumpx.php:

 <?php $url="http://localhost/dump.php"; $ch = curl_init(); curl_setopt($ch, CURLOPT_URL,$url); curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); if($_GET['u']==y) { curl_setopt($ch, CURLOPT_USERAGENT, "booyah!"); } curl_setopt($ch, CURLOPT_RETURNTRANSFER, 0); curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 2); curl_setopt($ch, CURLOPT_TIMEOUT, 60); //curl_setopt($ch, CURLOPT_CUSTOMREQUEST,'GET'); curl_setopt ($ch, CURLOPT_HEADER, 0); $exec=curl_exec ($ch); ?> 

dump.php:

 <?php var_dump($_SERVER); ?> 

Случай 1: http: //localhost/dumpx.php? U = y

  'HTTP_USER_AGENT' => string 'booyah!' (length=7) 

Случай 2: http: //localhost/dumpx.php? U = n

Нет $ _SERVER ['HTTP_USER_AGENT']

Это доказывает, что пользовательский агент по умолчанию не зависел: он просто не передаст его в заголовке запроса

Если вы хотите обнаружить ботов, вы не можете полагаться на пользовательский агент. Лучшие практики:

  1. Проверьте, что ваш посетитель запускает js (также не все пользователи-пользователи).
  2. Проверьте, что ваш посетитель загружает дополнительные файлы, связанные с веб-страницей (css, изображения и т. Д.).
  3. Проверьте таймауты посетителей. Люди обычно не загружают 10 страниц в секунду.

cURL означает: – Клиентская библиотека URL-адресов, и весь ее смысл состоит в том, чтобы делать запросы, идентичные тем, что сделает клиент.

Единственное, что вы можете сделать, это обнаружить информацию, которая является частью запроса, такую ​​как IP-адрес, заголовки HTTP-запросов, cookie-файлы cookie cookie, URL-адрес (путь / страница) и любые данные post / get. Если человек, использующий завиток для выполнения запроса, выполняет его с ожидаемого IP-адреса и подает любые ожидаемые значения заголовка / cookie / токена / URL-адреса / столбца / получателя, то вы не сможете отличить запрос зависания от браузера, делающего запрос.

Вы можете обманывать или настраивать заголовок пользовательского агента при использовании cURL, поэтому он не будет надежным.

В противном случае вы можете сделать это:

 if(strtolower($this->input->server('HTTP_USER_AGENT', true)) == 'curl') { // Is using cURL } 

Это произойдет только в том случае, если запрос cURL содержит curl в заголовке пользовательского агента.

Насколько я знаю, при выполнении запроса на завивки не установлен пользовательский агент по умолчанию.