2013-02-28 61 views
0

我想獲得一些需要用戶名和密碼的網站以外的價值形式。 通常我需要先登錄頁面(https://xxx.xxx.xxx/HomeAccess),然後轉到https://xxx.xxx.xxx/xxx.aspx。但是,如果沒有登錄只是去頁xxx.aspx,我會得到errror「頁面無法顯示,因爲發生了內部服務器錯誤。」;curl從外部網站獲取價值需要用戶​​名和密碼

在PHP我想利用這個代碼

<?php 

$ch = curl_init(); 
$url = 'https://xxx.xxx.xxx/xxx.aspx'; 
$username ='uuuuu'; 
$password ='ppppp'; 
curl_setopt($ch, CURLOPT_URL, $url); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
curl_setopt($ch, CURLOPT_USERPWD, "$username:$password"); 
curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_BASIC); 
$output = curl_exec($ch); 
$info = curl_getinfo($ch); 
curl_close($ch); 

print $output; 

?> 

我有空白頁。

有什麼想法?謝謝

回答

0

我不確定授權是如何在該網站上設置的,但通常,當您登錄時,它們會將某種訪問令牌作爲cookie提供給您,並使用該訪問權限訪問其他任何網頁網站。因此,使用curl以用戶名和密碼登錄登錄頁面,抓取cookie,然後再次捲曲到所需的頁面。

同樣,這一切都取決於您試圖訪問的網站。您必須進行一些挖掘才能找出登錄發生的位置以及他們如何進行身份驗證/授權。

+0

謝謝。該網站是與ssl的asp.net。不知道如何獲得令牌。你能給我一些細節嗎? – 2013-02-28 19:36:04

+0

我會通過Chrome/Firefox的網絡檢查員檢查請求。答覆通常會給你一個令牌。然後,當您訪問所需的頁面時,請求通常會使用相同的標記。請注意:P – yourdeveloperfriend 2013-02-28 22:23:53

0

捲曲可以通過做這個給你一個很好的提示:

if(curl_exec($ch) === false) 
{ 
    echo 'Curl error: ('.curl_error($ch).'): '.curl_error($ch); 
} 

我的猜測是,你有一個SSL證書驗證問題。但它可能是20種不同的東西。如果你可以在你最初的問題中包含你的$ info值,那也是有幫助的。

+0

[url] => https://xxx.xxx.xxx/xxx.aspx [content_type] => [http_code] => 0 [header_size] => 0 [request_size] => 0 [filetime] => 1 [ssl_verify_result] => 0 [redirect_count] => 0 [total_time] => 0.047 [namelookup_time] => 0 [connect_time] => 0.047 [pretransfer_time] => 0 [size_upload] => 0 [size_download] = > 0 [speed_download] => 0 [speed_upload] => 0 [download_content_length] => -1 [upload_content_length] => -1 [starttransfer_time] => 0 [redirect_time] => 0 [certinfo] => Array()[primary_ip ] => xxx.xxx.xxx.xxx [primary_port] => 443 [local_ip] => ***。***。*** *** [local_port] => 16370 [redirect_url] => – 2013-02-28 19:54:49

+0

http_code as 0真的很奇怪。你確定你沒有被本地機器上的防火牆阻擋嗎?要進行測試,請將您的網址更改爲http://www.google.com,並確保您獲得HTML。 假設你是,試試這個: curl_setopt($ ch,CURLOPT_SSL_VERIFYPEER,false); 這將關閉SSL證書和終點驗證。如果可行,請啓動Google並尋找如何將證書添加到本地PHP安裝。 – 2013-03-01 14:33:16