0
我正在为客户做一些自动化操作,并计划在此过程中通过cURL运行一些PHP脚本。但是,在浏览器中正常工作的URL在被cURL命中时会出现404。我在其他地方看到,有些服务器被配置为以这种方式阻止cURL。服务器配置为发送404来自cURL的请求?
这是一个我可以在httpd.conf
编辑的设置吗?似乎不在php.ini
。
我的代码是像这样:
$url = "http://site.com/xxx/curl.php?cID=$c->cID&db=$c->db&un=$c->un&/";
echo "$url";
// spoofing FireFox 2.0
$useragent="Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.1)
Gecko/20061204 Firefox/2.0.0.1";
$ch = curl_init ($url) ;
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1) ;
curl_setopt($ch, CURLOPT_USERAGENT, $useragent);
$res = curl_exec ($ch);
当我回声$res
我从默认的404错误页面获取代码。如果我复制回显的$ url并粘贴到浏览器中,我可以看到页面正常。还尝试使用相对路径和完整的服务器路径。
今天添加了用户代理欺骗,试图看看是否说我不是cURL会有所帮助,但响应中没有任何更改。
有关如何追踪此问题或更好的根本原因但解决它的任何想法?
转储firefox输出的全套头文件。转储当前由curl输出的全套标题。继续调整你的卷曲设置,直到它们匹配。 如果您的标题是相同的(包括Cookie),并且您以现实的速度请求页面,则没有真正的方法来区分curl和真实浏览器。 ...那么,一个真正的浏览器请求图像和脚本 - 不只是HTML :) – 2009-09-11 23:31:36