2012-06-23 143 views
5

我試圖刮掉與登錄的一個網站的內容安全 但無法做到這一點 該網站的登錄有三個選項的用戶名,密碼,驗證碼 這裏是我的代碼使用刮網站內容與安全登錄

<?php 

// HTTP authentication 

$url = "http://aftabcurrency.com/login_script.php"; 

$ch = curl_init();  

curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 

curl_setopt($ch, CURLOPT_URL, $url); 
$cookie = 'cookies.txt'; 
$timeout = 30; 
curl_setopt($curl, CURLOPT_TIMEOUT,   10); 
curl_setopt($curl, CURLOPT_CONNECTTIMEOUT, $timeout); 
curl_setopt($curl, CURLOPT_COOKIEJAR,  $cookie); 
curl_setopt($curl, CURLOPT_COOKIEFILE,  $cookie); 

curl_setopt ($ch, CURLOPT_POST, 1); 
curl_setopt ($ch,CURLOPT_POSTFIELDS,"user_name=user&user_password=pass&passcode=code");    

$result = curl_exec($ch); 

curl_close($ch); 

echo $result; 

?> 
+0

我想這代碼與你的答案被接受的變化,但是這個代碼不爲我工作,我用我的亞馬遜賣家賬戶的詳細信息但沒有任何事情發生,你能指導我一些,因爲我是PHP的新手。 –

回答

7

你需要做一個POSThttp://aftabcurrency.com/login_script.php 您的捲曲的需求也接受cookies。
驗證通過後,腳本會將您重定向,因此您還需要添加CURLOPT_FOLLOWACTION

這裏是你的腳本的一個編輯的版本,我無法測試它http://aftabcurrency.com/希望工程:

$url = "http://aftabcurrency.com/login_script.php"; 

$ch = curl_init();  
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 

curl_setopt($ch, CURLOPT_URL, $url); 
$cookie = 'cookies.txt'; 
$timeout = 30; 

curl_setopt ($ch, CURLOPT_FOLLOWLOCATION, 1); 
curl_setopt($ch, CURLOPT_TIMEOUT,   10); 
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout); 
curl_setopt($ch, CURLOPT_COOKIEJAR,  $cookie); 
curl_setopt($ch, CURLOPT_COOKIEFILE,  $cookie); 

curl_setopt ($ch, CURLOPT_POST, 1); 
curl_setopt ($ch,CURLOPT_POSTFIELDS,"user_name=user&user_password=pass&passcode=code");  

$result = curl_exec($ch); 

/* //OPTIONAL - Redirect to another page after login 
$url = "http://aftabcurrency.com/some_other_page"; 
curl_setopt ($ch, CURLOPT_POST, 0); 
curl_setopt($ch, CURLOPT_URL, $url); 
$result = curl_exec($ch); 
*/ //end OPTIONAL 

curl_close($ch); 
echo $result; 
+0

編輯代碼 這是發佈cookie的正確方法嗎? – user1447187

+0

這裏我編輯了你的代碼,在你的cookie部分設置了一個錯誤的變量($ curl而不是$ ch) - 並且我添加了CURLOPT_FOLLOWACTION,這樣腳本就可以在登錄後重定向你。 – MilMike

+0

感謝它的工作 如果我想從該頁 刮一個特定的「文本」,例如http://aftabcurrency.com/我只希望只報廢 「我們的服務事項!」 (這段文字每天都在變化) 任何想法? – user1447187

0

您需要將您的用戶名/密碼/密碼POST到該頁面。你現在想要做的是http認證。 所以不是這個

curl_setopt($ch, CURLOPT_USERPWD, "demo:demopass:demopasscode"); 

你需要這個

curl_setopt ($ch, CURLOPT_POST, 1); 
curl_setopt ($ch, CURLOPT_POSTFIELDS, "user_name=xxxxx&user_password=xxxxxx&passcode=xxxxx"); 
+0

完成 但現在它顯示了。空白頁 – user1447187