在此服务器上找不到所请求资源的适当表示。此错误由Mod_Security生成

时间:2016-01-03 08:21:43

标签: php curl

我有一个使用cURL来抓取网站元素的应用。 我已经开始收到一些看起来像这样的错误:

  

"不可接受!

不可接受!

在此服务器上找不到所请求资源的适当表示。此错误由Mod_Security生成。

"

你见过这个吗? 如果是这样,我该如何解决它?

我检查了2个与我做同样事情的网站,一切正常

关于cURL,这就是我使用的:

    public function cURL_scraping($url){
    $curl = curl_init(); 
    curl_setopt($curl, CURLOPT_URL, $url);  
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);  
    curl_setopt($curl, CURLOPT_CONNECTTIMEOUT, 10); 
    curl_setopt($curl, CURLOPT_MAXREDIRS, 10);
    curl_setopt($curl, CURLOPT_FOLLOWLOCATION, true); 
    curl_setopt($curl,CURLOPT_USERAGENT,'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.13) Gecko/20080311 Firefox/2.0.0.13');
    curl_setopt($curl,CURLOPT_HTTPHEADER,array('Expect:')); 
    curl_setopt( $curl, CURLOPT_SSL_VERIFYPEER, false );
    curl_setopt($curl, CURLOPT_ENCODING, 'identity');
    $response['str'] = curl_exec($curl);  


    $response['header'] = curl_getinfo($curl, CURLINFO_HTTP_CODE);



    curl_close($curl); 
    return $response;
}

3 个答案:

答案 0 :(得分:1)

我找到了原因。我删除了用户代理,它的工作原理。我猜服务器阻止了这个特定的用户代理。

答案 1 :(得分:0)

看起来你正在抓的网站设置了一个检测和阻止抓取。要检查这一点,您可以尝试从同一个IP和/或所有相同的标题获取网页。

如果是这种情况,你真的应该尊重网站所有者希望不被刮掉。您可以询问他们,或者尝试对他们的网站进行可接受的搜索。你读过他们的robots.txt吗?

错误通常会超时,但可能是永久性的。在这种情况下,您可能需要更改IP地址再试一次。

答案 2 :(得分:0)

我遇到了同样的错误,我只是在玩耍,找到了答案。

如果您了解一些基本的python,就很容易用您正在使用的语言来更改相关代码。

我刚刚添加了一个标题,

headers = {
    "User-Agent":
        "Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Firefox/60.0"
}
page = requests.get(url, headers=headers)
soup = BeautifulSoup(page.content, 'html.parser')

这可行!