2016-12-06 50 views
1

我正在嘗試使用simple_html_dom()抓取網頁內容,但我獲得了403 Forbidden
當我通過瀏覽器嘗試時,我確實可以訪問。我試圖抓取網站內容時出現禁止的錯誤

$target_url ='http://<URL>'; 
$html = new simple_html_dom(); 
$html->load_file($target_url); 

我正在嘗試使用Guzzel Package,但我再次收到此錯誤消息。

$client = new \GuzzleHttp\Client(); 
$result = $client->request('GET', 'http://<URL>'); 
dd($result->getBody()); 

我該怎麼辦?

+0

@Federkun這是我Laravel代碼的一部分,'dd'是laravel提前'var_dump':https://laravel.com/docs/ 5.3/helpers#method-dd – MajAfy

+0

'403 Forbidden'意思是「服務器理解請求但拒絕授權。」。閱讀'http:// '提供的文檔。通常你需要某種access_token。 – Federkun

+0

感謝@Federkun,但我可以從我的瀏覽器訪問,所以我認爲我應該爲我的PHP代碼添加一些參數以便請求,不是嗎? – MajAfy

回答

1

基於這個問題,很難說出什麼問題。雖然有一些可能性。

最可能的選擇是需要設置一些標題。有些網站拒絕不是來自瀏覽器的連接,因此您可以嘗試模擬瀏覽器並查看結果。

另一種可能性(如@federkun所述)是需要設置一些cookie數據或基本訪問驗證。

寬度狂飲你可以設置標題是這樣的:

$client->request('GET', '/foo.js', [ 
    'headers'  => ['Accept-Encoding' => 'gzip'], 
    'decode_content' => false 
]); 
+0

謝謝,但這個解決方案無法解決我的問題,我需要默認的標題,我認爲''使用cloudeflare DNS保護DDoS攻擊 – MajAfy

+0

您可能想看看這篇文章:http://stackoverflow.com/questions/11886711/捲曲着取-RSS-從-網站 - 因爲,-的CloudFlare的 –

相關問題