2013-05-13 219 views
0

我正嘗試使用curl登錄到我的一個網站,以便將信息從頁面中取出。它似乎沒有工作。這是我正在嘗試的代碼。如果有幫助,我可以爲此場景創建一個用戶/通行證。cUrl登錄不起作用

<?php 

$username = 'xxx'; 
$password = 'xxx'; 
$loginUrl = 'http://gwintersdev.com/user'; 
$finalUrl = 'http://gwintersdev.com/admin'; 

$userinput = 'name'; 
$passwordinput = 'pass'; 

$ch = curl_init(); 
curl_setopt($ch, CURLOPT_COOKIEJAR, "cookie.txt"); 
curl_setopt($ch, CURLOPT_URL,$loginUrl); 
curl_setopt($ch, CURLOPT_POST, 1); 
curl_setopt($ch, CURLOPT_POSTFIELDS, "$userinput=$username&$passwordinput=$password"); 
curl_setopt($ch, CURLOPT_USERAGENT, 'user-agent'); 


ob_start();  // prevent any output 
curl_exec ($ch); // execute the curl command 
ob_end_clean(); // stop preventing output 

curl_close ($ch); 
unset($ch); 

$ch = curl_init(); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER,1); 
curl_setopt($ch, CURLOPT_COOKIEFILE, "cookie.txt"); 
curl_setopt($ch, CURLOPT_URL, $finalUrl); 

$buf2 = curl_exec ($ch); 

curl_close ($ch); 
print $buf2; 
?>   

更新:我能夠得到上述工作,但我試圖在不同的ASP網站上,它不工作。我抓住了所有隱藏的字段,並將它們添加到帖子字符串中,但它仍然不會登錄。

<?php 
$username = 'xxx'; 
$password = 'xxx'; 
$loginUrl = 'http://vitalstim.com/health_professionals/certified_provider_resources/forum.aspx'; 
$finalUrl = 'http://vitalstim.com/health_professionals/certified_provider_resources/forum.aspx'; 
$userinput = 'ctl00$ContentPlaceHolder1$uc_login$txtUser'; 
$passwordinput = 'ctl00$ContentPlaceHolder1$uc_login$txtPass'; 
$login = 'ctl00$ContentPlaceHolder1$uc_login$butLogin'; 

$validation_input = '__EVENTVALIDATION'; 
$validation_input_value = '/wEWAgKf+PTrBQKItpn5BDXHCHsANbEpwkEBmMyNv+32L2Ec'; 
$view_state = '/wEPDwUJLTQyMjg0NzI0D2QWAmYPZBYGAgEPZBYEAgYPFgIeB1Zpc2libGVoZAIHDxYCHwBoZAIDD2QWBAIBD2QWCAIBD2QWBAIBDw8WAh4EVGV4dGVkZAIFDw8WAh8AaGRkAgcPZBYCAgEPZBYCAgMPZBYCAgEPFgIfAGhkAgkPDxYCHwBoZGQCCw8PFgIfAGhkZAIDDxYCHwBoZAIFDw8WAh8BBXY8c2NyaXB0IGxhbmd1YWdlPSJqYXZhc2NyaXB0IiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgokKGRvY3VtZW50KS5yZWFkeShmdW5jdGlvbigpIHsKVml0YWxTdGltLkluaXQoNCk7Cn0pOwo8L3NjcmlwdD4KZGRkdz/7+FcQ1E1sbC0Gua3jJsCGSnM='; 
$event_valid = '/wEWBwKeiM4xAoi2mfkEAurz/r4MAvTX0jYC+4GopQkCo6iimggC2pO41g77y84VwyhP6Ek+7PGZYDNgOawRZw=='; 

$ch = curl_init(); 
curl_setopt($ch, CURLOPT_COOKIEJAR, "cookie.txt"); 
curl_setopt($ch, CURLOPT_URL, $loginUrl); 
curl_setopt($ch, CURLOPT_POST, 1); 
curl_setopt($ch, CURLOPT_POSTFIELDS, "$userinput=$username&$passwordinput=$password&$validation_input=$validation_input_value&$login=login&__EVENTVALIDATION=$event_valid&_VIEWSTATE=$view_state"); 
curl_setopt($ch, CURLOPT_USERAGENT, 'user-agent'); 
curl_exec ($ch); // execute the curl command 

curl_setopt($ch, CURLOPT_RETURNTRANSFER,1); 
curl_setopt($ch, CURLOPT_COOKIEFILE, "cookie.txt"); 
curl_setopt($ch, CURLOPT_URL, $finalUrl); 

$buf2 = curl_exec ($ch); 
curl_close ($ch); 
print $buf2; 
?> 
+0

爲什麼你打開和關閉,然後重新打開cURL連接? – silkfire 2013-05-13 23:17:38

+0

那麼你有什麼具體問題? – 2013-05-13 23:18:18

+1

你會得到什麼錯誤?檢查日誌文件。 – 2013-05-13 23:20:44

回答

1

它看起來像缺少兩個隱藏在該表單源中的字段。 CSRF保護有點。你可以嘗試通過做第三個請求,在另外兩個之前,獲取這些值,並將它們放入第二個請求中。

此外,就像我在上面評論中所說的,不要關閉你的捲髮處理程序。

,你可以給任何更多的信息將是真棒

編輯:

對於ASP頁:asp是非常困難的捲曲這一點。它可以很容易地隱藏你需要的領域。我的建議是創建一個僞造的頁面,即print_r$_POST$_GET,並使用chrome或firebug將其頁面上的表單操作更改爲提交給您的頁面。只是爲了檢查,如果你缺少什麼

我做了什麼,我建議去嘗試,我得到這樣的:

Array 
(
    [__EVENTTARGET] => 
    [__EVENTARGUMENT] => 
    [__VIEWSTATE] => /wEPDwUJLTQyMjg0NzI0D2QWAmYPZBYGAgEPZBYEAgYPFgIeB1Zpc2libGVoZAIHDxYCHwBoZAIDD2QWBAIBD2QWCAIBD2QWBAIBDw8WAh4EVGV4dGVkZAIFDw8WAh8AaGRkAgcPZBYCAgEPZBYCAgMPZBYCAgEPFgIfAGhkAgkPDxYCHwBoZGQCCw8PFgIfAGhkZAIDDxYCHwBoZAIFDw8WAh8BBXY8c2NyaXB0IGxhbmd1YWdlPSJqYXZhc2NyaXB0IiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgokKGRvY3VtZW50KS5yZWFkeShmdW5jdGlvbigpIHsKVml0YWxTdGltLkluaXQoNCk7Cn0pOwo8L3NjcmlwdD4KZGRkdz/7+FcQ1E1sbC0Gua3jJsCGSnM= 
    [ctl00$ContentPlaceHolder1$uc_login$txtUser] => test 
    [ctl00$ContentPlaceHolder1$uc_login$txtPass] => test 
    [ctl00$ContentPlaceHolder1$uc_login$butLogin] => Login 
    [__EVENTVALIDATION] => /wEWBwKeiM4xAoi2mfkEAurz/r4MAvTX0jYC+4GopQkCo6iimggC2pO41g77y84VwyhP6Ek+7PGZYDNgOawRZw== 
) 
+0

太棒了。一旦我在兩個隱藏字段中添加並停止關閉連接,我就可以爲該網站工作。我需要這個工作在兩個不同的網站上,但它似乎不能在另一個網站上工作。這是我正在嘗試的代碼。我似乎無法找到任何其他輸入字段。還有其他可能導致問題的東西嗎? – 2013-05-14 18:39:18