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