2013-04-07 26 views
1

我正在製作一個抓取腳本。它適用於大多數網站,但我無法訪問特定的SSL網站。由於SSL錯誤,無法HTML刮網站

這裏是我的代碼:

if (!extension_loaded('openssl')){ 
    // not occurring 
} 

$ch = curl_init(); 
curl_setopt($ch, CURLOPT_URL, 'https://www.chase.com/'); 
curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_ANY); 
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0); 
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0); 
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
curl_setopt($ch, CURLOPT_HEADER, 1); 

$result = curl_exec($ch); 

if($result === false) 
{ 
    $err = curl_error($ch); 
    //$err = SSL read: error:00000000:lib(0):func(0):reason(0), errno 10054 
} 

$result總是FALSE,它顯示了此錯誤消息:

SSL read: error:00000000:lib(0):func(0):reason(0), errno 10054 

但它的工作原理上有SSL其他網站。我也檢查了phpinfo(),cURL和OpenSSL是活躍的。我正在使用WAMP,有什麼想法?

+1

爲什麼你想刮銀行網站? – 2013-04-07 01:47:43

回答

2

您需要設置一個Useragent。我測試了和沒有一個,它解決了這個問題。看起來Chase想要在請求中提供UA。

所以補充一點:

curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows; U; MSIE 9.0; WIndows NT 9.0; en-US)'); 
+0

,但是您確實沒有看到SSL錯誤? – 2013-04-07 08:52:01

+0

哇你是對的:/ 謝謝! PS:我實際上正在設置一個useragent(我只是刪除了一些我認爲沒用的行),但我認爲我沒有正確設置它,你的作品! – xtrimsky 2013-04-07 12:02:36

+0

@DanielStenberg是的,我得到了同樣的錯誤。當然,我必須添加'echo $ err;'。 – 2013-04-07 12:59:51

1

我只要使用以下PHP librery解決問題。

https://github.com/rmccue/Requests

[您的基於Linux的服務器上使用這個庫的代碼,可能是它不會在XAMPP或WAMP工作]