防止来自我网站的cURL请求

时间:2014-06-08 07:21:32

标签: javascript php curl screen-scraping

我的网站包含大量的产品和价格 我一直在为价格而努力。

我想用<noscript>标签来阻止它,但我只能隐藏内容,机器人仍然可以抓取我的内容。

是否有办法运行JS测试以查看js是否被禁用(以检测机器人)并重定向这些请求,可能在黑名单中。

这样做会阻止谷歌浏览我的网站吗?

3 个答案:

答案 0 :(得分:1)

由于CURL只是一个html请求,因此您的服务器无法区分,除非您限制某些网址访问或检查引荐网址并为本地未提及的任何内容实施过滤器。可以在此处找到如何构建支票的示例:

Checking the referrer

答案 1 :(得分:1)

您可以通过查看cURL来阻止php中的非托管User Agent请求。据我所知,搜索引擎抓取工具的用户代理字符串都没有卷曲,所以不应该阻止它们。

if(stripos($_SERVER['HTTP_USER_AGENT'],'curl') !== false) {
    http_response_code(403); //FORBIDDEN
    exit;
}

请注意,更改User Agent请求的cURL字符串非常简单,因此有人可以轻易绕过此问题。

答案 2 :(得分:1)

你需要创建一个阻止列表并阻止ips访问内容,包括引用者和用户代理在内的所有头文件都可以通过简单的代码轻松设置为curl

$agent = 'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)';
$ch = curl_init();
curl_setopt($ch, CURLOPT_USERAGENT, $agent);
curl_setopt($ch, CURLOPT_URL, 'http://www.yoursite.com?data=anydata');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_REFERER, 'http://www.yoursite.com');
$html = curl_exec($ch);

以上将使curl请求看起来像是使用firefox的浏览器的正常连接。

相关问题