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

Php 在此服务器上找不到请求资源的适当表示形式。此错误由Mod_Security生成,php,curl,Php,Curl,我有一个应用程序,它使用cURL来刮取网站的一些元素。 我开始收到如下错误: “不可接受!不可接受!在此服务器上找不到请求资源的适当表示形式。此错误由Mod_Security生成。” 你见过这个吗? 如果是的话,我该如何应对呢 我检查了两个和我做同样事情的网站,一切都很好 关于卷曲度,我使用的是: public function cURL_scraping($url){ $curl = curl_init(); curl_setopt($curl, CURLOPT_UR

我有一个应用程序,它使用cURL来刮取网站的一些元素。 我开始收到如下错误:

“不可接受!不可接受!在此服务器上找不到请求资源的适当表示形式。此错误由Mod_Security生成。

你见过这个吗? 如果是的话,我该如何应对呢

我检查了两个和我做同样事情的网站,一切都很好

关于卷曲度,我使用的是:

    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;
}

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

如果是这样的话,你真的应该尊重网站所有者的意愿,不要被刮。你可以问他们,或者尝试对他们的网站进行什么样的删减是可以接受的。你读过他们的
robots.txt
了吗


该错误通常有一个超时,但可能是永久性的。在这种情况下,您可能需要更改ip地址以重试。

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

我也遇到了同样的错误,我只是在玩游戏,找到了答案

如果您了解一些基本的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')

这很有效

当您尝试使用普通浏览器打开url时,会有什么响应?预期的输出是什么?使用普通浏览器,我可以获得一个常规网页。没有区别。我在同一台服务器上尝试了两个站点,得到了相同的响应。这不是一个IP问题,原因有二:1-在一些计算机上检查。2-执行相同操作的其他工具不会被阻止。问题是-这是我的网站做的封锁:)然而,它在一个共享主机上,这可能会重复自己在其他网站上。。。想法?您是否尝试过从另一个ip发出完全相同的请求,或者从命令行发出
curl
?你能在php之外重现这个错误吗?我在另外两个IP上尝试了同样的方法,得到了同样的问题。这个问题只存在于脚本中。不是普通的http请求。我添加了一个,它工作了!谢谢你的提示!