如何检测,直接访问或通过CURL访问的URL

时间:2011-08-20 06:18:23

标签: php curl

// remote.php on http://www.example.com/
<?php
function curl_access()
{ /*
  some codes here to detect
  this script accessed via
  curl or direct and returns $r.
  (without checking referrer or user agent)
  */
  return $r;
}
$curl_access = curl_access();
if ($curl_access)
{ echo 'Accessed via CURL';
} else
{ echo 'Direct access';
}
?>

// some file on a server
<?php
$h = curl_init();
curl_setopt($c, CURLOPT_URL, "http://www.example.com/remote.php");
curl_exec($c); // returns 'Accessed via CURL'
curl_close($c);
?>

3 个答案:

答案 0 :(得分:7)

你做不到。 HTTP请求是一个HTTP请求,您已经排除了浏览器发出的请求(用户代理标头的内容)的明显区别特征。

答案 1 :(得分:0)

您可以通过

查看访问者的用户代理
_SERVER['HTTP_USER_AGENT']

请注意,使用带有-A标志的curl时可以修改它。

答案 2 :(得分:0)

由于curl像任何浏览器一样工作,因此很难检测到人或机器。首先,你可以

1.print $_SERVER php variable
2.json_encode this variable
3.put in a database field named server information
4.then browse this site one time
5.and curl execute for this same URL
6.then print both information

在这里你可以看到一些不同的问题。我找到了卷曲请求信息中不存在的不同术语HTTP_COOKIE。

所以你可以检测到

if (!isset($_SERVER['HTTP_COOKIE'])) {          
            die('Opps! I think, your request is not proper way. Please contact');
    }

我认为,如果想要保护他/她网站上的数据,那将非常有用。

查看详情http://saidul.songzog.com/my-blog/details/869/how-can-detect-how-to-detect-a-url-accessed-direct-or-via-curl.html